@unisim/sdk 0.141.7 → 0.141.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -3
- package/android/src/main/AndroidManifest.xml +24 -0
- package/android/src/main/java/uk/co/unisim/sdk/OAuthCallbackActivity.java +72 -0
- package/android/src/main/java/uk/co/unisim/sdk/UnisimSuiteAuthPlugin.java +129 -0
- package/dist/ChangelogMenu.d.ts.map +1 -1
- package/dist/ChangelogMenu.js +7 -21
- package/dist/ChangelogMenu.js.map +1 -1
- package/dist/CompanyMenu.d.ts.map +1 -1
- package/dist/CompanyMenu.js +7 -21
- package/dist/CompanyMenu.js.map +1 -1
- package/dist/KnowledgeBaseMenu.d.ts.map +1 -1
- package/dist/KnowledgeBaseMenu.js +7 -21
- package/dist/KnowledgeBaseMenu.js.map +1 -1
- package/dist/SignInDialog.d.ts.map +1 -1
- package/dist/SignInDialog.js +49 -3
- package/dist/SignInDialog.js.map +1 -1
- package/dist/SuiteSwitcher.d.ts.map +1 -1
- package/dist/SuiteSwitcher.js +7 -21
- package/dist/SuiteSwitcher.js.map +1 -1
- package/dist/UserProfile.d.ts.map +1 -1
- package/dist/UserProfile.js +5 -20
- package/dist/UserProfile.js.map +1 -1
- package/dist/hover.d.ts +49 -0
- package/dist/hover.d.ts.map +1 -1
- package/dist/hover.js +82 -1
- package/dist/hover.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/nativeOAuth.d.ts +208 -0
- package/dist/nativeOAuth.d.ts.map +1 -0
- package/dist/nativeOAuth.js +372 -0
- package/dist/nativeOAuth.js.map +1 -0
- package/dist/oauth.d.ts +6 -0
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +9 -1
- package/dist/oauth.js.map +1 -1
- package/ios/Sources/UnisimSuiteAuthPlugin/SuiteOAuth.swift +257 -0
- package/ios/Sources/UnisimSuiteAuthPlugin/UnisimSuiteAuthPlugin.swift +14 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -72,9 +72,10 @@ function Header() {
|
|
|
72
72
|
Apple has no such parameter). A password is a quiet second route on the code
|
|
73
73
|
tab: it signs an existing account in and never creates one, and there is no
|
|
74
74
|
password reset — the code is the way back in. The provider tab appears **only
|
|
75
|
-
for providers the Supabase project has switched on
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
for providers the Supabase project has switched on**; without it there is no
|
|
76
|
+
tab bar at all. In a native (Capacitor) shell the buttons use the system
|
|
77
|
+
browser / Apple's own sheet instead of the web round trip — see [Provider
|
|
78
|
+
sign-in in the phone apps](#provider-sign-in-in-the-phone-apps-apple--google--microsoft).
|
|
78
79
|
- `sendSignInCode(supabase, { email })` / `verifySignInCode(supabase, { email,
|
|
79
80
|
code, flow })` — the code tab's logic, for other sign-in screens (the hub's).
|
|
80
81
|
A trial session gets an email-change code, verified as `email_change`, so the
|
|
@@ -85,6 +86,10 @@ function Header() {
|
|
|
85
86
|
with `linkIdentity`, never replaced.
|
|
86
87
|
- `fetchEnabledOAuthProviders(supabaseUrl, anonKey)` — which providers are on,
|
|
87
88
|
from `/auth/v1/settings`; `[]` on any doubt.
|
|
89
|
+
- `startNativeOAuthSignIn(supabase, provider, { supabaseUrl, anonKey, loginHint })`
|
|
90
|
+
— the same thing inside a Capacitor app; resolves `signed-in` / `cancelled` /
|
|
91
|
+
`error` when the round trip is over. `nativeOAuthSupport()` /
|
|
92
|
+
`nativeProvidersToOffer()` decide whether to offer it.
|
|
88
93
|
- `<OAuthButtons providers={…} />` — the buttons. Without `providers` it shows
|
|
89
94
|
Google and Microsoft only, because the hub's labels predate Apple.
|
|
90
95
|
|
|
@@ -151,6 +156,17 @@ function Header() {
|
|
|
151
156
|
the old behaviour (on-prem has no subscription page to point at).
|
|
152
157
|
- `<UniversalBar />` — the 4 px gradient brand strip across every product header
|
|
153
158
|
- `<UKFlag />` — region indicator for UK products
|
|
159
|
+
- **The first click on a hover-opened menu leaves it open** (since 0.141.9).
|
|
160
|
+
Every dropdown here — `<UserProfile />`'s pill, `<KnowledgeBaseMenu />`,
|
|
161
|
+
`<ChangelogMenu />`, `<CompanyMenu />`, `<SuiteSwitcher />` — opens on hover
|
|
162
|
+
as well as click, and the click used to be a plain toggle: the pointer
|
|
163
|
+
arriving opened the menu and the click itself shut it, so the first click
|
|
164
|
+
on "Actions" looked like it did nothing. An open from hover or focus is now
|
|
165
|
+
provisional and the next click (or Enter) confirms it; the click after that
|
|
166
|
+
closes. Touch is unchanged (no hover-open there at all). All five share
|
|
167
|
+
`useHoverMenu()` in `hover.ts` — a new dropdown should use it rather than
|
|
168
|
+
wiring `onMouseEnter` + a toggle by hand. `npm run test:hover-click`
|
|
169
|
+
(77 checks).
|
|
154
170
|
|
|
155
171
|
### Changelog
|
|
156
172
|
- `useChangelog()` — fetches the suite-wide changelog feed (defaults to `https://changelog.unisim.co.uk/changelog.json`)
|
|
@@ -357,6 +373,81 @@ app actually got — a build that quietly landed on `native-local` still signs i
|
|
|
357
373
|
it just does not carry to the other apps, and nothing about the behaviour makes
|
|
358
374
|
that visible.
|
|
359
375
|
|
|
376
|
+
## Provider sign-in in the phone apps (Apple / Google / Microsoft)
|
|
377
|
+
|
|
378
|
+
`<SignInDialog />` offers the Apple / Google / Microsoft tab inside a Capacitor
|
|
379
|
+
app too (since 0.141.8). The web round trip cannot work there — it returns to
|
|
380
|
+
`capacitor://localhost`, which is on no redirect allowlist; Google refuses
|
|
381
|
+
sign-in inside an embedded web view (`403 disallowed_useragent`); and
|
|
382
|
+
navigating the app's only web view away unloads the app — so a native shell
|
|
383
|
+
does it the way native apps must:
|
|
384
|
+
|
|
385
|
+
| | iOS | Android |
|
|
386
|
+
| --- | --- | --- |
|
|
387
|
+
| Apple | the OS's **Sign in with Apple sheet** → Supabase `id_token` grant | the system browser, like the others |
|
|
388
|
+
| Google / Microsoft | **`ASWebAuthenticationSession`** → Supabase `/authorize` | a **Custom Tab** → Supabase `/authorize` |
|
|
389
|
+
| Comes back to | the session's own completion handler | `OAuthCallbackActivity`, merged in from the SDK's manifest |
|
|
390
|
+
| Callback address | `<bundle id>://auth-callback` | `<applicationId>://auth-callback` |
|
|
391
|
+
| Per-app config | the `com.apple.developer.applesignin` entitlement | none |
|
|
392
|
+
|
|
393
|
+
Source: `src/nativeOAuth.ts`, `ios/Sources/UnisimSuiteAuthPlugin/SuiteOAuth.swift`,
|
|
394
|
+
`android/src/main/java/uk/co/unisim/sdk/OAuthCallbackActivity.java`. The three
|
|
395
|
+
native methods (`oauthSupport`, `oauthStart`, `appleSignIn`) live on the
|
|
396
|
+
existing `UnisimSuiteAuth` plugin, for the same reason the app-opening methods
|
|
397
|
+
do: a new plugin class is absent from every app until each one re-syncs.
|
|
398
|
+
|
|
399
|
+
What it guarantees, each pinned by `npm run test:native-oauth`:
|
|
400
|
+
|
|
401
|
+
- **The session is suite-wide.** It is installed with `supabase.auth.setSession`,
|
|
402
|
+
which writes through the shared suite store above — one sign-in on the phone
|
|
403
|
+
signs in every suite app, exactly like the email code.
|
|
404
|
+
- **A trial session is linked, never replaced** — the browser leg goes through
|
|
405
|
+
`/user/identities/authorize` with the trial's bearer token, the Apple leg
|
|
406
|
+
through the `id_token` grant with `link_identity`, and a failed link is
|
|
407
|
+
returned, never retried as a sign-in. `identity_already_exists` and
|
|
408
|
+
`manual_linking_disabled` arrive with the web flow's codes, so the dialog's
|
|
409
|
+
collision panel works unchanged. (The native "leave my trial behind" path
|
|
410
|
+
does not sign out first: the new session replaces the trial only when it
|
|
411
|
+
lands, so cancelling keeps the trial.)
|
|
412
|
+
- **PKCE, and only a code is accepted back.** S256 where WebCrypto exists,
|
|
413
|
+
`plain` otherwise (supabase-js's own fallback). Tokens in a fragment, or a
|
|
414
|
+
callback on any address but this app's own, are refused — on Android any app
|
|
415
|
+
can fire a deep link at us, and a code is worthless without the verifier.
|
|
416
|
+
- **Nothing appears until it can work.** The tab needs the provider switched
|
|
417
|
+
on in Supabase *and* the plugin's native half (an app synced against an older
|
|
418
|
+
SDK shows no tab). **On iPhone it also needs Apple switched on**: App Review
|
|
419
|
+
4.8 will not take Google or Microsoft in an iPhone app without Sign in with
|
|
420
|
+
Apple beside them, so with Apple off the app offers the email code alone.
|
|
421
|
+
|
|
422
|
+
### Turning it on for an app
|
|
423
|
+
|
|
424
|
+
1. Depend on `@unisim/sdk` ≥ 0.141.8 and `npm run cap:sync`. Android needs
|
|
425
|
+
nothing more.
|
|
426
|
+
2. iOS: `node ../universal-platform/scripts/add-sign-in-with-apple.mjs <path-to-app-repo>`
|
|
427
|
+
(after `add-suite-keychain.mjs`, which creates the entitlements file), then
|
|
428
|
+
rebuild. The App ID needs the **Sign in with Apple** capability as well.
|
|
429
|
+
3. The project — console settings, recorded nowhere in code:
|
|
430
|
+
- every `<bundle id>://auth-callback` on the Supabase **redirect allowlist**;
|
|
431
|
+
- every iOS bundle id in the **Apple provider's Client IDs** (beside the web
|
|
432
|
+
Services ID) — the sheet's token is issued to the bundle id;
|
|
433
|
+
- **Allow manual linking** on (trials link);
|
|
434
|
+
- the providers themselves switched on.
|
|
435
|
+
|
|
436
|
+
⚠️ **Every one of those fails far from its cause:**
|
|
437
|
+
|
|
438
|
+
| Missing | Looks like |
|
|
439
|
+
| --- | --- |
|
|
440
|
+
| the callback on the allowlist | GoTrue silently sends the browser to the Site URL; the sheet sits on the website and never comes back |
|
|
441
|
+
| the bundle id in Apple's Client IDs | the Apple sheet succeeds, then Supabase refuses the token's audience |
|
|
442
|
+
| the entitlement | the Apple sheet fails at once with ASAuthorizationError 1000 — the same code as a device with no Apple ID |
|
|
443
|
+
| the App ID capability | a device build fails to provision; a simulator build is fine, so it proves nothing |
|
|
444
|
+
| manual linking | every trial visitor gets "can't link" |
|
|
445
|
+
| a re-sync against this SDK | no provider tab at all |
|
|
446
|
+
|
|
447
|
+
Known limit: on Android, if the system kills the app while the browser is up,
|
|
448
|
+
the callback arrives with nobody holding the PKCE verifier; the app comes back
|
|
449
|
+
to the front and the person signs in again.
|
|
450
|
+
|
|
360
451
|
## Opening a suite app instead of its website
|
|
361
452
|
|
|
362
453
|
On a phone, a switcher row for a product you have installed opens **the app**,
|
|
@@ -51,6 +51,16 @@
|
|
|
51
51
|
3. The PROVIDER, whose authority is built from ${applicationId} so each app
|
|
52
52
|
ends up with its own. They cannot share one authority — two apps claiming
|
|
53
53
|
the same one cannot be installed side by side.
|
|
54
|
+
|
|
55
|
+
4. The OAUTH CALLBACK ACTIVITY, which receives
|
|
56
|
+
`<applicationId>://auth-callback?code=…` at the end of an Apple / Google /
|
|
57
|
+
Microsoft sign-in (src/nativeOAuth.ts). Its scheme is ${applicationId},
|
|
58
|
+
expanded per app by manifest merging, so no app carries an intent filter
|
|
59
|
+
of its own for it — and every one of those addresses must be on the
|
|
60
|
+
Supabase redirect allowlist, or GoTrue silently sends the browser to the
|
|
61
|
+
Site URL instead and the app never hears back. A separate activity, not
|
|
62
|
+
MainActivity, so the callback never reaches Capacitor's `appUrlOpen`
|
|
63
|
+
(Universal PDF opens every VIEW intent there as a document).
|
|
54
64
|
-->
|
|
55
65
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
56
66
|
|
|
@@ -95,6 +105,20 @@
|
|
|
95
105
|
android:exported="true"
|
|
96
106
|
android:grantUriPermissions="false"
|
|
97
107
|
android:permission="uk.co.unisim.suite.permission.SUITE_AUTH" />
|
|
108
|
+
|
|
109
|
+
<activity
|
|
110
|
+
android:name="uk.co.unisim.sdk.OAuthCallbackActivity"
|
|
111
|
+
android:exported="true"
|
|
112
|
+
android:excludeFromRecents="true"
|
|
113
|
+
android:noHistory="true"
|
|
114
|
+
android:theme="@android:style/Theme.Translucent.NoTitleBar">
|
|
115
|
+
<intent-filter>
|
|
116
|
+
<action android:name="android.intent.action.VIEW" />
|
|
117
|
+
<category android:name="android.intent.category.DEFAULT" />
|
|
118
|
+
<category android:name="android.intent.category.BROWSABLE" />
|
|
119
|
+
<data android:scheme="${applicationId}" android:host="auth-callback" />
|
|
120
|
+
</intent-filter>
|
|
121
|
+
</activity>
|
|
98
122
|
</application>
|
|
99
123
|
|
|
100
124
|
</manifest>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
package uk.co.unisim.sdk;
|
|
2
|
+
|
|
3
|
+
import android.app.Activity;
|
|
4
|
+
import android.content.Context;
|
|
5
|
+
import android.content.Intent;
|
|
6
|
+
import android.net.Uri;
|
|
7
|
+
import android.os.Bundle;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Receives {@code <applicationId>://auth-callback?code=…} — the deep link
|
|
11
|
+
* Supabase sends the browser to at the end of an Apple / Google / Microsoft
|
|
12
|
+
* sign-in started by {@link UnisimSuiteAuthPlugin#oauthStart} — hands the URL
|
|
13
|
+
* to the waiting plugin call, and puts the app back in front.
|
|
14
|
+
*
|
|
15
|
+
* <p>Declared in the SDK's own {@code AndroidManifest.xml} with the scheme
|
|
16
|
+
* {@code ${applicationId}}, which manifest merging expands per app, so no app
|
|
17
|
+
* needs an intent filter of its own. It is deliberately NOT the app's
|
|
18
|
+
* MainActivity: routing the callback through the launcher activity would hand
|
|
19
|
+
* it to Capacitor's {@code appUrlOpen}, and Universal PDF (for one) already
|
|
20
|
+
* treats every VIEW intent there as a document to open.
|
|
21
|
+
*
|
|
22
|
+
* <p>⚠️ <b>Why it starts the app's activity with CLEAR_TOP rather than just
|
|
23
|
+
* finishing.</b> The Custom Tab runs INSIDE the app's task, and this activity
|
|
24
|
+
* lands on top of it. Finishing alone would reveal the Custom Tab again,
|
|
25
|
+
* still showing the provider's last page. Relaunching the activity that
|
|
26
|
+
* opened the tab with {@code FLAG_ACTIVITY_CLEAR_TOP} pops both the tab and
|
|
27
|
+
* this activity off the stack in one move — the same trick AppAuth uses.
|
|
28
|
+
*
|
|
29
|
+
* <p>A callback nobody is waiting for (the process died while the browser was
|
|
30
|
+
* up, or the person had already come back and cancelled) is dropped: the
|
|
31
|
+
* PKCE verifier that would redeem its code lived in the JavaScript that is
|
|
32
|
+
* gone, so there is nothing it could be exchanged with. The app still comes
|
|
33
|
+
* to the front, and the person simply tries again.
|
|
34
|
+
*/
|
|
35
|
+
public class OAuthCallbackActivity extends Activity {
|
|
36
|
+
|
|
37
|
+
/** The host of every app's callback URL — mirrors NATIVE_OAUTH_CALLBACK_HOST in nativeOAuth.ts. */
|
|
38
|
+
public static final String HOST = "auth-callback";
|
|
39
|
+
|
|
40
|
+
/** The activity that opened the browser, to bring back. Set by the plugin. */
|
|
41
|
+
static volatile Class<? extends Activity> returnTo;
|
|
42
|
+
|
|
43
|
+
/** {@code <applicationId>://auth-callback} — the address on the Supabase allowlist. */
|
|
44
|
+
static String callbackUrl(Context context) {
|
|
45
|
+
return context.getPackageName() + "://" + HOST;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@Override
|
|
49
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
50
|
+
super.onCreate(savedInstanceState);
|
|
51
|
+
|
|
52
|
+
Intent intent = getIntent();
|
|
53
|
+
Uri data = intent != null ? intent.getData() : null;
|
|
54
|
+
if (data != null
|
|
55
|
+
&& HOST.equalsIgnoreCase(data.getHost())
|
|
56
|
+
&& getPackageName().equalsIgnoreCase(data.getScheme())) {
|
|
57
|
+
UnisimSuiteAuthPlugin.deliverOAuthRedirect(data.toString());
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
Intent back = null;
|
|
61
|
+
Class<? extends Activity> target = returnTo;
|
|
62
|
+
if (target != null) {
|
|
63
|
+
back = new Intent(this, target);
|
|
64
|
+
back.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
|
65
|
+
} else {
|
|
66
|
+
back = getPackageManager().getLaunchIntentForPackage(getPackageName());
|
|
67
|
+
if (back != null) back.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
68
|
+
}
|
|
69
|
+
if (back != null) startActivity(back);
|
|
70
|
+
finish();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
package uk.co.unisim.sdk;
|
|
2
2
|
|
|
3
|
+
import android.app.Activity;
|
|
4
|
+
import android.content.ActivityNotFoundException;
|
|
3
5
|
import android.content.Intent;
|
|
4
6
|
import android.content.pm.PackageManager;
|
|
7
|
+
import android.net.Uri;
|
|
8
|
+
import android.os.Bundle;
|
|
5
9
|
|
|
6
10
|
import com.getcapacitor.JSArray;
|
|
7
11
|
import com.getcapacitor.JSObject;
|
|
@@ -13,6 +17,7 @@ import com.getcapacitor.annotation.CapacitorPlugin;
|
|
|
13
17
|
import org.json.JSONArray;
|
|
14
18
|
import org.json.JSONObject;
|
|
15
19
|
|
|
20
|
+
import java.lang.ref.WeakReference;
|
|
16
21
|
import java.util.ArrayList;
|
|
17
22
|
import java.util.List;
|
|
18
23
|
|
|
@@ -211,4 +216,128 @@ public class UnisimSuiteAuthPlugin extends Plugin {
|
|
|
211
216
|
call.reject("Could not open " + pkg + ": " + e.getMessage(), e);
|
|
212
217
|
}
|
|
213
218
|
}
|
|
219
|
+
|
|
220
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
221
|
+
// Apple / Google / Microsoft sign-in — the Android half of nativeOAuth.ts
|
|
222
|
+
//
|
|
223
|
+
// All three providers go through the system browser here (Android has no
|
|
224
|
+
// Sign in with Apple sheet). The page opens in a Custom Tab where the
|
|
225
|
+
// browser supports one and as an ordinary browser page otherwise; either
|
|
226
|
+
// way it is the browser's own engine and cookies, not our WebView, which is
|
|
227
|
+
// what Google insists on. Supabase finishes by sending the browser to
|
|
228
|
+
// `<applicationId>://auth-callback?code=…`, which OAuthCallbackActivity
|
|
229
|
+
// (declared in this module's manifest) receives and hands back here.
|
|
230
|
+
//
|
|
231
|
+
// ⚠️ The Custom Tab is requested by hand — ACTION_VIEW plus the
|
|
232
|
+
// `EXTRA_SESSION` extra, which is the whole of the Custom Tabs protocol —
|
|
233
|
+
// rather than through androidx.browser, so this module carries no new
|
|
234
|
+
// dependency into fourteen apps' Gradle builds.
|
|
235
|
+
//
|
|
236
|
+
// ⚠️ "The person came back without finishing" has no callback of its own.
|
|
237
|
+
// It is inferred the way AppAuth infers it: the app was paused by the
|
|
238
|
+
// browser and is now resuming with the call still open. A real callback
|
|
239
|
+
// always settles the call BEFORE the activity resumes (the callback
|
|
240
|
+
// activity delivers in onCreate, then relaunches us), so the two cannot
|
|
241
|
+
// be confused.
|
|
242
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
243
|
+
|
|
244
|
+
private static final String EXTRA_CUSTOM_TABS_SESSION = "android.support.customtabs.extra.SESSION";
|
|
245
|
+
|
|
246
|
+
/** The plugin instance with a sign-in in flight, for OAuthCallbackActivity. */
|
|
247
|
+
private static WeakReference<UnisimSuiteAuthPlugin> oauthOwner = new WeakReference<>(null);
|
|
248
|
+
|
|
249
|
+
private PluginCall pendingOAuth;
|
|
250
|
+
private boolean oauthLeftApp;
|
|
251
|
+
|
|
252
|
+
@PluginMethod
|
|
253
|
+
public void oauthSupport(PluginCall call) {
|
|
254
|
+
JSObject result = new JSObject();
|
|
255
|
+
result.put("platform", "android");
|
|
256
|
+
result.put("callbackUrl", OAuthCallbackActivity.callbackUrl(getContext()));
|
|
257
|
+
result.put("appleNative", false);
|
|
258
|
+
call.resolve(result);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
@PluginMethod
|
|
262
|
+
public void oauthStart(PluginCall call) {
|
|
263
|
+
String url = call.getString("url");
|
|
264
|
+
if (url == null || !url.startsWith("https://")) {
|
|
265
|
+
call.reject("url must be an https:// address");
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
Activity activity = getActivity();
|
|
269
|
+
if (activity == null) {
|
|
270
|
+
call.reject("No activity to open the sign-in page from");
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// One at a time: an earlier attempt still open is settled as cancelled.
|
|
275
|
+
settleOAuth(null);
|
|
276
|
+
|
|
277
|
+
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
|
278
|
+
intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
|
279
|
+
Bundle extras = new Bundle();
|
|
280
|
+
extras.putBinder(EXTRA_CUSTOM_TABS_SESSION, null);
|
|
281
|
+
intent.putExtras(extras);
|
|
282
|
+
|
|
283
|
+
synchronized (UnisimSuiteAuthPlugin.class) {
|
|
284
|
+
pendingOAuth = call;
|
|
285
|
+
oauthLeftApp = false;
|
|
286
|
+
oauthOwner = new WeakReference<>(this);
|
|
287
|
+
OAuthCallbackActivity.returnTo = activity.getClass();
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
try {
|
|
291
|
+
activity.startActivity(intent);
|
|
292
|
+
} catch (ActivityNotFoundException e) {
|
|
293
|
+
synchronized (UnisimSuiteAuthPlugin.class) {
|
|
294
|
+
pendingOAuth = null;
|
|
295
|
+
}
|
|
296
|
+
call.reject("No browser is installed to sign in with", e);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/** Called by OAuthCallbackActivity with the full callback URL. */
|
|
301
|
+
static void deliverOAuthRedirect(String url) {
|
|
302
|
+
UnisimSuiteAuthPlugin owner;
|
|
303
|
+
synchronized (UnisimSuiteAuthPlugin.class) {
|
|
304
|
+
owner = oauthOwner.get();
|
|
305
|
+
}
|
|
306
|
+
if (owner != null) owner.settleOAuth(url);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/** Resolve the open call with the callback URL, or as cancelled when null. */
|
|
310
|
+
private void settleOAuth(String url) {
|
|
311
|
+
PluginCall call;
|
|
312
|
+
synchronized (UnisimSuiteAuthPlugin.class) {
|
|
313
|
+
call = pendingOAuth;
|
|
314
|
+
pendingOAuth = null;
|
|
315
|
+
}
|
|
316
|
+
if (call == null) return;
|
|
317
|
+
JSObject result = new JSObject();
|
|
318
|
+
if (url != null) {
|
|
319
|
+
result.put("url", url);
|
|
320
|
+
} else {
|
|
321
|
+
result.put("cancelled", true);
|
|
322
|
+
}
|
|
323
|
+
call.resolve(result);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
@Override
|
|
327
|
+
protected void handleOnPause() {
|
|
328
|
+
super.handleOnPause();
|
|
329
|
+
synchronized (UnisimSuiteAuthPlugin.class) {
|
|
330
|
+
if (pendingOAuth != null) oauthLeftApp = true;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
@Override
|
|
335
|
+
protected void handleOnResume() {
|
|
336
|
+
super.handleOnResume();
|
|
337
|
+
boolean abandoned;
|
|
338
|
+
synchronized (UnisimSuiteAuthPlugin.class) {
|
|
339
|
+
abandoned = pendingOAuth != null && oauthLeftApp;
|
|
340
|
+
}
|
|
341
|
+
if (abandoned) settleOAuth(null);
|
|
342
|
+
}
|
|
214
343
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangelogMenu.d.ts","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"ChangelogMenu.d.ts","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,OAAO,CAAA;AAQd,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAMvE,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAeD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAA8B,EAC9B,KAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,KAAK,EACL,KAAe,EACf,UAAU,GACX,EAAE,kBAAkB,2CAmHpB"}
|
package/dist/ChangelogMenu.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { useRef, } from 'react';
|
|
4
4
|
import { useChangelog } from './changelog.js';
|
|
5
5
|
import { useChangelogScope } from './changelogScope.js';
|
|
6
6
|
import { t } from './i18n.js';
|
|
7
7
|
import { useLanguage, useUniversal } from './provider.js';
|
|
8
8
|
import { DropdownSurface } from './DropdownSurface.js';
|
|
9
|
-
import {
|
|
9
|
+
import { useHoverMenu } from './hover.js';
|
|
10
10
|
import { MENU, MENU_ENTRY_BADGE } from './menuTheme.js';
|
|
11
11
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
12
12
|
// Component
|
|
@@ -30,9 +30,11 @@ export function ChangelogMenu({ iconSrc = DEFAULT_TRIGGER_ICON, limit = 5, produ
|
|
|
30
30
|
const { language } = useLanguage();
|
|
31
31
|
const { config } = useUniversal();
|
|
32
32
|
const resolvedAriaLabel = ariaLabel ?? t(language, 'changelog.label');
|
|
33
|
-
|
|
33
|
+
// Open state, the leave timer, hover-to-open only where hovering exists, and
|
|
34
|
+
// the rule that the click after a hover confirms the menu instead of
|
|
35
|
+
// shutting it — all in useHoverMenu (hover.ts).
|
|
36
|
+
const { open, setOpen, toggle, hoverOpen, hoverClose } = useHoverMenu();
|
|
34
37
|
const wrapRef = useRef(null);
|
|
35
|
-
const closeTimer = useRef(null);
|
|
36
38
|
// Which product "this app" means, and which of the two scopes is remembered.
|
|
37
39
|
const { scope, setScope, product: configProduct } = useChangelogScope();
|
|
38
40
|
const appProduct = (productFilter ?? configProduct);
|
|
@@ -43,23 +45,7 @@ export function ChangelogMenu({ iconSrc = DEFAULT_TRIGGER_ICON, limit = 5, produ
|
|
|
43
45
|
// "The filter hid everything" and "the feed itself is empty" want different
|
|
44
46
|
// words — the first is answerable by one tap, the second is not.
|
|
45
47
|
const filteredToNothing = !loading && releases.length === 0 && totalReleases > 0 && scope === 'app';
|
|
46
|
-
|
|
47
|
-
if (closeTimer.current)
|
|
48
|
-
clearTimeout(closeTimer.current);
|
|
49
|
-
setOpen(true);
|
|
50
|
-
}
|
|
51
|
-
function closeSoon() {
|
|
52
|
-
if (closeTimer.current)
|
|
53
|
-
clearTimeout(closeTimer.current);
|
|
54
|
-
closeTimer.current = setTimeout(() => setOpen(false), 220);
|
|
55
|
-
}
|
|
56
|
-
// Hover-to-open is desktop-only. On a touch screen one tap fires a
|
|
57
|
-
// synthesised mouseenter AND a click, so hovering open then toggling shut
|
|
58
|
-
// meant these menus could never be opened by touch at all — see hover.ts.
|
|
59
|
-
const canHover = useCanHover();
|
|
60
|
-
const hoverOpen = canHover ? openNow : undefined;
|
|
61
|
-
const hoverClose = canHover ? closeSoon : undefined;
|
|
62
|
-
return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, children: [_jsx("button", { type: "button", "aria-label": resolvedAriaLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: () => setOpen((v) => !v), onFocus: hoverOpen, style: triggerStyle, children: _jsx("img", { src: iconSrc, alt: "", "aria-hidden": true, style: { width: 28, height: 28, display: 'block' } }) }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: "right", arrow: true, role: "menu", surfaceStyle: menuSurfaceStyle(theme), onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [_jsxs("div", { style: headerStyle(theme), children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', lineHeight: 1.1, minWidth: 0 }, children: [_jsx("span", { style: eyebrowStyle(theme), children: t(language, 'suite.portal_eyebrow') }), _jsx("span", { style: titleStyle(theme), children: t(language, 'changelog.title') })] }), _jsx("span", { style: versionChipStyle(theme), children: currentVersion ?? '…' })] }), _jsxs("div", { style: scopeRowStyle, role: "group", "aria-label": t(language, 'changelog.scope'), children: [_jsx(ScopeButton, { label: productDisplayName(appProduct), active: scope === 'app', theme: theme, onClick: () => setScope('app') }), _jsx(ScopeButton, { label: t(language, 'changelog.scope_all'), active: scope === 'all', theme: theme, onClick: () => setScope('all') })] }), _jsx("div", { style: bodyStyle, children: loading ? (_jsx("p", { style: emptyStyle(theme), children: t(language, 'changelog.loading') })) : filteredToNothing ? (_jsxs("div", { style: emptyStyle(theme), children: [_jsx("p", { style: { margin: 0 }, children: t(language, 'changelog.no_entries_app') }), _jsx("button", { type: "button", onClick: () => setScope('all'), style: showAllStyle(theme), children: t(language, 'changelog.show_all') })] })) : releases.length === 0 ? (_jsx("p", { style: emptyStyle(theme), children: t(language, 'changelog.no_entries') })) : (releases.map((r) => _jsx(ReleaseBlock, { release: r, language: language, theme: theme }, r.version))) }), _jsxs("div", { style: footerStyle(theme), children: [_jsx("span", { style: appVersionStyle(theme), children: appVersion ?? '' }), _jsxs("a", { href: "https://changelog.unisim.co.uk/changelog.json", target: "_blank", rel: "noreferrer", style: footerLinkStyle(theme), children: [t(language, 'changelog.full_changelog'), " \u2197"] })] })] })] }));
|
|
48
|
+
return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, children: [_jsx("button", { type: "button", "aria-label": resolvedAriaLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: toggle, onFocus: hoverOpen, style: triggerStyle, children: _jsx("img", { src: iconSrc, alt: "", "aria-hidden": true, style: { width: 28, height: 28, display: 'block' } }) }), _jsxs(DropdownSurface, { open: open, anchorRef: wrapRef, align: "right", arrow: true, role: "menu", surfaceStyle: menuSurfaceStyle(theme), onMouseEnter: hoverOpen, onMouseLeave: hoverClose, onRequestClose: () => setOpen(false), children: [_jsxs("div", { style: headerStyle(theme), children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', lineHeight: 1.1, minWidth: 0 }, children: [_jsx("span", { style: eyebrowStyle(theme), children: t(language, 'suite.portal_eyebrow') }), _jsx("span", { style: titleStyle(theme), children: t(language, 'changelog.title') })] }), _jsx("span", { style: versionChipStyle(theme), children: currentVersion ?? '…' })] }), _jsxs("div", { style: scopeRowStyle, role: "group", "aria-label": t(language, 'changelog.scope'), children: [_jsx(ScopeButton, { label: productDisplayName(appProduct), active: scope === 'app', theme: theme, onClick: () => setScope('app') }), _jsx(ScopeButton, { label: t(language, 'changelog.scope_all'), active: scope === 'all', theme: theme, onClick: () => setScope('all') })] }), _jsx("div", { style: bodyStyle, children: loading ? (_jsx("p", { style: emptyStyle(theme), children: t(language, 'changelog.loading') })) : filteredToNothing ? (_jsxs("div", { style: emptyStyle(theme), children: [_jsx("p", { style: { margin: 0 }, children: t(language, 'changelog.no_entries_app') }), _jsx("button", { type: "button", onClick: () => setScope('all'), style: showAllStyle(theme), children: t(language, 'changelog.show_all') })] })) : releases.length === 0 ? (_jsx("p", { style: emptyStyle(theme), children: t(language, 'changelog.no_entries') })) : (releases.map((r) => _jsx(ReleaseBlock, { release: r, language: language, theme: theme }, r.version))) }), _jsxs("div", { style: footerStyle(theme), children: [_jsx("span", { style: appVersionStyle(theme), children: appVersion ?? '' }), _jsxs("a", { href: "https://changelog.unisim.co.uk/changelog.json", target: "_blank", rel: "noreferrer", style: footerLinkStyle(theme), children: [t(language, 'changelog.full_changelog'), " \u2197"] })] })] })] }));
|
|
63
49
|
}
|
|
64
50
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
65
51
|
// Subcomponents
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangelogMenu.js","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChangelogMenu.js","sourceRoot":"","sources":["../src/ChangelogMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyMenu.d.ts","sourceRoot":"","sources":["../src/CompanyMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"CompanyMenu.d.ts","sourceRoot":"","sources":["../src/CompanyMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,OAAO,CAAA;AAQd,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAOrD,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;IACpD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;IACrD,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD,eAAO,MAAM,oBAAoB;;;;;;;CAOvB,CAAA;AAiFV,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,YAA4C,EAC5C,UAAwC,EACxC,UAAwC,EACxC,YAA4C,EAC5C,WAA0C,EAC1C,SAAsC,EACtC,OAAO,EACP,QAAQ,EACR,SAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,KAAe,EACf,KAAK,EACL,SAAS,GACV,EAAE,gBAAgB,2CA0FlB"}
|
package/dist/CompanyMenu.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { useRef, } from 'react';
|
|
4
4
|
import { t } from './i18n.js';
|
|
5
5
|
import { useLanguage } from './provider.js';
|
|
6
6
|
import { useOrg, useOrgRole } from './auth.js';
|
|
7
7
|
import { DropdownSurface } from './DropdownSurface.js';
|
|
8
|
-
import {
|
|
8
|
+
import { useHoverMenu } from './hover.js';
|
|
9
9
|
import { MENU } from './menuTheme.js';
|
|
10
10
|
import { brandColorOn, textOn } from './contrast.js';
|
|
11
11
|
// ──────────────────────────────────────────────────────────────────────────────
|
|
@@ -63,26 +63,12 @@ export function CompanyMenu({ label, projectsHref = DEFAULT_COMPANY_URLS.project
|
|
|
63
63
|
// non-admin member of the active org.
|
|
64
64
|
const { role, canEdit } = useOrgRole();
|
|
65
65
|
const billingLocked = role === 'member' && !canEdit;
|
|
66
|
-
|
|
66
|
+
// Open state, the leave timer, hover-to-open only where hovering exists, and
|
|
67
|
+
// the rule that the click after a hover confirms the menu instead of
|
|
68
|
+
// shutting it — all in useHoverMenu (hover.ts).
|
|
69
|
+
const { open, setOpen, toggle, hoverOpen, hoverClose } = useHoverMenu();
|
|
67
70
|
const wrapRef = useRef(null);
|
|
68
|
-
|
|
69
|
-
function openNow() {
|
|
70
|
-
if (closeTimer.current)
|
|
71
|
-
clearTimeout(closeTimer.current);
|
|
72
|
-
setOpen(true);
|
|
73
|
-
}
|
|
74
|
-
function closeSoon() {
|
|
75
|
-
if (closeTimer.current)
|
|
76
|
-
clearTimeout(closeTimer.current);
|
|
77
|
-
closeTimer.current = setTimeout(() => setOpen(false), 220);
|
|
78
|
-
}
|
|
79
|
-
// Hover-to-open is desktop-only. On a touch screen one tap fires a
|
|
80
|
-
// synthesised mouseenter AND a click, so hovering open then toggling shut
|
|
81
|
-
// meant these menus could never be opened by touch at all — see hover.ts.
|
|
82
|
-
const canHover = useCanHover();
|
|
83
|
-
const hoverOpen = canHover ? openNow : undefined;
|
|
84
|
-
const hoverClose = canHover ? closeSoon : undefined;
|
|
85
|
-
return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, children: [_jsxs("button", { type: "button", "aria-label": resolvedLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: () => setOpen((v) => !v), onFocus: hoverOpen, className: triggerClassName, style: triggerClassName
|
|
71
|
+
return (_jsxs("div", { ref: wrapRef, className: className, style: { position: 'relative', display: 'inline-block', ...style }, onMouseEnter: hoverOpen, onMouseLeave: hoverClose, children: [_jsxs("button", { type: "button", "aria-label": resolvedLabel, "aria-expanded": open, "aria-haspopup": "true", onClick: toggle, onFocus: hoverOpen, className: triggerClassName, style: triggerClassName
|
|
86
72
|
? undefined
|
|
87
73
|
: {
|
|
88
74
|
display: 'inline-flex',
|