From 40702e783240580e8df1f16b3bc82e41fe0dfe37 Mon Sep 17 00:00:00 2001 From: MartinBraquet Date: Sun, 21 Dec 2025 01:06:01 +0200 Subject: [PATCH] Add android app link to google play --- android/capawesome.json | 2 +- backend/api/src/create-notification.ts | 19 +++++++++++++++++++ common/src/constants.ts | 1 + web/components/contact.tsx | 6 ------ web/components/nav/sidebar.tsx | 10 +++++++--- web/lib/firebase/users.ts | 4 ++-- web/lib/service/android-push.ts | 4 ++-- web/lib/util/webview.ts | 4 ++-- web/pages/_app.tsx | 4 ++-- 9 files changed, 36 insertions(+), 18 deletions(-) diff --git a/android/capawesome.json b/android/capawesome.json index 2cfe7aa..55fa09b 100644 --- a/android/capawesome.json +++ b/android/capawesome.json @@ -1,3 +1,3 @@ { - "version": 16 + "version": 17 } \ No newline at end of file diff --git a/backend/api/src/create-notification.ts b/backend/api/src/create-notification.ts index 1428957..957b6e1 100644 --- a/backend/api/src/create-notification.ts +++ b/backend/api/src/create-notification.ts @@ -3,6 +3,25 @@ import {Notification} from 'common/notifications' import {insertNotificationToSupabase} from 'shared/supabase/notifications' import {tryCatch} from "common/util/try-catch"; import {Row} from "common/supabase/utils"; +import {ANDROID_APP_URL} from "common/constants"; + +export const createAndroidReleaseNotifications = async () => { + const createdTime = Date.now(); + const id = `android-release-${createdTime}` + const notification: Notification = { + id, + userId: 'todo', + createdTime: createdTime, + isSeen: false, + sourceType: 'info', + sourceUpdateType: 'created', + sourceSlug: ANDROID_APP_URL, + sourceUserAvatarUrl: 'https://firebasestorage.googleapis.com/v0/b/compass-130ba.firebasestorage.app/o/misc%2Fcompass-192.png?alt=media&token=9fd251c5-fc43-4375-b629-1a8f4bbe8185', + title: 'Android App Released on Google Play', + sourceText: 'The Compass Android app is now publicly available on Google Play! Download it today to stay connected on the go.', + } + return await createNotifications(notification) +} export const createAndroidTestNotifications = async () => { const createdTime = Date.now(); diff --git a/common/src/constants.ts b/common/src/constants.ts index 28397d1..8d1b773 100644 --- a/common/src/constants.ts +++ b/common/src/constants.ts @@ -17,6 +17,7 @@ export const stoatLink = "https://stt.gg/YKQp81yA" export const redditLink = "https://www.reddit.com/r/CompassConnect" export const xLink = "https://x.com/compassmeet" export const formLink = "https://forms.gle/tKnXUMAbEreMK6FC6" +export const ANDROID_APP_URL = 'https://play.google.com/store/apps/details?id=com.compassconnections.app' export const IS_MAINTENANCE = false // set to true to enable the maintenance mode banner diff --git a/web/components/contact.tsx b/web/components/contact.tsx index b48d2f6..7d71a4e 100644 --- a/web/components/contact.tsx +++ b/web/components/contact.tsx @@ -29,12 +29,6 @@ export function ContactComponent() { You can also contact us through this feedback form or any of our socials. Feel free to give your contact information if you'd like us to get back to you.

-

Android App

-

- To release our app, Google requires a closed test with at least 12 testers for 14 days. Please share your Google Play–registered email address so we can add you as a tester. - You'll be able to download the app from the Play Store and use it right away. - Your email address will NOT be shared with anyone else and will be used solely for the purpose of the review process. -

( ))} - divider router.push('/contact')} - /> + onClick={() => router.push(ANDROID_APP_URL)} + />} {user === null && } {/*{user === null && }*/} diff --git a/web/lib/firebase/users.ts b/web/lib/firebase/users.ts index 8a82241..b86913c 100644 --- a/web/lib/firebase/users.ts +++ b/web/lib/firebase/users.ts @@ -6,7 +6,7 @@ import {getAuth, GoogleAuthProvider, signInWithCredential, signInWithPopup, conn import {safeLocalStorage} from '../util/local' import {app} from './init' import {GOOGLE_CLIENT_ID} from "common/constants" -import {isAndroidWebView} from "web/lib/util/webview" +import {isAndroidApp} from "web/lib/util/webview" import {SocialLogin} from "@capgo/capacitor-social-login" import {Capacitor} from "@capacitor/core" import {IS_FIREBASE_EMULATOR} from "common/envs/constants" @@ -113,7 +113,7 @@ export async function googleNativeLogin() { } export async function firebaseLogin() { - if (isAndroidWebView()) { + if (isAndroidApp()) { console.log('Running in APK') return await googleNativeLogin() } diff --git a/web/lib/service/android-push.ts b/web/lib/service/android-push.ts index 077bbda..1b25c98 100644 --- a/web/lib/service/android-push.ts +++ b/web/lib/service/android-push.ts @@ -2,12 +2,12 @@ import {PushNotifications} from '@capacitor/push-notifications' import {useEffect} from "react" import {api} from "web/lib/api" import {useUser} from "web/hooks/use-user" -import {isAndroidWebView} from "web/lib/util/webview"; +import {isAndroidApp} from "web/lib/util/webview"; import {useRouter} from "next/router"; export default function AndroidPush() { const user = useUser() // authenticated user - const isAndroid = isAndroidWebView() + const isAndroid = isAndroidApp() const router = useRouter() useEffect(() => { if (!user?.id || !isAndroid) return diff --git a/web/lib/util/webview.ts b/web/lib/util/webview.ts index cecdb7b..a0219d9 100644 --- a/web/lib/util/webview.ts +++ b/web/lib/util/webview.ts @@ -1,7 +1,7 @@ import {Capacitor} from "@capacitor/core"; import {IS_WEBVIEW} from "common/hosting/constants"; -export function isAndroidWebView() { +export function isAndroidApp() { try { // Detect if Android bridge exists // return typeof (window as any).AndroidBridge?.isNativeApp === 'function'; @@ -11,4 +11,4 @@ export function isAndroidWebView() { } } -export function isNativeMobile() { return isAndroidWebView() } \ No newline at end of file +export function isNativeMobile() { return isAndroidApp() } \ No newline at end of file diff --git a/web/pages/_app.tsx b/web/pages/_app.tsx index 2e9ffbf..a71753e 100644 --- a/web/pages/_app.tsx +++ b/web/pages/_app.tsx @@ -12,7 +12,7 @@ import clsx from 'clsx' import {initTracking} from 'web/lib/service/analytics' import WebPush from "web/lib/service/web-push" import AndroidPush from "web/lib/service/android-push" -import {isAndroidWebView} from "web/lib/util/webview" +import {isAndroidApp} from "web/lib/util/webview" import {Capacitor} from '@capacitor/core' import {StatusBar} from '@capacitor/status-bar' import {App} from '@capacitor/app' @@ -91,7 +91,7 @@ function MyApp({Component, pageProps}: AppProps) { const router = useRouter() useEffect(() => { - console.log('isAndroidWebView app:', isAndroidWebView()) + console.log('isAndroidWebView app:', isAndroidApp()) if (!Capacitor.isNativePlatform()) return const onShow = () => document.body.classList.add('keyboard-open') const onHide = () => document.body.classList.remove('keyboard-open')