@oxyhq/services 6.9.43 → 6.9.44

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.
Files changed (60) hide show
  1. package/lib/commonjs/index.js +9 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/components/ActingAsBanner.js +143 -0
  4. package/lib/commonjs/ui/components/ActingAsBanner.js.map +1 -0
  5. package/lib/commonjs/ui/context/OxyContext.js +78 -3
  6. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  7. package/lib/commonjs/ui/navigation/routes.js +3 -2
  8. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  9. package/lib/commonjs/ui/screens/AccountCenterScreen.js +21 -1
  10. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  11. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +235 -1
  12. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  13. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +346 -0
  14. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -0
  15. package/lib/module/index.js +3 -0
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/ui/components/ActingAsBanner.js +140 -0
  18. package/lib/module/ui/components/ActingAsBanner.js.map +1 -0
  19. package/lib/module/ui/context/OxyContext.js +78 -3
  20. package/lib/module/ui/context/OxyContext.js.map +1 -1
  21. package/lib/module/ui/navigation/routes.js +3 -2
  22. package/lib/module/ui/navigation/routes.js.map +1 -1
  23. package/lib/module/ui/screens/AccountCenterScreen.js +21 -1
  24. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  25. package/lib/module/ui/screens/AccountSwitcherScreen.js +235 -1
  26. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  27. package/lib/module/ui/screens/CreateManagedAccountScreen.js +342 -0
  28. package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -0
  29. package/lib/typescript/commonjs/index.d.ts +1 -0
  30. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts +4 -0
  32. package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts.map +1 -0
  33. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +6 -0
  34. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  36. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts +5 -0
  40. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -0
  41. package/lib/typescript/module/index.d.ts +1 -0
  42. package/lib/typescript/module/index.d.ts.map +1 -1
  43. package/lib/typescript/module/ui/components/ActingAsBanner.d.ts +4 -0
  44. package/lib/typescript/module/ui/components/ActingAsBanner.d.ts.map +1 -0
  45. package/lib/typescript/module/ui/context/OxyContext.d.ts +6 -0
  46. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  47. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  48. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  49. package/lib/typescript/module/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  50. package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  51. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts +5 -0
  52. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -0
  53. package/package.json +1 -1
  54. package/src/index.ts +3 -0
  55. package/src/ui/components/ActingAsBanner.tsx +135 -0
  56. package/src/ui/context/OxyContext.tsx +85 -0
  57. package/src/ui/navigation/routes.ts +3 -1
  58. package/src/ui/screens/AccountCenterScreen.tsx +21 -1
  59. package/src/ui/screens/AccountSwitcherScreen.tsx +209 -0
  60. package/src/ui/screens/CreateManagedAccountScreen.tsx +338 -0
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _fonts = require("../styles/fonts.js");
10
+ var _index = require("../components/index.js");
11
+ var _useI18n = require("../hooks/useI18n.js");
12
+ var _theme = require("@oxyhq/bloom/theme");
13
+ var _OxyContext = require("../context/OxyContext.js");
14
+ var _sonner = require("../../lib/sonner");
15
+ var _spacing = require("../constants/spacing.js");
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+ const USERNAME_REGEX = /^[a-zA-Z0-9_-]{3,30}$/;
18
+ const DEBOUNCE_MS = 400;
19
+ const CreateManagedAccountScreen = ({
20
+ onClose,
21
+ goBack
22
+ }) => {
23
+ const bloomTheme = (0, _theme.useTheme)();
24
+ const {
25
+ oxyServices,
26
+ createManagedAccount,
27
+ setActingAs
28
+ } = (0, _OxyContext.useOxy)();
29
+ const {
30
+ t
31
+ } = (0, _useI18n.useI18n)();
32
+ const [username, setUsername] = (0, _react.useState)('');
33
+ const [displayName, setDisplayName] = (0, _react.useState)('');
34
+ const [bio, setBio] = (0, _react.useState)('');
35
+ const [usernameStatus, setUsernameStatus] = (0, _react.useState)('idle');
36
+ const [usernameMessage, setUsernameMessage] = (0, _react.useState)('');
37
+ const [isCreating, setIsCreating] = (0, _react.useState)(false);
38
+ const debounceTimerRef = (0, _react.useRef)(null);
39
+
40
+ // Debounced username availability check
41
+ const checkUsername = (0, _react.useCallback)(value => {
42
+ if (debounceTimerRef.current) {
43
+ clearTimeout(debounceTimerRef.current);
44
+ }
45
+ if (!value || value.length < 3) {
46
+ setUsernameStatus(value.length > 0 ? 'invalid' : 'idle');
47
+ setUsernameMessage(value.length > 0 ? 'Username must be at least 3 characters' : '');
48
+ return;
49
+ }
50
+ if (!USERNAME_REGEX.test(value)) {
51
+ setUsernameStatus('invalid');
52
+ setUsernameMessage('Only letters, numbers, hyphens, and underscores');
53
+ return;
54
+ }
55
+ setUsernameStatus('checking');
56
+ setUsernameMessage('');
57
+ debounceTimerRef.current = setTimeout(async () => {
58
+ try {
59
+ const result = await oxyServices.checkUsernameAvailability(value);
60
+ setUsernameStatus(result.available ? 'available' : 'taken');
61
+ setUsernameMessage(result.message || (result.available ? 'Username is available' : 'Username is taken'));
62
+ } catch {
63
+ setUsernameStatus('idle');
64
+ setUsernameMessage('Could not check availability');
65
+ }
66
+ }, DEBOUNCE_MS);
67
+ }, [oxyServices]);
68
+ const handleUsernameChange = (0, _react.useCallback)(value => {
69
+ const cleaned = value.toLowerCase().replace(/[^a-z0-9_-]/g, '');
70
+ setUsername(cleaned);
71
+ checkUsername(cleaned);
72
+ }, [checkUsername]);
73
+
74
+ // Cleanup debounce timer
75
+ (0, _react.useEffect)(() => {
76
+ return () => {
77
+ if (debounceTimerRef.current) {
78
+ clearTimeout(debounceTimerRef.current);
79
+ }
80
+ };
81
+ }, []);
82
+ const canCreate = usernameStatus === 'available' && displayName.trim().length > 0 && !isCreating;
83
+ const handleCreate = (0, _react.useCallback)(async () => {
84
+ if (!canCreate) return;
85
+ setIsCreating(true);
86
+ try {
87
+ // Split display name into first/last
88
+ const nameParts = displayName.trim().split(/\s+/);
89
+ const firstName = nameParts[0] || '';
90
+ const lastName = nameParts.length > 1 ? nameParts.slice(1).join(' ') : undefined;
91
+ const account = await createManagedAccount({
92
+ username,
93
+ name: {
94
+ first: firstName,
95
+ last: lastName
96
+ },
97
+ bio: bio.trim() || undefined
98
+ });
99
+ _sonner.toast.success('Identity created successfully');
100
+
101
+ // Switch to the new managed account
102
+ if (account.accountId) {
103
+ setActingAs(account.accountId);
104
+ }
105
+ onClose?.();
106
+ } catch (error) {
107
+ const message = error instanceof Error ? error.message : 'Failed to create identity';
108
+ _sonner.toast.error(message);
109
+ } finally {
110
+ setIsCreating(false);
111
+ }
112
+ }, [canCreate, username, displayName, bio, createManagedAccount, setActingAs, onClose]);
113
+ const getStatusColor = () => {
114
+ switch (usernameStatus) {
115
+ case 'available':
116
+ return '#34C759';
117
+ case 'taken':
118
+ case 'invalid':
119
+ return bloomTheme.colors.error;
120
+ case 'checking':
121
+ return bloomTheme.colors.primary;
122
+ default:
123
+ return 'transparent';
124
+ }
125
+ };
126
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
127
+ style: [styles.container, {
128
+ backgroundColor: bloomTheme.colors.background
129
+ }],
130
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Header, {
131
+ title: "Create Identity",
132
+ onBack: goBack,
133
+ onClose: onClose,
134
+ showBackButton: true,
135
+ showCloseButton: true,
136
+ elevation: "subtle"
137
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.KeyboardAvoidingView, {
138
+ style: styles.flex,
139
+ behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : undefined,
140
+ keyboardVerticalOffset: _reactNative.Platform.OS === 'ios' ? 88 : 0,
141
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
142
+ style: styles.flex,
143
+ contentContainerStyle: _spacing.screenContentStyle,
144
+ keyboardShouldPersistTaps: "handled",
145
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
146
+ style: [styles.description, {
147
+ color: bloomTheme.colors.text
148
+ }],
149
+ children: "Create a managed identity that you control. It will have its own profile, posts, and interactions."
150
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
151
+ style: styles.fieldGroup,
152
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
153
+ style: [styles.label, {
154
+ color: bloomTheme.colors.text
155
+ }],
156
+ children: "Username"
157
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
158
+ style: [styles.inputContainer, {
159
+ borderColor: usernameStatus !== 'idle' ? getStatusColor() : bloomTheme.colors.border
160
+ }],
161
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
162
+ style: [styles.inputPrefix, {
163
+ color: bloomTheme.colors.text + '80'
164
+ }],
165
+ children: "@"
166
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
167
+ style: [styles.input, {
168
+ color: bloomTheme.colors.text
169
+ }],
170
+ value: username,
171
+ onChangeText: handleUsernameChange,
172
+ placeholder: "username",
173
+ placeholderTextColor: bloomTheme.colors.text + '40',
174
+ autoCapitalize: "none",
175
+ autoCorrect: false,
176
+ autoComplete: "off",
177
+ maxLength: 30
178
+ }), usernameStatus === 'checking' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
179
+ size: "small",
180
+ color: bloomTheme.colors.primary
181
+ }), usernameStatus === 'available' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
182
+ style: styles.statusIcon,
183
+ children: "OK"
184
+ })]
185
+ }), usernameMessage ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
186
+ style: [styles.statusMessage, {
187
+ color: getStatusColor()
188
+ }],
189
+ children: usernameMessage
190
+ }) : null]
191
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
192
+ style: styles.fieldGroup,
193
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
194
+ style: [styles.label, {
195
+ color: bloomTheme.colors.text
196
+ }],
197
+ children: "Display Name"
198
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
199
+ style: [styles.inputContainer, {
200
+ borderColor: bloomTheme.colors.border
201
+ }],
202
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
203
+ style: [styles.input, {
204
+ color: bloomTheme.colors.text
205
+ }],
206
+ value: displayName,
207
+ onChangeText: setDisplayName,
208
+ placeholder: "Display name",
209
+ placeholderTextColor: bloomTheme.colors.text + '40',
210
+ maxLength: 50
211
+ })
212
+ })]
213
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
214
+ style: styles.fieldGroup,
215
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
216
+ style: [styles.label, {
217
+ color: bloomTheme.colors.text
218
+ }],
219
+ children: "Bio (optional)"
220
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
221
+ style: [styles.inputContainer, styles.bioContainer, {
222
+ borderColor: bloomTheme.colors.border
223
+ }],
224
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
225
+ style: [styles.input, styles.bioInput, {
226
+ color: bloomTheme.colors.text
227
+ }],
228
+ value: bio,
229
+ onChangeText: setBio,
230
+ placeholder: "Tell people about this identity",
231
+ placeholderTextColor: bloomTheme.colors.text + '40',
232
+ maxLength: 160,
233
+ multiline: true,
234
+ numberOfLines: 3,
235
+ textAlignVertical: "top"
236
+ })
237
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
238
+ style: [styles.charCount, {
239
+ color: bloomTheme.colors.text + '60'
240
+ }],
241
+ children: [bio.length, "/160"]
242
+ })]
243
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
244
+ style: [styles.createButton, {
245
+ backgroundColor: bloomTheme.colors.primary
246
+ }, !canCreate && styles.createButtonDisabled],
247
+ onPress: handleCreate,
248
+ disabled: !canCreate,
249
+ activeOpacity: 0.7,
250
+ children: isCreating ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
251
+ size: "small",
252
+ color: "#fff"
253
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
254
+ style: styles.createButtonText,
255
+ children: "Create Identity"
256
+ })
257
+ })]
258
+ })
259
+ })]
260
+ });
261
+ };
262
+ const styles = _reactNative.StyleSheet.create({
263
+ container: {
264
+ flex: 1
265
+ },
266
+ flex: {
267
+ flex: 1
268
+ },
269
+ description: {
270
+ fontSize: 15,
271
+ lineHeight: 22,
272
+ marginBottom: 24,
273
+ fontFamily: _fonts.fontFamilies.inter
274
+ },
275
+ fieldGroup: {
276
+ marginBottom: 20
277
+ },
278
+ label: {
279
+ fontSize: 14,
280
+ fontFamily: _fonts.fontFamilies.interSemiBold,
281
+ fontWeight: _reactNative.Platform.OS === 'web' ? '600' : undefined,
282
+ marginBottom: 8
283
+ },
284
+ inputContainer: {
285
+ flexDirection: 'row',
286
+ alignItems: 'center',
287
+ borderWidth: 1,
288
+ borderRadius: 12,
289
+ paddingHorizontal: 14,
290
+ height: 48
291
+ },
292
+ inputPrefix: {
293
+ fontSize: 16,
294
+ fontFamily: _fonts.fontFamilies.inter,
295
+ marginRight: 2
296
+ },
297
+ input: {
298
+ flex: 1,
299
+ fontSize: 16,
300
+ fontFamily: _fonts.fontFamilies.inter,
301
+ paddingVertical: 0
302
+ },
303
+ bioContainer: {
304
+ height: 88,
305
+ alignItems: 'flex-start',
306
+ paddingVertical: 12
307
+ },
308
+ bioInput: {
309
+ height: 64
310
+ },
311
+ statusIcon: {
312
+ fontSize: 13,
313
+ fontFamily: _fonts.fontFamilies.interSemiBold,
314
+ fontWeight: _reactNative.Platform.OS === 'web' ? '600' : undefined,
315
+ color: '#34C759'
316
+ },
317
+ statusMessage: {
318
+ fontSize: 13,
319
+ fontFamily: _fonts.fontFamilies.inter,
320
+ marginTop: 6
321
+ },
322
+ charCount: {
323
+ fontSize: 12,
324
+ fontFamily: _fonts.fontFamilies.inter,
325
+ textAlign: 'right',
326
+ marginTop: 4
327
+ },
328
+ createButton: {
329
+ height: 50,
330
+ borderRadius: 25,
331
+ alignItems: 'center',
332
+ justifyContent: 'center',
333
+ marginTop: 12
334
+ },
335
+ createButtonDisabled: {
336
+ opacity: 0.5
337
+ },
338
+ createButtonText: {
339
+ color: '#fff',
340
+ fontSize: 16,
341
+ fontFamily: _fonts.fontFamilies.interSemiBold,
342
+ fontWeight: _reactNative.Platform.OS === 'web' ? '600' : undefined
343
+ }
344
+ });
345
+ var _default = exports.default = CreateManagedAccountScreen;
346
+ //# sourceMappingURL=CreateManagedAccountScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_fonts","_index","_useI18n","_theme","_OxyContext","_sonner","_spacing","_jsxRuntime","USERNAME_REGEX","DEBOUNCE_MS","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","getStatusColor","colors","primary","jsxs","View","style","styles","container","backgroundColor","background","children","jsx","Header","title","onBack","showBackButton","showCloseButton","elevation","KeyboardAvoidingView","flex","behavior","Platform","OS","keyboardVerticalOffset","ScrollView","contentContainerStyle","screenContentStyle","keyboardShouldPersistTaps","Text","description","color","text","fieldGroup","label","inputContainer","borderColor","border","inputPrefix","TextInput","input","onChangeText","placeholder","placeholderTextColor","autoCapitalize","autoCorrect","autoComplete","maxLength","ActivityIndicator","size","statusIcon","statusMessage","bioContainer","bioInput","multiline","numberOfLines","textAlignVertical","charCount","TouchableOpacity","createButton","createButtonDisabled","onPress","disabled","activeOpacity","createButtonText","StyleSheet","create","fontSize","lineHeight","marginBottom","fontFamily","fontFamilies","inter","interSemiBold","fontWeight","flexDirection","alignItems","borderWidth","borderRadius","paddingHorizontal","height","marginRight","paddingVertical","marginTop","textAlign","justifyContent","opacity","_default","exports","default"],"sourceRoot":"../../../../src","sources":["ui/screens/CreateManagedAccountScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -61,6 +61,9 @@ export { default as Avatar } from "./ui/components/Avatar.js";
61
61
  export { OxySignInButton } from "./ui/components/OxySignInButton.js";
62
62
  export { OxyLogo, FollowButton } from "./ui/index.js";
63
63
 
64
+ // Acting-as banner for managed accounts
65
+ export { default as ActingAsBanner } from "./ui/components/ActingAsBanner.js";
66
+
64
67
  // Bottom sheet navigation
65
68
  export { showBottomSheet, closeBottomSheet } from "./ui/navigation/bottomSheetManager.js";
66
69
  // Sign-in modal
@@ -1 +1 @@
1
- {"version":3,"names":["setPlatformOS","Platform","OS","useOxy","useAuth","default","OxyProvider","FontLoader","useAuthStore","useAssetStore","useAssets","useAssetsStore","useAsset","useUploadProgress","useAssetLoading","useAssetErrors","useAssetsByApp","useAssetsByEntity","useAssetUsageCount","useIsAssetLinked","useSessionSocket","setOxyAssetInstance","useFileDownloadUrl","setOxyFileUrlInstance","useFollow","useFollowerCounts","useUserProfile","useUserProfiles","useCurrentUser","useUserById","useUserByUsername","useUsersBySessions","usePrivacySettings","useSessions","useSession","useDeviceSessions","useUserDevices","useSecurityInfo","useSecurityActivity","useRecentSecurityActivity","useUpdateProfile","useUploadAvatar","useUpdateAccountSettings","useUpdatePrivacySettings","useUploadFile","useSwitchSession","useLogoutSession","useLogoutAll","useUpdateDeviceName","useRemoveDevice","createProfileMutation","createGenericMutation","handleAuthError","isInvalidSessionError","isTimeoutOrNetworkError","extractErrorMessage","useFileFiltering","Avatar","OxySignInButton","OxyLogo","FollowButton","showBottomSheet","closeBottomSheet","showSignInModal","hideSignInModal","toast"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,aAAa,QAAyB,aAAa;AAC5D,SAASC,QAAQ,QAAQ,cAAc;AACvCD,aAAa,CAACC,QAAQ,CAACC,EAAgB,CAAC;;AAExC;;AAEA;AACA,SAASC,MAAM,QAAQ,4BAAyB;AAChD,SAASC,OAAO,QAAQ,uBAAoB;AAG5C;AACA,SAASC,OAAO,IAAIC,WAAW,QAAQ,gCAA6B;;AAEpE;AACA,SAASC,UAAU,QAAQ,+BAA4B;;AAEvD;AACA,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SACEC,aAAa,EACbC,SAAS,IAAIC,cAAc,EAC3BC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB,EAClBC,gBAAgB,QACX,2BAAwB;;AAE/B;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAC9D,SAASV,SAAS,EAAEW,mBAAmB,QAAQ,yBAAsB;AACrE,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,kCAA+B;AACzF,SAASC,SAAS,EAAEC,iBAAiB,QAAQ,yBAAsB;;AAEnE;AACA,SACEC,cAAc,EAAEC,eAAe,EAAEC,cAAc,EAC/CC,WAAW,EAAEC,iBAAiB,EAAEC,kBAAkB,EAClDC,kBAAkB,EAAEC,WAAW,EAAEC,UAAU,EAC3CC,iBAAiB,EAAEC,cAAc,EAAEC,eAAe,EAClDC,mBAAmB,EAAEC,yBAAyB,QACzC,6BAAoB;;AAE3B;AACA,SACEC,gBAAgB,EAAEC,eAAe,EAAEC,wBAAwB,EAC3DC,wBAAwB,EAAEC,aAAa,EAAEC,gBAAgB,EACzDC,gBAAgB,EAAEC,YAAY,EAAEC,mBAAmB,EAAEC,eAAe,QAC/D,+BAAsB;AAE7B,SACEC,qBAAqB,EAAEC,qBAAqB,QACvC,yCAAsC;AAK7C;AACA,SACEC,eAAe,EAAEC,qBAAqB,EACtCC,uBAAuB,EAAEC,mBAAmB,QACvC,6BAA0B;AAGjC;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAG9D;AACA,SAASnD,OAAO,IAAIoD,MAAM,QAAQ,2BAAwB;AAE1D,SAASC,eAAe,QAAQ,oCAAiC;AACjE,SAASC,OAAO,EAAEC,YAAY,QAAQ,eAAM;;AAE5C;AACA,SAASC,eAAe,EAAEC,gBAAgB,QAAQ,uCAAoC;AAGtF;AACA,SAASC,eAAe,EAAEC,eAAe,QAAQ,gCAA6B;;AAE9E;AACA,SAASC,KAAK,QAAQ,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["setPlatformOS","Platform","OS","useOxy","useAuth","default","OxyProvider","FontLoader","useAuthStore","useAssetStore","useAssets","useAssetsStore","useAsset","useUploadProgress","useAssetLoading","useAssetErrors","useAssetsByApp","useAssetsByEntity","useAssetUsageCount","useIsAssetLinked","useSessionSocket","setOxyAssetInstance","useFileDownloadUrl","setOxyFileUrlInstance","useFollow","useFollowerCounts","useUserProfile","useUserProfiles","useCurrentUser","useUserById","useUserByUsername","useUsersBySessions","usePrivacySettings","useSessions","useSession","useDeviceSessions","useUserDevices","useSecurityInfo","useSecurityActivity","useRecentSecurityActivity","useUpdateProfile","useUploadAvatar","useUpdateAccountSettings","useUpdatePrivacySettings","useUploadFile","useSwitchSession","useLogoutSession","useLogoutAll","useUpdateDeviceName","useRemoveDevice","createProfileMutation","createGenericMutation","handleAuthError","isInvalidSessionError","isTimeoutOrNetworkError","extractErrorMessage","useFileFiltering","Avatar","OxySignInButton","OxyLogo","FollowButton","ActingAsBanner","showBottomSheet","closeBottomSheet","showSignInModal","hideSignInModal","toast"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,aAAa,QAAyB,aAAa;AAC5D,SAASC,QAAQ,QAAQ,cAAc;AACvCD,aAAa,CAACC,QAAQ,CAACC,EAAgB,CAAC;;AAExC;;AAEA;AACA,SAASC,MAAM,QAAQ,4BAAyB;AAChD,SAASC,OAAO,QAAQ,uBAAoB;AAG5C;AACA,SAASC,OAAO,IAAIC,WAAW,QAAQ,gCAA6B;;AAEpE;AACA,SAASC,UAAU,QAAQ,+BAA4B;;AAEvD;AACA,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SACEC,aAAa,EACbC,SAAS,IAAIC,cAAc,EAC3BC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB,EAClBC,gBAAgB,QACX,2BAAwB;;AAE/B;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAC9D,SAASV,SAAS,EAAEW,mBAAmB,QAAQ,yBAAsB;AACrE,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,kCAA+B;AACzF,SAASC,SAAS,EAAEC,iBAAiB,QAAQ,yBAAsB;;AAEnE;AACA,SACEC,cAAc,EAAEC,eAAe,EAAEC,cAAc,EAC/CC,WAAW,EAAEC,iBAAiB,EAAEC,kBAAkB,EAClDC,kBAAkB,EAAEC,WAAW,EAAEC,UAAU,EAC3CC,iBAAiB,EAAEC,cAAc,EAAEC,eAAe,EAClDC,mBAAmB,EAAEC,yBAAyB,QACzC,6BAAoB;;AAE3B;AACA,SACEC,gBAAgB,EAAEC,eAAe,EAAEC,wBAAwB,EAC3DC,wBAAwB,EAAEC,aAAa,EAAEC,gBAAgB,EACzDC,gBAAgB,EAAEC,YAAY,EAAEC,mBAAmB,EAAEC,eAAe,QAC/D,+BAAsB;AAE7B,SACEC,qBAAqB,EAAEC,qBAAqB,QACvC,yCAAsC;AAK7C;AACA,SACEC,eAAe,EAAEC,qBAAqB,EACtCC,uBAAuB,EAAEC,mBAAmB,QACvC,6BAA0B;AAGjC;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAG9D;AACA,SAASnD,OAAO,IAAIoD,MAAM,QAAQ,2BAAwB;AAE1D,SAASC,eAAe,QAAQ,oCAAiC;AACjE,SAASC,OAAO,EAAEC,YAAY,QAAQ,eAAM;;AAE5C;AACA,SAASvD,OAAO,IAAIwD,cAAc,QAAQ,mCAAgC;;AAE1E;AACA,SAASC,eAAe,EAAEC,gBAAgB,QAAQ,uCAAoC;AAGtF;AACA,SAASC,eAAe,EAAEC,eAAe,QAAQ,gCAA6B;;AAE9E;AACA,SAASC,KAAK,QAAQ,cAAc","ignoreList":[]}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo } from 'react';
4
+ import { View, Text, TouchableOpacity, StyleSheet, Platform, Image } from 'react-native';
5
+ import { fontFamilies } from "../styles/fonts.js";
6
+ import { useTheme } from '@oxyhq/bloom/theme';
7
+ import { useOxy } from "../context/OxyContext.js";
8
+
9
+ /**
10
+ * ActingAsBanner - Shows a subtle banner when the user is acting as a managed account.
11
+ *
12
+ * - Tap to open the AccountSwitcher screen.
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 = typeof activeAccount.name === 'object' ? activeAccount.name.full || activeAccount.name.first || activeAccount.username : activeAccount.name || activeAccount.username;
37
+ const handlePress = () => {
38
+ showBottomSheet?.('AccountSwitcher');
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
+ fontFamily: fontFamilies.interSemiBold,
116
+ fontWeight: Platform.OS === 'web' ? '600' : undefined
117
+ },
118
+ textContainer: {
119
+ flex: 1,
120
+ marginLeft: 10
121
+ },
122
+ label: {
123
+ fontSize: 14,
124
+ fontFamily: fontFamilies.interMedium,
125
+ fontWeight: Platform.OS === 'web' ? '500' : undefined
126
+ },
127
+ switchBackHint: {
128
+ borderWidth: 1,
129
+ borderRadius: 12,
130
+ paddingHorizontal: 10,
131
+ paddingVertical: 4
132
+ },
133
+ switchBackText: {
134
+ fontSize: 12,
135
+ fontFamily: fontFamilies.interMedium,
136
+ fontWeight: Platform.OS === 'web' ? '500' : undefined
137
+ }
138
+ });
139
+ export default /*#__PURE__*/React.memo(ActingAsBanner);
140
+ //# sourceMappingURL=ActingAsBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","View","Text","TouchableOpacity","StyleSheet","Platform","Image","fontFamilies","useTheme","useOxy","jsx","_jsx","jsxs","_jsxs","ActingAsBanner","bloomTheme","actingAs","managedAccounts","setActingAs","showBottomSheet","oxyServices","activeAccount","length","managed","find","m","accountId","account","displayName","name","full","first","username","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","fontFamily","interSemiBold","fontWeight","OS","undefined","flex","marginLeft","interMedium","borderWidth","memo"],"sourceRoot":"../../../../src","sources":["ui/components/ActingAsBanner.tsx"],"mappings":"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","ignoreList":[]}
@@ -514,6 +514,71 @@ export const OxyProvider = ({
514
514
  queryClient,
515
515
  showBottomSheet: showBottomSheetForContext
516
516
  });
517
+
518
+ // --- Managed accounts state ---
519
+ const [actingAs, setActingAsState] = useState(null);
520
+ const [managedAccounts, setManagedAccounts] = useState([]);
521
+
522
+ // Restore actingAs from storage on startup
523
+ useEffect(() => {
524
+ if (!storage || !initialized) return;
525
+ let mounted = true;
526
+ (async () => {
527
+ try {
528
+ const stored = await storage.getItem(`${storageKeyPrefix}_acting_as`);
529
+ if (mounted && stored) {
530
+ setActingAsState(stored);
531
+ oxyServices.setActingAs(stored);
532
+ }
533
+ } catch (err) {
534
+ if (__DEV__) {
535
+ loggerUtil.debug('Failed to restore actingAs from storage', {
536
+ component: 'OxyContext'
537
+ }, err);
538
+ }
539
+ }
540
+ })();
541
+ return () => {
542
+ mounted = false;
543
+ };
544
+ }, [storage, initialized, storageKeyPrefix, oxyServices]);
545
+
546
+ // Load managed accounts when authenticated
547
+ const refreshManagedAccounts = useCallback(async () => {
548
+ if (!isAuthenticated) return;
549
+ try {
550
+ const accounts = await oxyServices.getManagedAccounts();
551
+ setManagedAccounts(accounts);
552
+ } catch (err) {
553
+ if (__DEV__) {
554
+ loggerUtil.debug('Failed to load managed accounts', {
555
+ component: 'OxyContext'
556
+ }, err);
557
+ }
558
+ }
559
+ }, [isAuthenticated, oxyServices]);
560
+ useEffect(() => {
561
+ if (isAuthenticated && initialized && tokenReady) {
562
+ refreshManagedAccounts();
563
+ }
564
+ }, [isAuthenticated, initialized, tokenReady, refreshManagedAccounts]);
565
+ const setActingAs = useCallback(userId => {
566
+ oxyServices.setActingAs(userId);
567
+ setActingAsState(userId);
568
+ // Persist to storage
569
+ if (storage) {
570
+ if (userId) {
571
+ storage.setItem(`${storageKeyPrefix}_acting_as`, userId).catch(() => {});
572
+ } else {
573
+ storage.removeItem(`${storageKeyPrefix}_acting_as`).catch(() => {});
574
+ }
575
+ }
576
+ }, [oxyServices, storage, storageKeyPrefix]);
577
+ const createManagedAccountFn = useCallback(async data => {
578
+ const account = await oxyServices.createManagedAccount(data);
579
+ await refreshManagedAccounts();
580
+ return account;
581
+ }, [oxyServices, refreshManagedAccounts]);
517
582
  const contextValue = useMemo(() => ({
518
583
  user,
519
584
  sessions,
@@ -546,8 +611,13 @@ export const OxyProvider = ({
546
611
  oxyServices,
547
612
  useFollow: useFollowHook,
548
613
  showBottomSheet: showBottomSheetForContext,
549
- openAvatarPicker
550
- }), [activeSessionId, signIn, handleWebSSOSession, currentLanguage, currentLanguageMetadata, currentLanguageName, currentNativeLanguageName, error, getDeviceSessions, getPublicKey, hasIdentity, isAuthenticated, isLoading, logout, logoutAll, logoutAllDeviceSessions, oxyServices, storageKeyPrefix, refreshSessionsWithUser, sessions, setLanguage, storage, switchSessionForContext, tokenReady, updateDeviceName, clearAllAccountData, useFollowHook, user, showBottomSheetForContext, openAvatarPicker]);
614
+ openAvatarPicker,
615
+ actingAs,
616
+ managedAccounts,
617
+ setActingAs,
618
+ refreshManagedAccounts,
619
+ createManagedAccount: createManagedAccountFn
620
+ }), [activeSessionId, signIn, handleWebSSOSession, currentLanguage, currentLanguageMetadata, currentLanguageName, currentNativeLanguageName, error, getDeviceSessions, getPublicKey, hasIdentity, isAuthenticated, isLoading, logout, logoutAll, logoutAllDeviceSessions, oxyServices, storageKeyPrefix, refreshSessionsWithUser, sessions, setLanguage, storage, switchSessionForContext, tokenReady, updateDeviceName, clearAllAccountData, useFollowHook, user, showBottomSheetForContext, openAvatarPicker, actingAs, managedAccounts, setActingAs, refreshManagedAccounts, createManagedAccountFn]);
551
621
  return /*#__PURE__*/_jsx(OxyContext.Provider, {
552
622
  value: contextValue,
553
623
  children: children
@@ -585,7 +655,12 @@ const LOADING_STATE = {
585
655
  clearAllAccountData: noop,
586
656
  storageKeyPrefix: 'oxy_session',
587
657
  oxyServices: null,
588
- openAvatarPicker: () => {}
658
+ openAvatarPicker: () => {},
659
+ actingAs: null,
660
+ managedAccounts: [],
661
+ setActingAs: () => {},
662
+ refreshManagedAccounts: noop,
663
+ createManagedAccount: noop
589
664
  };
590
665
  export const useOxy = () => {
591
666
  const context = useContext(OxyContext);