@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.
- package/lib/commonjs/index.js +9 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/components/ActingAsBanner.js +143 -0
- package/lib/commonjs/ui/components/ActingAsBanner.js.map +1 -0
- package/lib/commonjs/ui/context/OxyContext.js +78 -3
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +3 -2
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +21 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +235 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +346 -0
- package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -0
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/components/ActingAsBanner.js +140 -0
- package/lib/module/ui/components/ActingAsBanner.js.map +1 -0
- package/lib/module/ui/context/OxyContext.js +78 -3
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +3 -2
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +21 -1
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +235 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/CreateManagedAccountScreen.js +342 -0
- package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +1 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts +4 -0
- package/lib/typescript/commonjs/ui/components/ActingAsBanner.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +6 -0
- package/lib/typescript/commonjs/ui/context/OxyContext.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/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts +5 -0
- package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +1 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ActingAsBanner.d.ts +4 -0
- package/lib/typescript/module/ui/components/ActingAsBanner.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/OxyContext.d.ts +6 -0
- package/lib/typescript/module/ui/context/OxyContext.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/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts +5 -0
- package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/ui/components/ActingAsBanner.tsx +135 -0
- package/src/ui/context/OxyContext.tsx +85 -0
- package/src/ui/navigation/routes.ts +3 -1
- package/src/ui/screens/AccountCenterScreen.tsx +21 -1
- package/src/ui/screens/AccountSwitcherScreen.tsx +209 -0
- 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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
package/lib/module/index.js.map
CHANGED
|
@@ -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
|
-
|
|
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);
|