@oxyhq/services 12.1.1 → 13.0.0
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/lib/commonjs/index.js +73 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/components/AccountMenuButton.js +26 -9
- package/lib/commonjs/ui/components/AccountMenuButton.js.map +1 -1
- package/lib/commonjs/ui/components/AccountSwitcher.js +792 -0
- package/lib/commonjs/ui/components/AccountSwitcher.js.map +1 -0
- package/lib/commonjs/ui/components/ActiveAccountBanner.js +144 -0
- package/lib/commonjs/ui/components/ActiveAccountBanner.js.map +1 -0
- package/lib/commonjs/ui/components/SignInModal.js +9 -2
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +72 -27
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +8 -0
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/index.js +42 -0
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +4 -1
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountMembersScreen.js +469 -0
- package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +264 -0
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +51 -0
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/{CreateManagedAccountScreen.js → CreateAccountScreen.js} +116 -25
- package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/ManageAccountScreen.js +11 -11
- package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +10 -2
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/utils/crossApex.js +74 -0
- package/lib/commonjs/utils/crossApex.js.map +1 -0
- package/lib/module/index.js +21 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/components/AccountMenuButton.js +26 -9
- package/lib/module/ui/components/AccountMenuButton.js.map +1 -1
- package/lib/module/ui/components/AccountSwitcher.js +786 -0
- package/lib/module/ui/components/AccountSwitcher.js.map +1 -0
- package/lib/module/ui/components/ActiveAccountBanner.js +141 -0
- package/lib/module/ui/components/ActiveAccountBanner.js.map +1 -0
- package/lib/module/ui/components/SignInModal.js +9 -2
- package/lib/module/ui/components/SignInModal.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +72 -27
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +8 -0
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/index.js +5 -0
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +4 -1
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/AccountMembersScreen.js +464 -0
- package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -0
- package/lib/module/ui/screens/AccountSettingsScreen.js +259 -0
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -0
- package/lib/module/ui/screens/AccountSwitcherScreen.js +48 -0
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -0
- package/lib/module/ui/screens/{CreateManagedAccountScreen.js → CreateAccountScreen.js} +117 -26
- package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -0
- package/lib/module/ui/screens/ManageAccountScreen.js +11 -11
- package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +10 -2
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/utils/crossApex.js +69 -0
- package/lib/module/utils/crossApex.js.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +8 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts +13 -4
- package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts +47 -0
- package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/{ActingAsBanner.d.ts → ActiveAccountBanner.d.ts} +1 -1
- package/lib/typescript/commonjs/ui/components/ActiveAccountBanner.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +33 -5
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +5 -0
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts +10 -0
- package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts +12 -0
- package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts +11 -0
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts +11 -0
- package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/crossApex.d.ts +55 -0
- package/lib/typescript/commonjs/utils/crossApex.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +8 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/AccountMenuButton.d.ts +13 -4
- package/lib/typescript/module/ui/components/AccountMenuButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/AccountSwitcher.d.ts +47 -0
- package/lib/typescript/module/ui/components/AccountSwitcher.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/{ActingAsBanner.d.ts → ActiveAccountBanner.d.ts} +1 -1
- package/lib/typescript/module/ui/components/ActiveAccountBanner.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts +33 -5
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +5 -0
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts +10 -0
- package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts +12 -0
- package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts +11 -0
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts +11 -0
- package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/module/utils/crossApex.d.ts +55 -0
- package/lib/typescript/module/utils/crossApex.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/index.ts +22 -4
- package/src/ui/components/AccountMenuButton.tsx +25 -10
- package/src/ui/components/AccountSwitcher.tsx +763 -0
- package/src/ui/components/ActiveAccountBanner.tsx +130 -0
- package/src/ui/components/SignInModal.tsx +18 -6
- package/src/ui/context/OxyContext.tsx +121 -35
- package/src/ui/context/hooks/useAuthOperations.ts +8 -0
- package/src/ui/index.ts +5 -0
- package/src/ui/navigation/routes.ts +8 -2
- package/src/ui/screens/AccountMembersScreen.tsx +481 -0
- package/src/ui/screens/AccountSettingsScreen.tsx +261 -0
- package/src/ui/screens/AccountSwitcherScreen.tsx +43 -0
- package/src/ui/screens/{CreateManagedAccountScreen.tsx → CreateAccountScreen.tsx} +140 -22
- package/src/ui/screens/ManageAccountScreen.tsx +19 -19
- package/src/ui/screens/OxyAuthScreen.tsx +20 -6
- package/src/utils/crossApex.ts +75 -0
- package/lib/commonjs/ui/components/ActingAsBanner.js +0 -140
- package/lib/commonjs/ui/components/ActingAsBanner.js.map +0 -1
- package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +0 -1
- package/lib/module/ui/components/ActingAsBanner.js +0 -137
- package/lib/module/ui/components/ActingAsBanner.js.map +0 -1
- package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts +0 -5
- package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ActingAsBanner.d.ts.map +0 -1
- package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts +0 -5
- package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +0 -1
- package/src/ui/components/ActingAsBanner.tsx +0 -129
|
@@ -29,6 +29,7 @@ import OxyLogo from '../components/OxyLogo';
|
|
|
29
29
|
import AnotherDeviceQR from '../components/AnotherDeviceQR';
|
|
30
30
|
import LoadingState from '../components/LoadingState';
|
|
31
31
|
import { useOxyAuthSession, OXY_ACCOUNTS_WEB_URL } from '../hooks/useOxyAuthSession';
|
|
32
|
+
import { isCrossApexWeb } from '../../utils/crossApex';
|
|
32
33
|
|
|
33
34
|
const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) => {
|
|
34
35
|
const bloomTheme = useTheme();
|
|
@@ -41,6 +42,13 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
|
|
|
41
42
|
{ onSignedIn: onAuthenticated },
|
|
42
43
|
);
|
|
43
44
|
|
|
45
|
+
// On a cross-apex web RP, only the "Continue with Oxy" IdP popup establishes a
|
|
46
|
+
// durable `fedcm_session`. The Commons-app handoffs (same-device deep-link +
|
|
47
|
+
// cross-device QR) approve OUTSIDE the browser, so they leave no IdP session
|
|
48
|
+
// and the user would be logged out on reload — hide them there. Off-browser
|
|
49
|
+
// (native) this is always `false`, so the bottom sheet is unchanged.
|
|
50
|
+
const crossApexWeb = isCrossApexWeb();
|
|
51
|
+
|
|
44
52
|
if (isLoading) {
|
|
45
53
|
return (
|
|
46
54
|
<View className="flex-1 items-center justify-center bg-bg">
|
|
@@ -104,8 +112,10 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
|
|
|
104
112
|
</Button>
|
|
105
113
|
|
|
106
114
|
{/* Same-device "Sign in with Oxy" handoff — deep-links into the native Oxy
|
|
107
|
-
app to approve. Shown only when the handoff backend returned a payload
|
|
108
|
-
|
|
115
|
+
app to approve. Shown only when the handoff backend returned a payload,
|
|
116
|
+
and never on a cross-apex web RP (approval happens outside the browser
|
|
117
|
+
→ no durable session). */}
|
|
118
|
+
{!crossApexWeb && qrPayload && (
|
|
109
119
|
<Button
|
|
110
120
|
variant="secondary"
|
|
111
121
|
size="large"
|
|
@@ -130,10 +140,14 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
|
|
|
130
140
|
</View>
|
|
131
141
|
)}
|
|
132
142
|
|
|
133
|
-
{/* Collapsed "sign in on another device" QR disclosure
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
143
|
+
{/* Collapsed "sign in on another device" QR disclosure. Hidden on a
|
|
144
|
+
cross-apex web RP: a remote Commons-app approval completes via the
|
|
145
|
+
device-flow claim, which plants no `fedcm_session`. */}
|
|
146
|
+
{!crossApexWeb && (
|
|
147
|
+
<View className="w-full mt-space-24">
|
|
148
|
+
<AnotherDeviceQR qrData={qrData} qrPayload={qrPayload} />
|
|
149
|
+
</View>
|
|
150
|
+
)}
|
|
137
151
|
|
|
138
152
|
{/* Footer — create an account */}
|
|
139
153
|
<View className="flex-row flex-wrap justify-center items-center mt-space-24">
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-apex web detection for sign-in durability gating.
|
|
3
|
+
*
|
|
4
|
+
* On a web Relying Party whose registrable apex differs from the central Oxy
|
|
5
|
+
* Identity Provider apex (`oxy.so`), the ONLY sign-in completion that survives a
|
|
6
|
+
* page reload is the interactive "Continue with Oxy" IdP flow, because it is the
|
|
7
|
+
* only one that establishes a first-party `fedcm_session` cookie at
|
|
8
|
+
* `auth.<apex>` — the anchor the cross-domain cold-boot restore reads on reload.
|
|
9
|
+
*
|
|
10
|
+
* The other sign-in completions the SDK can drive do NOT plant a `fedcm_session`:
|
|
11
|
+
* - password / public-key sign-in mints a bearer directly against the Oxy API
|
|
12
|
+
* (its refresh cookie is host-scoped to `api.oxy.so` and `SameSite=Lax`, so
|
|
13
|
+
* it is unreachable cross-site from the RP), and
|
|
14
|
+
* - the Commons-app device-flow handoff (cross-device QR / same-device
|
|
15
|
+
* deep-link) is approved OUTSIDE the browser, so no IdP browser session is
|
|
16
|
+
* established.
|
|
17
|
+
* On a cross-apex RP each of these leaves the user signed in for the current
|
|
18
|
+
* page only — a reload logs them out. See OxyHQServices AGENTS.md
|
|
19
|
+
* "Auth / Session Contract".
|
|
20
|
+
*
|
|
21
|
+
* Same-apex `*.oxy.so` apps (e.g. `accounts.oxy.so`) are first-party with
|
|
22
|
+
* `api.oxy.so`: their refresh cookie rides same-site requests so reload restore
|
|
23
|
+
* works without `fedcm_session`, and they are therefore NOT gated.
|
|
24
|
+
*
|
|
25
|
+
* Returns `false` off-browser (React Native has no `window.location`) and for
|
|
26
|
+
* hosts without a registrable apex (localhost / raw IP / single-label dev
|
|
27
|
+
* hosts), so native and local development keep every sign-in method.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
import { registrableApex, CENTRAL_IDP_APEX } from '@oxyhq/core';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Whether the given host is a web RP on a registrable apex other than the
|
|
34
|
+
* central Oxy IdP apex (`oxy.so`). See the module doc for why this gates the
|
|
35
|
+
* non-durable sign-in paths.
|
|
36
|
+
*
|
|
37
|
+
* @param hostname - The host to classify. Defaults to the current
|
|
38
|
+
* `window.location.hostname`; resolves to `undefined` off-browser (React
|
|
39
|
+
* Native / SSR), which yields `false`. The explicit parameter mirrors
|
|
40
|
+
* `autoDetectAuthWebUrl(location?)` and keeps the predicate unit-testable
|
|
41
|
+
* without manipulating the global `window.location`.
|
|
42
|
+
*/
|
|
43
|
+
export function isCrossApexWeb(
|
|
44
|
+
hostname: string | undefined = typeof window !== 'undefined'
|
|
45
|
+
? window.location?.hostname
|
|
46
|
+
: undefined,
|
|
47
|
+
): boolean {
|
|
48
|
+
if (!hostname) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const apex = registrableApex(hostname);
|
|
52
|
+
return apex !== null && apex !== CENTRAL_IDP_APEX;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Thrown when an app attempts a direct (non-IdP) sign-in — password or
|
|
57
|
+
* public-key — on a cross-apex web RP, where such a sign-in would not survive a
|
|
58
|
+
* page reload because no `fedcm_session` is established (see {@link isCrossApexWeb}).
|
|
59
|
+
*
|
|
60
|
+
* Apps on a cross-apex apex must sign in through the interactive
|
|
61
|
+
* "Continue with Oxy" IdP flow (`OxySignInButton` / `showSignInModal()`), which
|
|
62
|
+
* plants the durable session.
|
|
63
|
+
*/
|
|
64
|
+
export class CrossApexDirectSignInError extends Error {
|
|
65
|
+
override readonly name = 'CrossApexDirectSignInError';
|
|
66
|
+
readonly code = 'CROSS_APEX_DIRECT_SIGN_IN_UNSUPPORTED';
|
|
67
|
+
|
|
68
|
+
constructor() {
|
|
69
|
+
super(
|
|
70
|
+
'Direct sign-in is unavailable on this domain because the session would ' +
|
|
71
|
+
'not survive a page reload. Use "Continue with Oxy" to sign in through ' +
|
|
72
|
+
'the Oxy identity provider.',
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
var _theme = require("@oxyhq/bloom/theme");
|
|
10
|
-
var _OxyContext = require("../context/OxyContext.js");
|
|
11
|
-
var _core = require("@oxyhq/core");
|
|
12
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
-
/**
|
|
15
|
-
* ActingAsBanner - Shows a subtle banner when the user is acting as a managed account.
|
|
16
|
-
*
|
|
17
|
-
* - Tap to open the ManageAccount screen (account switcher lives in AccountMenu).
|
|
18
|
-
* - Long-press to switch back to the primary account immediately.
|
|
19
|
-
*
|
|
20
|
-
* Place this component in your app's layout where you want the banner to appear
|
|
21
|
-
* (typically at the top of the screen or below the header).
|
|
22
|
-
*/const ActingAsBanner = () => {
|
|
23
|
-
const bloomTheme = (0, _theme.useTheme)();
|
|
24
|
-
const {
|
|
25
|
-
actingAs,
|
|
26
|
-
managedAccounts,
|
|
27
|
-
setActingAs,
|
|
28
|
-
showBottomSheet,
|
|
29
|
-
oxyServices
|
|
30
|
-
} = (0, _OxyContext.useOxy)();
|
|
31
|
-
const activeAccount = (0, _react.useMemo)(() => {
|
|
32
|
-
if (!actingAs || !managedAccounts.length) return null;
|
|
33
|
-
const managed = managedAccounts.find(m => m.accountId === actingAs);
|
|
34
|
-
return managed?.account ?? null;
|
|
35
|
-
}, [actingAs, managedAccounts]);
|
|
36
|
-
if (!actingAs || !activeAccount) {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
const displayName = (0, _core.getAccountDisplayName)(activeAccount);
|
|
40
|
-
const handlePress = () => {
|
|
41
|
-
showBottomSheet?.('ManageAccount');
|
|
42
|
-
};
|
|
43
|
-
const handleLongPress = () => {
|
|
44
|
-
setActingAs(null);
|
|
45
|
-
};
|
|
46
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
47
|
-
style: [styles.container, {
|
|
48
|
-
backgroundColor: bloomTheme.colors.primary + '14'
|
|
49
|
-
}],
|
|
50
|
-
onPress: handlePress,
|
|
51
|
-
onLongPress: handleLongPress,
|
|
52
|
-
activeOpacity: 0.7,
|
|
53
|
-
accessibilityRole: "button",
|
|
54
|
-
accessibilityLabel: `Acting as ${displayName}. Tap to switch accounts, long press to switch back.`,
|
|
55
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
56
|
-
style: styles.content,
|
|
57
|
-
children: [activeAccount.avatar ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
|
|
58
|
-
source: {
|
|
59
|
-
uri: oxyServices.getFileDownloadUrl(activeAccount.avatar, 'thumb')
|
|
60
|
-
},
|
|
61
|
-
style: styles.avatar
|
|
62
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
63
|
-
style: [styles.avatarFallback, {
|
|
64
|
-
backgroundColor: bloomTheme.colors.primary + '30'
|
|
65
|
-
}],
|
|
66
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
67
|
-
style: [styles.avatarText, {
|
|
68
|
-
color: bloomTheme.colors.primary
|
|
69
|
-
}],
|
|
70
|
-
children: displayName.charAt(0).toUpperCase()
|
|
71
|
-
})
|
|
72
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
73
|
-
style: styles.textContainer,
|
|
74
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
75
|
-
style: [styles.label, {
|
|
76
|
-
color: bloomTheme.colors.primary
|
|
77
|
-
}],
|
|
78
|
-
numberOfLines: 1,
|
|
79
|
-
children: ["Acting as ", displayName]
|
|
80
|
-
})
|
|
81
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
82
|
-
style: [styles.switchBackHint, {
|
|
83
|
-
borderColor: bloomTheme.colors.primary + '40'
|
|
84
|
-
}],
|
|
85
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
86
|
-
style: [styles.switchBackText, {
|
|
87
|
-
color: bloomTheme.colors.primary
|
|
88
|
-
}],
|
|
89
|
-
children: "Switch back"
|
|
90
|
-
})
|
|
91
|
-
})]
|
|
92
|
-
})
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
const styles = _reactNative.StyleSheet.create({
|
|
96
|
-
container: {
|
|
97
|
-
paddingHorizontal: 16,
|
|
98
|
-
paddingVertical: 10
|
|
99
|
-
},
|
|
100
|
-
content: {
|
|
101
|
-
flexDirection: 'row',
|
|
102
|
-
alignItems: 'center'
|
|
103
|
-
},
|
|
104
|
-
avatar: {
|
|
105
|
-
width: 24,
|
|
106
|
-
height: 24,
|
|
107
|
-
borderRadius: 12
|
|
108
|
-
},
|
|
109
|
-
avatarFallback: {
|
|
110
|
-
width: 24,
|
|
111
|
-
height: 24,
|
|
112
|
-
borderRadius: 12,
|
|
113
|
-
alignItems: 'center',
|
|
114
|
-
justifyContent: 'center'
|
|
115
|
-
},
|
|
116
|
-
avatarText: {
|
|
117
|
-
fontSize: 12,
|
|
118
|
-
fontWeight: _reactNative.Platform.OS === 'web' ? '600' : undefined
|
|
119
|
-
},
|
|
120
|
-
textContainer: {
|
|
121
|
-
flex: 1,
|
|
122
|
-
marginLeft: 10
|
|
123
|
-
},
|
|
124
|
-
label: {
|
|
125
|
-
fontSize: 14,
|
|
126
|
-
fontWeight: _reactNative.Platform.OS === 'web' ? '500' : undefined
|
|
127
|
-
},
|
|
128
|
-
switchBackHint: {
|
|
129
|
-
borderWidth: 1,
|
|
130
|
-
borderRadius: 12,
|
|
131
|
-
paddingHorizontal: 10,
|
|
132
|
-
paddingVertical: 4
|
|
133
|
-
},
|
|
134
|
-
switchBackText: {
|
|
135
|
-
fontSize: 12,
|
|
136
|
-
fontWeight: _reactNative.Platform.OS === 'web' ? '500' : undefined
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
var _default = exports.default = /*#__PURE__*/_react.default.memo(ActingAsBanner);
|
|
140
|
-
//# sourceMappingURL=ActingAsBanner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_theme","_OxyContext","_core","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ActingAsBanner","bloomTheme","useTheme","actingAs","managedAccounts","setActingAs","showBottomSheet","oxyServices","useOxy","activeAccount","useMemo","length","managed","find","m","accountId","account","displayName","getAccountDisplayName","handlePress","handleLongPress","jsx","TouchableOpacity","style","styles","container","backgroundColor","colors","primary","onPress","onLongPress","activeOpacity","accessibilityRole","accessibilityLabel","children","jsxs","View","content","avatar","Image","source","uri","getFileDownloadUrl","avatarFallback","Text","avatarText","color","charAt","toUpperCase","textContainer","label","numberOfLines","switchBackHint","borderColor","switchBackText","StyleSheet","create","paddingHorizontal","paddingVertical","flexDirection","alignItems","width","height","borderRadius","justifyContent","fontSize","fontWeight","Platform","OS","undefined","flex","marginLeft","borderWidth","_default","exports","React","memo"],"sourceRoot":"../../../../src","sources":["ui/components/ActingAsBanner.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_vectorIcons","_Header","_interopRequireDefault","_useI18n","_theme","_typography","_button","_textField","_OxyContext","_bloom","_jsxRuntime","e","__esModule","default","USERNAME_REGEX","DEBOUNCE_MS","USERNAME_MAX","DISPLAY_NAME_MAX","BIO_MAX","CreateManagedAccountScreen","onClose","goBack","bloomTheme","useTheme","oxyServices","createManagedAccount","setActingAs","useOxy","t","useI18n","username","setUsername","useState","displayName","setDisplayName","bio","setBio","usernameStatus","setUsernameStatus","usernameMessage","setUsernameMessage","isCreating","setIsCreating","debounceTimerRef","useRef","checkUsername","useCallback","value","current","clearTimeout","length","test","setTimeout","result","checkUsernameAvailability","available","message","handleUsernameChange","cleaned","toLowerCase","replace","useEffect","canCreate","trim","handleCreate","nameParts","split","firstName","lastName","slice","join","undefined","account","name","first","last","toast","success","accountId","error","Error","usernameIsInvalid","statusColor","colors","negative","textSecondary","jsxs","View","className","children","jsx","title","onBack","showBackButton","showCloseButton","elevation","KeyboardAvoidingView","behavior","Platform","OS","keyboardVerticalOffset","ScrollView","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","H1","Text","TextField","isInvalid","TextFieldInput","floatingLabel","label","onChangeText","autoCapitalize","autoCorrect","autoComplete","maxLength","ActivityIndicator","size","color","primary","Ionicons","style","multiline","numberOfLines","textAlignVertical","Button","variant","onPress","disabled","loading","accessibilityLabel","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/screens/CreateManagedAccountScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import React, { useMemo } from 'react';
|
|
4
|
-
import { View, Text, TouchableOpacity, StyleSheet, Platform, Image } from 'react-native';
|
|
5
|
-
import { useTheme } from '@oxyhq/bloom/theme';
|
|
6
|
-
import { useOxy } from "../context/OxyContext.js";
|
|
7
|
-
import { getAccountDisplayName } from '@oxyhq/core';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* ActingAsBanner - Shows a subtle banner when the user is acting as a managed account.
|
|
11
|
-
*
|
|
12
|
-
* - Tap to open the ManageAccount screen (account switcher lives in AccountMenu).
|
|
13
|
-
* - Long-press to switch back to the primary account immediately.
|
|
14
|
-
*
|
|
15
|
-
* Place this component in your app's layout where you want the banner to appear
|
|
16
|
-
* (typically at the top of the screen or below the header).
|
|
17
|
-
*/
|
|
18
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
-
const ActingAsBanner = () => {
|
|
20
|
-
const bloomTheme = useTheme();
|
|
21
|
-
const {
|
|
22
|
-
actingAs,
|
|
23
|
-
managedAccounts,
|
|
24
|
-
setActingAs,
|
|
25
|
-
showBottomSheet,
|
|
26
|
-
oxyServices
|
|
27
|
-
} = useOxy();
|
|
28
|
-
const activeAccount = useMemo(() => {
|
|
29
|
-
if (!actingAs || !managedAccounts.length) return null;
|
|
30
|
-
const managed = managedAccounts.find(m => m.accountId === actingAs);
|
|
31
|
-
return managed?.account ?? null;
|
|
32
|
-
}, [actingAs, managedAccounts]);
|
|
33
|
-
if (!actingAs || !activeAccount) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
const displayName = getAccountDisplayName(activeAccount);
|
|
37
|
-
const handlePress = () => {
|
|
38
|
-
showBottomSheet?.('ManageAccount');
|
|
39
|
-
};
|
|
40
|
-
const handleLongPress = () => {
|
|
41
|
-
setActingAs(null);
|
|
42
|
-
};
|
|
43
|
-
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
44
|
-
style: [styles.container, {
|
|
45
|
-
backgroundColor: bloomTheme.colors.primary + '14'
|
|
46
|
-
}],
|
|
47
|
-
onPress: handlePress,
|
|
48
|
-
onLongPress: handleLongPress,
|
|
49
|
-
activeOpacity: 0.7,
|
|
50
|
-
accessibilityRole: "button",
|
|
51
|
-
accessibilityLabel: `Acting as ${displayName}. Tap to switch accounts, long press to switch back.`,
|
|
52
|
-
children: /*#__PURE__*/_jsxs(View, {
|
|
53
|
-
style: styles.content,
|
|
54
|
-
children: [activeAccount.avatar ? /*#__PURE__*/_jsx(Image, {
|
|
55
|
-
source: {
|
|
56
|
-
uri: oxyServices.getFileDownloadUrl(activeAccount.avatar, 'thumb')
|
|
57
|
-
},
|
|
58
|
-
style: styles.avatar
|
|
59
|
-
}) : /*#__PURE__*/_jsx(View, {
|
|
60
|
-
style: [styles.avatarFallback, {
|
|
61
|
-
backgroundColor: bloomTheme.colors.primary + '30'
|
|
62
|
-
}],
|
|
63
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
64
|
-
style: [styles.avatarText, {
|
|
65
|
-
color: bloomTheme.colors.primary
|
|
66
|
-
}],
|
|
67
|
-
children: displayName.charAt(0).toUpperCase()
|
|
68
|
-
})
|
|
69
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
70
|
-
style: styles.textContainer,
|
|
71
|
-
children: /*#__PURE__*/_jsxs(Text, {
|
|
72
|
-
style: [styles.label, {
|
|
73
|
-
color: bloomTheme.colors.primary
|
|
74
|
-
}],
|
|
75
|
-
numberOfLines: 1,
|
|
76
|
-
children: ["Acting as ", displayName]
|
|
77
|
-
})
|
|
78
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
79
|
-
style: [styles.switchBackHint, {
|
|
80
|
-
borderColor: bloomTheme.colors.primary + '40'
|
|
81
|
-
}],
|
|
82
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
83
|
-
style: [styles.switchBackText, {
|
|
84
|
-
color: bloomTheme.colors.primary
|
|
85
|
-
}],
|
|
86
|
-
children: "Switch back"
|
|
87
|
-
})
|
|
88
|
-
})]
|
|
89
|
-
})
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
const styles = StyleSheet.create({
|
|
93
|
-
container: {
|
|
94
|
-
paddingHorizontal: 16,
|
|
95
|
-
paddingVertical: 10
|
|
96
|
-
},
|
|
97
|
-
content: {
|
|
98
|
-
flexDirection: 'row',
|
|
99
|
-
alignItems: 'center'
|
|
100
|
-
},
|
|
101
|
-
avatar: {
|
|
102
|
-
width: 24,
|
|
103
|
-
height: 24,
|
|
104
|
-
borderRadius: 12
|
|
105
|
-
},
|
|
106
|
-
avatarFallback: {
|
|
107
|
-
width: 24,
|
|
108
|
-
height: 24,
|
|
109
|
-
borderRadius: 12,
|
|
110
|
-
alignItems: 'center',
|
|
111
|
-
justifyContent: 'center'
|
|
112
|
-
},
|
|
113
|
-
avatarText: {
|
|
114
|
-
fontSize: 12,
|
|
115
|
-
fontWeight: Platform.OS === 'web' ? '600' : undefined
|
|
116
|
-
},
|
|
117
|
-
textContainer: {
|
|
118
|
-
flex: 1,
|
|
119
|
-
marginLeft: 10
|
|
120
|
-
},
|
|
121
|
-
label: {
|
|
122
|
-
fontSize: 14,
|
|
123
|
-
fontWeight: Platform.OS === 'web' ? '500' : undefined
|
|
124
|
-
},
|
|
125
|
-
switchBackHint: {
|
|
126
|
-
borderWidth: 1,
|
|
127
|
-
borderRadius: 12,
|
|
128
|
-
paddingHorizontal: 10,
|
|
129
|
-
paddingVertical: 4
|
|
130
|
-
},
|
|
131
|
-
switchBackText: {
|
|
132
|
-
fontSize: 12,
|
|
133
|
-
fontWeight: Platform.OS === 'web' ? '500' : undefined
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
export default /*#__PURE__*/React.memo(ActingAsBanner);
|
|
137
|
-
//# sourceMappingURL=ActingAsBanner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","View","Text","TouchableOpacity","StyleSheet","Platform","Image","useTheme","useOxy","getAccountDisplayName","jsx","_jsx","jsxs","_jsxs","ActingAsBanner","bloomTheme","actingAs","managedAccounts","setActingAs","showBottomSheet","oxyServices","activeAccount","length","managed","find","m","accountId","account","displayName","handlePress","handleLongPress","style","styles","container","backgroundColor","colors","primary","onPress","onLongPress","activeOpacity","accessibilityRole","accessibilityLabel","children","content","avatar","source","uri","getFileDownloadUrl","avatarFallback","avatarText","color","charAt","toUpperCase","textContainer","label","numberOfLines","switchBackHint","borderColor","switchBackText","create","paddingHorizontal","paddingVertical","flexDirection","alignItems","width","height","borderRadius","justifyContent","fontSize","fontWeight","OS","undefined","flex","marginLeft","borderWidth","memo"],"sourceRoot":"../../../../src","sources":["ui/components/ActingAsBanner.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useCallback","useRef","useEffect","View","Platform","ActivityIndicator","ScrollView","KeyboardAvoidingView","Ionicons","Header","useI18n","useTheme","H1","Text","Button","TextField","TextFieldInput","useOxy","toast","jsx","_jsx","jsxs","_jsxs","USERNAME_REGEX","DEBOUNCE_MS","USERNAME_MAX","DISPLAY_NAME_MAX","BIO_MAX","CreateManagedAccountScreen","onClose","goBack","bloomTheme","oxyServices","createManagedAccount","setActingAs","t","username","setUsername","displayName","setDisplayName","bio","setBio","usernameStatus","setUsernameStatus","usernameMessage","setUsernameMessage","isCreating","setIsCreating","debounceTimerRef","checkUsername","value","current","clearTimeout","length","test","setTimeout","result","checkUsernameAvailability","available","message","handleUsernameChange","cleaned","toLowerCase","replace","canCreate","trim","handleCreate","nameParts","split","firstName","lastName","slice","join","undefined","account","name","first","last","success","accountId","error","Error","usernameIsInvalid","statusColor","colors","negative","textSecondary","className","children","title","onBack","showBackButton","showCloseButton","elevation","behavior","OS","keyboardVerticalOffset","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","isInvalid","floatingLabel","label","onChangeText","autoCapitalize","autoCorrect","autoComplete","maxLength","size","color","primary","style","multiline","numberOfLines","textAlignVertical","variant","onPress","disabled","loading","accessibilityLabel"],"sourceRoot":"../../../../src","sources":["ui/screens/CreateManagedAccountScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ActingAsBanner.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/ActingAsBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;;AAgIvC,wBAA0C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CreateManagedAccountScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/CreateManagedAccountScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAkB3D,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4NzD,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ActingAsBanner.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/ActingAsBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;;AAgIvC,wBAA0C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CreateManagedAccountScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/CreateManagedAccountScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAkB3D,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4NzD,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
View,
|
|
4
|
-
Text,
|
|
5
|
-
TouchableOpacity,
|
|
6
|
-
StyleSheet,
|
|
7
|
-
Platform,
|
|
8
|
-
Image,
|
|
9
|
-
} from 'react-native';
|
|
10
|
-
import { useTheme } from '@oxyhq/bloom/theme';
|
|
11
|
-
import { useOxy } from '../context/OxyContext';
|
|
12
|
-
import { getAccountDisplayName } from '@oxyhq/core';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* ActingAsBanner - Shows a subtle banner when the user is acting as a managed account.
|
|
16
|
-
*
|
|
17
|
-
* - Tap to open the ManageAccount screen (account switcher lives in AccountMenu).
|
|
18
|
-
* - Long-press to switch back to the primary account immediately.
|
|
19
|
-
*
|
|
20
|
-
* Place this component in your app's layout where you want the banner to appear
|
|
21
|
-
* (typically at the top of the screen or below the header).
|
|
22
|
-
*/
|
|
23
|
-
const ActingAsBanner: React.FC = () => {
|
|
24
|
-
const bloomTheme = useTheme();
|
|
25
|
-
const { actingAs, managedAccounts, setActingAs, showBottomSheet, oxyServices } = useOxy();
|
|
26
|
-
|
|
27
|
-
const activeAccount = useMemo(() => {
|
|
28
|
-
if (!actingAs || !managedAccounts.length) return null;
|
|
29
|
-
const managed = managedAccounts.find((m) => m.accountId === actingAs);
|
|
30
|
-
return managed?.account ?? null;
|
|
31
|
-
}, [actingAs, managedAccounts]);
|
|
32
|
-
|
|
33
|
-
if (!actingAs || !activeAccount) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const displayName = getAccountDisplayName(activeAccount);
|
|
38
|
-
|
|
39
|
-
const handlePress = () => {
|
|
40
|
-
showBottomSheet?.('ManageAccount');
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
const handleLongPress = () => {
|
|
44
|
-
setActingAs(null);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
return (
|
|
48
|
-
<TouchableOpacity
|
|
49
|
-
style={[styles.container, { backgroundColor: bloomTheme.colors.primary + '14' }]}
|
|
50
|
-
onPress={handlePress}
|
|
51
|
-
onLongPress={handleLongPress}
|
|
52
|
-
activeOpacity={0.7}
|
|
53
|
-
accessibilityRole="button"
|
|
54
|
-
accessibilityLabel={`Acting as ${displayName}. Tap to switch accounts, long press to switch back.`}
|
|
55
|
-
>
|
|
56
|
-
<View style={styles.content}>
|
|
57
|
-
{activeAccount.avatar ? (
|
|
58
|
-
<Image
|
|
59
|
-
source={{ uri: oxyServices.getFileDownloadUrl(activeAccount.avatar, 'thumb') }}
|
|
60
|
-
style={styles.avatar}
|
|
61
|
-
/>
|
|
62
|
-
) : (
|
|
63
|
-
<View style={[styles.avatarFallback, { backgroundColor: bloomTheme.colors.primary + '30' }]}>
|
|
64
|
-
<Text style={[styles.avatarText, { color: bloomTheme.colors.primary }]}>
|
|
65
|
-
{displayName.charAt(0).toUpperCase()}
|
|
66
|
-
</Text>
|
|
67
|
-
</View>
|
|
68
|
-
)}
|
|
69
|
-
<View style={styles.textContainer}>
|
|
70
|
-
<Text style={[styles.label, { color: bloomTheme.colors.primary }]} numberOfLines={1}>
|
|
71
|
-
Acting as {displayName}
|
|
72
|
-
</Text>
|
|
73
|
-
</View>
|
|
74
|
-
<View style={[styles.switchBackHint, { borderColor: bloomTheme.colors.primary + '40' }]}>
|
|
75
|
-
<Text style={[styles.switchBackText, { color: bloomTheme.colors.primary }]}>
|
|
76
|
-
Switch back
|
|
77
|
-
</Text>
|
|
78
|
-
</View>
|
|
79
|
-
</View>
|
|
80
|
-
</TouchableOpacity>
|
|
81
|
-
);
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
const styles = StyleSheet.create({
|
|
85
|
-
container: {
|
|
86
|
-
paddingHorizontal: 16,
|
|
87
|
-
paddingVertical: 10,
|
|
88
|
-
},
|
|
89
|
-
content: {
|
|
90
|
-
flexDirection: 'row',
|
|
91
|
-
alignItems: 'center',
|
|
92
|
-
},
|
|
93
|
-
avatar: {
|
|
94
|
-
width: 24,
|
|
95
|
-
height: 24,
|
|
96
|
-
borderRadius: 12,
|
|
97
|
-
},
|
|
98
|
-
avatarFallback: {
|
|
99
|
-
width: 24,
|
|
100
|
-
height: 24,
|
|
101
|
-
borderRadius: 12,
|
|
102
|
-
alignItems: 'center',
|
|
103
|
-
justifyContent: 'center',
|
|
104
|
-
},
|
|
105
|
-
avatarText: {
|
|
106
|
-
fontSize: 12,
|
|
107
|
-
fontWeight: Platform.OS === 'web' ? '600' : undefined,
|
|
108
|
-
},
|
|
109
|
-
textContainer: {
|
|
110
|
-
flex: 1,
|
|
111
|
-
marginLeft: 10,
|
|
112
|
-
},
|
|
113
|
-
label: {
|
|
114
|
-
fontSize: 14,
|
|
115
|
-
fontWeight: Platform.OS === 'web' ? '500' : undefined,
|
|
116
|
-
},
|
|
117
|
-
switchBackHint: {
|
|
118
|
-
borderWidth: 1,
|
|
119
|
-
borderRadius: 12,
|
|
120
|
-
paddingHorizontal: 10,
|
|
121
|
-
paddingVertical: 4,
|
|
122
|
-
},
|
|
123
|
-
switchBackText: {
|
|
124
|
-
fontSize: 12,
|
|
125
|
-
fontWeight: Platform.OS === 'web' ? '500' : undefined,
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
export default React.memo(ActingAsBanner);
|