From a437674788461b85e5e37275e3e4f0feab7de934 Mon Sep 17 00:00:00 2001 From: Jonas Ohrstrom Date: Wed, 13 Dec 2023 22:57:02 +0100 Subject: [PATCH] refactor: prepare naive apple sign-in --- obr_ui/app-bridge/appBridge.ts | 10 ++++++++-- obr_ui/components/account/auth/SocialLogin.vue | 13 ++++++++++--- obr_ui/composables/device.ts | 2 +- obr_ui/locales/en.yml | 4 ++-- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/obr_ui/app-bridge/appBridge.ts b/obr_ui/app-bridge/appBridge.ts index b85f5b40..867b0861 100644 --- a/obr_ui/app-bridge/appBridge.ts +++ b/obr_ui/app-bridge/appBridge.ts @@ -55,7 +55,8 @@ type sendChannel = // browser | "browser:navigate" // sign-in - | "googleSignin:start"; + | "googleSignin:start" + | "appleSignin:start"; // channels RECEIVING data FROM swift-app type receiveChannel = @@ -76,7 +77,8 @@ type receiveChannel = // appscene | "appscene:update" // sign-in - | "googleSignin:completed"; + | "googleSignin:completed" + | "appleSignin:completed"; type SendMessage = { c: sendChannel; @@ -250,6 +252,10 @@ class AppBridge { await this.loginByIdToken(data); break; } + case "appleSignin:completed": { + console.debug("appleSignin:completed", data); + break; + } } } async onExternalLink(e: Event) { diff --git a/obr_ui/components/account/auth/SocialLogin.vue b/obr_ui/components/account/auth/SocialLogin.vue index 7c33793f..032cc401 100644 --- a/obr_ui/components/account/auth/SocialLogin.vue +++ b/obr_ui/components/account/auth/SocialLogin.vue @@ -46,11 +46,11 @@ export default defineComponent({ }; const availableBackends = computed(() => { // NOTE: temporarily disable oauth2 for app versions prior to 1.0.1 - if (isApp && appVersion?.major !== 1) { + if (isApp && appVersion?.major === 1 && appVersion?.minor === 0 && appVersion?.patch < 1) { return authBackends.value.filter((b) => b.provider !== "google-oauth2"); } - // NOTE: temporarily disable apple-id for app-mode - if (isApp) { + // NOTE: temporarily disable apple-id for app versions prior to 1.0.3 + if (isApp && appVersion?.major === 1 && appVersion?.minor === 0 && appVersion?.patch < 3) { return authBackends.value.filter((b) => b.provider !== "apple-id"); } return authBackends.value; @@ -71,6 +71,13 @@ export default defineComponent({ return; } + if (isApp && backend.provider === "apple-id") { + console.debug("continue with app native apple-id login"); + iOSMaskVisible.value = true; + window.appBridge?.send("appleSignin:start"); + return; + } + const connectUrl = backend.connectUrl; const params: { [x: string]: string } = {}; if (props.next) { diff --git a/obr_ui/composables/device.ts b/obr_ui/composables/device.ts index da725276..3f5abdee 100644 --- a/obr_ui/composables/device.ts +++ b/obr_ui/composables/device.ts @@ -18,7 +18,7 @@ const parseAppUA = (ua: string): null | AppVersion => { if (!ua.toLowerCase().startsWith("obr-app-ios/")) { return null; } - const semVer = semverCoerce(ua.substring(12)); + const semVer = semverCoerce(ua.substring(11)); if (!semVer) { return null; } diff --git a/obr_ui/locales/en.yml b/obr_ui/locales/en.yml index b71e2857..ad33e691 100644 --- a/obr_ui/locales/en.yml +++ b/obr_ui/locales/en.yml @@ -19,7 +19,7 @@ menu: home: Radio discover: Discover collection: Favourites - program: Program + program: Programme reception: Reception faq: FAQ about: About @@ -58,7 +58,7 @@ player: bannedRemove: I like it rating: downvoteTitle: What bothers you? - downvoteLead: In order to constantly improve the radio program, we need your feedback! + downvoteLead: In order to constantly improve the radio programme, we need your feedback! downvoteScope: track: I don't like this title genre: I don't like this kind of music