@oxyhq/services 12.2.0 → 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 +56 -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/context/OxyContext.js +64 -27
- package/lib/commonjs/ui/context/OxyContext.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/module/index.js +16 -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/context/OxyContext.js +64 -27
- package/lib/module/ui/context/OxyContext.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/typescript/commonjs/index.d.ts +7 -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/context/OxyContext.d.ts +33 -5
- package/lib/typescript/commonjs/ui/context/OxyContext.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/module/index.d.ts +7 -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/context/OxyContext.d.ts +33 -5
- package/lib/typescript/module/ui/context/OxyContext.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/package.json +3 -3
- package/src/index.ts +18 -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/context/OxyContext.tsx +113 -35
- 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/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
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
4
|
+
import { View, ScrollView, ActivityIndicator, Platform, KeyboardAvoidingView } from 'react-native';
|
|
5
|
+
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
6
|
+
import { toast, Dialog, useDialogControl } from '@oxyhq/bloom';
|
|
7
|
+
import { useTheme } from '@oxyhq/bloom/theme';
|
|
8
|
+
import { H1, Text } from '@oxyhq/bloom/typography';
|
|
9
|
+
import { Button } from '@oxyhq/bloom/button';
|
|
10
|
+
import { TextField, TextFieldInput } from '@oxyhq/bloom/text-field';
|
|
11
|
+
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
12
|
+
import Header from "../components/Header.js";
|
|
13
|
+
import { SettingsIcon } from "../components/SettingsIcon.js";
|
|
14
|
+
import { useOxy } from "../context/OxyContext.js";
|
|
15
|
+
import { useI18n } from "../hooks/useI18n.js";
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
|
+
const DISPLAY_NAME_MAX = 50;
|
|
18
|
+
const BIO_MAX = 160;
|
|
19
|
+
const errorMessage = (error, fallback) => error instanceof Error && error.message ? error.message : fallback;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Per-account settings: edit the account's profile, jump to member management,
|
|
23
|
+
* and archive the account (danger zone). Receives the target `accountId` via
|
|
24
|
+
* navigation props. Self-surface for the caller's own personal account lives in
|
|
25
|
+
* {@link ManageAccountScreen}; this screen manages a non-personal account in the
|
|
26
|
+
* graph.
|
|
27
|
+
*/
|
|
28
|
+
const AccountSettingsScreen = ({
|
|
29
|
+
onClose,
|
|
30
|
+
goBack,
|
|
31
|
+
navigate,
|
|
32
|
+
accountId
|
|
33
|
+
}) => {
|
|
34
|
+
const bloomTheme = useTheme();
|
|
35
|
+
const colors = bloomTheme.colors;
|
|
36
|
+
const {
|
|
37
|
+
t
|
|
38
|
+
} = useI18n();
|
|
39
|
+
const {
|
|
40
|
+
oxyServices,
|
|
41
|
+
canUsePrivateApi,
|
|
42
|
+
actingAs,
|
|
43
|
+
setActingAs
|
|
44
|
+
} = useOxy();
|
|
45
|
+
const queryClient = useQueryClient();
|
|
46
|
+
const id = typeof accountId === 'string' ? accountId : '';
|
|
47
|
+
const accountQuery = useQuery({
|
|
48
|
+
queryKey: ['accounts', 'detail', id],
|
|
49
|
+
queryFn: () => oxyServices.getAccount(id),
|
|
50
|
+
enabled: canUsePrivateApi && id.length > 0
|
|
51
|
+
});
|
|
52
|
+
const node = accountQuery.data ?? null;
|
|
53
|
+
const permissions = node?.callerMembership?.permissions ?? [];
|
|
54
|
+
const isImplicitOwner = node ? node.relationship !== 'member' : false;
|
|
55
|
+
const can = useCallback(permission => isImplicitOwner || permissions.includes(permission), [isImplicitOwner, permissions]);
|
|
56
|
+
const canUpdate = can('account:update');
|
|
57
|
+
const canViewMembers = can('members:read');
|
|
58
|
+
const canArchive = can('account:delete');
|
|
59
|
+
|
|
60
|
+
// Editable fields, seeded lazily from the loaded account once.
|
|
61
|
+
const [seeded, setSeeded] = useState(false);
|
|
62
|
+
const [displayName, setDisplayName] = useState('');
|
|
63
|
+
const [bio, setBio] = useState('');
|
|
64
|
+
|
|
65
|
+
// Seed the form from the account during render (no useEffect): the first time
|
|
66
|
+
// the query resolves we capture its values into local edit state.
|
|
67
|
+
if (node && !seeded) {
|
|
68
|
+
const first = node.account?.name?.first ?? '';
|
|
69
|
+
const last = node.account?.name?.last ?? '';
|
|
70
|
+
setDisplayName([first, last].filter(Boolean).join(' '));
|
|
71
|
+
setBio(node.account?.bio ?? '');
|
|
72
|
+
setSeeded(true);
|
|
73
|
+
}
|
|
74
|
+
const updateMutation = useMutation({
|
|
75
|
+
mutationKey: ['accounts', 'update', id],
|
|
76
|
+
mutationFn: input => oxyServices.updateAccount(id, input),
|
|
77
|
+
onSuccess: () => {
|
|
78
|
+
queryClient.invalidateQueries({
|
|
79
|
+
queryKey: ['accounts', 'detail', id]
|
|
80
|
+
});
|
|
81
|
+
queryClient.invalidateQueries({
|
|
82
|
+
queryKey: ['accounts']
|
|
83
|
+
});
|
|
84
|
+
toast.success(t('accounts.settings.toasts.saved') || 'Account updated');
|
|
85
|
+
},
|
|
86
|
+
onError: error => {
|
|
87
|
+
toast.error(errorMessage(error, t('accounts.settings.toasts.saveFailed') || 'Failed to update account'));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
const archiveMutation = useMutation({
|
|
91
|
+
mutationKey: ['accounts', 'archive', id],
|
|
92
|
+
mutationFn: () => oxyServices.archiveAccount(id),
|
|
93
|
+
onSuccess: () => {
|
|
94
|
+
// If this was the active account, drop back to the personal account.
|
|
95
|
+
if (actingAs === id) {
|
|
96
|
+
setActingAs(null);
|
|
97
|
+
}
|
|
98
|
+
queryClient.invalidateQueries({
|
|
99
|
+
queryKey: ['accounts']
|
|
100
|
+
});
|
|
101
|
+
toast.success(t('accounts.settings.toasts.archived') || 'Account archived');
|
|
102
|
+
(onClose ?? goBack)?.();
|
|
103
|
+
},
|
|
104
|
+
onError: error => {
|
|
105
|
+
toast.error(errorMessage(error, t('accounts.settings.toasts.archiveFailed') || 'Failed to archive account'));
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const archiveDialog = useDialogControl();
|
|
109
|
+
const handleSave = useCallback(() => {
|
|
110
|
+
const trimmed = displayName.trim();
|
|
111
|
+
const nameParts = trimmed.split(/\s+/).filter(Boolean);
|
|
112
|
+
const first = nameParts[0] || '';
|
|
113
|
+
const last = nameParts.length > 1 ? nameParts.slice(1).join(' ') : undefined;
|
|
114
|
+
updateMutation.mutate({
|
|
115
|
+
name: {
|
|
116
|
+
first,
|
|
117
|
+
last
|
|
118
|
+
},
|
|
119
|
+
bio: bio.trim() ? bio.trim() : null
|
|
120
|
+
});
|
|
121
|
+
}, [displayName, bio, updateMutation]);
|
|
122
|
+
const title = t('accounts.settings.title') || 'Account settings';
|
|
123
|
+
const accountHandle = useMemo(() => {
|
|
124
|
+
const username = node?.account?.username;
|
|
125
|
+
return username ? `@${username}` : '';
|
|
126
|
+
}, [node?.account?.username]);
|
|
127
|
+
if (!id) {
|
|
128
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
129
|
+
className: "flex-1 bg-bg",
|
|
130
|
+
children: [/*#__PURE__*/_jsx(Header, {
|
|
131
|
+
title: title,
|
|
132
|
+
onBack: goBack,
|
|
133
|
+
onClose: onClose,
|
|
134
|
+
showBackButton: true,
|
|
135
|
+
showCloseButton: true,
|
|
136
|
+
elevation: "subtle"
|
|
137
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
138
|
+
className: "flex-1 items-center justify-center px-screen-margin",
|
|
139
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
140
|
+
className: "text-body font-body text-text-secondary text-center",
|
|
141
|
+
children: t('accounts.settings.errors.missingAccount') || 'No account selected.'
|
|
142
|
+
})
|
|
143
|
+
})]
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
147
|
+
className: "flex-1 bg-bg",
|
|
148
|
+
children: [/*#__PURE__*/_jsx(Header, {
|
|
149
|
+
title: title,
|
|
150
|
+
onBack: goBack,
|
|
151
|
+
onClose: onClose,
|
|
152
|
+
showBackButton: true,
|
|
153
|
+
showCloseButton: true,
|
|
154
|
+
elevation: "subtle"
|
|
155
|
+
}), /*#__PURE__*/_jsx(KeyboardAvoidingView, {
|
|
156
|
+
className: "flex-1",
|
|
157
|
+
behavior: Platform.OS === 'ios' ? 'padding' : undefined,
|
|
158
|
+
keyboardVerticalOffset: Platform.OS === 'ios' ? 88 : 0,
|
|
159
|
+
children: /*#__PURE__*/_jsx(ScrollView, {
|
|
160
|
+
className: "flex-1",
|
|
161
|
+
contentContainerClassName: "px-screen-margin pt-space-24 pb-space-32 gap-space-24",
|
|
162
|
+
showsVerticalScrollIndicator: false,
|
|
163
|
+
keyboardShouldPersistTaps: "handled",
|
|
164
|
+
children: accountQuery.isLoading ? /*#__PURE__*/_jsx(View, {
|
|
165
|
+
className: "items-center py-space-32",
|
|
166
|
+
children: /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
167
|
+
color: colors.primary
|
|
168
|
+
})
|
|
169
|
+
}) : /*#__PURE__*/_jsxs(_Fragment, {
|
|
170
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
171
|
+
className: "gap-space-8",
|
|
172
|
+
children: [/*#__PURE__*/_jsx(H1, {
|
|
173
|
+
className: "text-headerBold font-headerBold text-text",
|
|
174
|
+
numberOfLines: 1,
|
|
175
|
+
children: accountHandle || title
|
|
176
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
177
|
+
className: "text-body font-body text-text-secondary",
|
|
178
|
+
children: t('accounts.settings.subtitle') || 'Manage this account’s profile, members, and access.'
|
|
179
|
+
})]
|
|
180
|
+
}), canUpdate ? /*#__PURE__*/_jsxs(View, {
|
|
181
|
+
className: "gap-space-16 p-space-16 rounded-radius-20 bg-fill",
|
|
182
|
+
children: [/*#__PURE__*/_jsx(TextField, {
|
|
183
|
+
children: /*#__PURE__*/_jsx(TextFieldInput, {
|
|
184
|
+
floatingLabel: true,
|
|
185
|
+
label: t('accounts.settings.displayName.label') || 'Display name',
|
|
186
|
+
value: displayName,
|
|
187
|
+
onChangeText: setDisplayName,
|
|
188
|
+
maxLength: DISPLAY_NAME_MAX
|
|
189
|
+
})
|
|
190
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
191
|
+
className: "gap-space-4",
|
|
192
|
+
children: [/*#__PURE__*/_jsx(TextField, {
|
|
193
|
+
children: /*#__PURE__*/_jsx(TextFieldInput, {
|
|
194
|
+
floatingLabel: true,
|
|
195
|
+
label: t('accounts.settings.bio.label') || 'Bio (optional)',
|
|
196
|
+
value: bio,
|
|
197
|
+
onChangeText: setBio,
|
|
198
|
+
maxLength: BIO_MAX,
|
|
199
|
+
multiline: true,
|
|
200
|
+
numberOfLines: 3,
|
|
201
|
+
textAlignVertical: "top"
|
|
202
|
+
})
|
|
203
|
+
}), /*#__PURE__*/_jsxs(Text, {
|
|
204
|
+
className: "text-caption font-caption text-text-tertiary px-space-4 text-right",
|
|
205
|
+
children: [bio.length, "/", BIO_MAX]
|
|
206
|
+
})]
|
|
207
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
208
|
+
variant: "primary",
|
|
209
|
+
onPress: handleSave,
|
|
210
|
+
disabled: updateMutation.isPending || !displayName.trim(),
|
|
211
|
+
loading: updateMutation.isPending,
|
|
212
|
+
accessibilityLabel: t('accounts.settings.save') || 'Save changes',
|
|
213
|
+
className: "w-full",
|
|
214
|
+
children: t('accounts.settings.save') || 'Save changes'
|
|
215
|
+
})]
|
|
216
|
+
}) : null, canViewMembers ? /*#__PURE__*/_jsx(SettingsListGroup, {
|
|
217
|
+
title: t('accounts.settings.sections.access') || 'Access',
|
|
218
|
+
children: /*#__PURE__*/_jsx(SettingsListItem, {
|
|
219
|
+
icon: /*#__PURE__*/_jsx(SettingsIcon, {
|
|
220
|
+
name: "account-multiple",
|
|
221
|
+
color: colors.info
|
|
222
|
+
}),
|
|
223
|
+
title: t('accounts.members.title') || 'Members',
|
|
224
|
+
description: t('accounts.settings.members.subtitle') || 'Invite people and manage roles',
|
|
225
|
+
onPress: () => navigate?.('AccountMembers', {
|
|
226
|
+
accountId: id
|
|
227
|
+
})
|
|
228
|
+
})
|
|
229
|
+
}) : null, canArchive ? /*#__PURE__*/_jsx(SettingsListGroup, {
|
|
230
|
+
title: t('accounts.settings.sections.dangerZone') || 'Danger zone',
|
|
231
|
+
children: /*#__PURE__*/_jsx(SettingsListItem, {
|
|
232
|
+
icon: /*#__PURE__*/_jsx(SettingsIcon, {
|
|
233
|
+
name: "archive-arrow-down",
|
|
234
|
+
color: colors.error
|
|
235
|
+
}),
|
|
236
|
+
title: t('accounts.settings.archive.title') || 'Archive account',
|
|
237
|
+
description: t('accounts.settings.archive.subtitle') || 'Deactivate this account',
|
|
238
|
+
onPress: () => archiveDialog.open()
|
|
239
|
+
})
|
|
240
|
+
}) : null]
|
|
241
|
+
})
|
|
242
|
+
})
|
|
243
|
+
}), /*#__PURE__*/_jsx(Dialog, {
|
|
244
|
+
control: archiveDialog,
|
|
245
|
+
title: t('accounts.settings.archive.confirmTitle') || 'Archive account',
|
|
246
|
+
description: t('accounts.settings.archive.confirmDescription') || 'Archive this account? It will be deactivated and its members will lose access.',
|
|
247
|
+
actions: [{
|
|
248
|
+
label: t('accounts.settings.archive.title') || 'Archive account',
|
|
249
|
+
color: 'destructive',
|
|
250
|
+
onPress: () => archiveMutation.mutate()
|
|
251
|
+
}, {
|
|
252
|
+
label: t('common.cancel') || 'Cancel',
|
|
253
|
+
color: 'cancel'
|
|
254
|
+
}]
|
|
255
|
+
})]
|
|
256
|
+
});
|
|
257
|
+
};
|
|
258
|
+
export default AccountSettingsScreen;
|
|
259
|
+
//# sourceMappingURL=AccountSettingsScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useMemo","useState","View","ScrollView","ActivityIndicator","Platform","KeyboardAvoidingView","useQuery","useMutation","useQueryClient","toast","Dialog","useDialogControl","useTheme","H1","Text","Button","TextField","TextFieldInput","SettingsListGroup","SettingsListItem","Header","SettingsIcon","useOxy","useI18n","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DISPLAY_NAME_MAX","BIO_MAX","errorMessage","error","fallback","Error","message","AccountSettingsScreen","onClose","goBack","navigate","accountId","bloomTheme","colors","t","oxyServices","canUsePrivateApi","actingAs","setActingAs","queryClient","id","accountQuery","queryKey","queryFn","getAccount","enabled","length","node","data","permissions","callerMembership","isImplicitOwner","relationship","can","permission","includes","canUpdate","canViewMembers","canArchive","seeded","setSeeded","displayName","setDisplayName","bio","setBio","first","account","name","last","filter","Boolean","join","updateMutation","mutationKey","mutationFn","input","updateAccount","onSuccess","invalidateQueries","success","onError","archiveMutation","archiveAccount","archiveDialog","handleSave","trimmed","trim","nameParts","split","slice","undefined","mutate","title","accountHandle","username","className","children","onBack","showBackButton","showCloseButton","elevation","behavior","OS","keyboardVerticalOffset","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","isLoading","color","primary","numberOfLines","floatingLabel","label","value","onChangeText","maxLength","multiline","textAlignVertical","variant","onPress","disabled","isPending","loading","accessibilityLabel","icon","info","description","open","control","actions"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountSettingsScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import Header from "../components/Header.js";
|
|
6
|
+
import { AccountSwitcherView } from "../components/AccountSwitcher.js";
|
|
7
|
+
import { useI18n } from "../hooks/useI18n.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Bottom-sheet route wrapper around {@link AccountSwitcherView}. Used when the
|
|
11
|
+
* switcher is opened as a sheet (e.g. from the `ActiveAccountBanner` cue or the
|
|
12
|
+
* "Your accounts" entry in ManageAccount) rather than as the header-chip
|
|
13
|
+
* popover (which uses the `AccountSwitcher` modal directly).
|
|
14
|
+
*/
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
const AccountSwitcherScreen = ({
|
|
17
|
+
onClose,
|
|
18
|
+
goBack,
|
|
19
|
+
navigate
|
|
20
|
+
}) => {
|
|
21
|
+
const {
|
|
22
|
+
t
|
|
23
|
+
} = useI18n();
|
|
24
|
+
const close = useCallback(() => {
|
|
25
|
+
(onClose ?? goBack)?.();
|
|
26
|
+
}, [onClose, goBack]);
|
|
27
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
28
|
+
className: "flex-1 bg-bg",
|
|
29
|
+
children: [/*#__PURE__*/_jsx(Header, {
|
|
30
|
+
title: t('accountSwitcher.title') || 'Switch account',
|
|
31
|
+
onBack: goBack,
|
|
32
|
+
onClose: onClose,
|
|
33
|
+
showBackButton: !!goBack,
|
|
34
|
+
showCloseButton: !!onClose,
|
|
35
|
+
elevation: "subtle"
|
|
36
|
+
}), /*#__PURE__*/_jsx(AccountSwitcherView, {
|
|
37
|
+
onClose: close,
|
|
38
|
+
onAddAccount: () => navigate?.('OxyAuth'),
|
|
39
|
+
onNavigateManage: () => navigate?.('ManageAccount'),
|
|
40
|
+
onCreateAccount: () => navigate?.('CreateAccount'),
|
|
41
|
+
onOpenAccountSettings: accountId => navigate?.('AccountSettings', {
|
|
42
|
+
accountId
|
|
43
|
+
})
|
|
44
|
+
})]
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
export default AccountSwitcherScreen;
|
|
48
|
+
//# sourceMappingURL=AccountSwitcherScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","View","Header","AccountSwitcherView","useI18n","jsx","_jsx","jsxs","_jsxs","AccountSwitcherScreen","onClose","goBack","navigate","t","close","className","children","title","onBack","showBackButton","showCloseButton","elevation","onAddAccount","onNavigateManage","onCreateAccount","onOpenAccountSettings","accountId"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountSwitcherScreen.tsx"],"mappings":";;AACA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,IAAI,QAAQ,cAAc;AAEnC,OAAOC,MAAM,MAAM,yBAAsB;AACzC,SAASC,mBAAmB,QAAQ,kCAA+B;AACnE,SAASC,OAAO,QAAQ,qBAAkB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AALA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMA,MAAMC,qBAAgD,GAAGA,CAAC;EAAEC,OAAO;EAAEC,MAAM;EAAEC;AAAS,CAAC,KAAK;EAC1F,MAAM;IAAEC;EAAE,CAAC,GAAGT,OAAO,CAAC,CAAC;EAEvB,MAAMU,KAAK,GAAGd,WAAW,CAAC,MAAM;IAC9B,CAACU,OAAO,IAAIC,MAAM,IAAI,CAAC;EACzB,CAAC,EAAE,CAACD,OAAO,EAAEC,MAAM,CAAC,CAAC;EAErB,oBACEH,KAAA,CAACP,IAAI;IAACc,SAAS,EAAC,cAAc;IAAAC,QAAA,gBAC5BV,IAAA,CAACJ,MAAM;MACLe,KAAK,EAAEJ,CAAC,CAAC,uBAAuB,CAAC,IAAI,gBAAiB;MACtDK,MAAM,EAAEP,MAAO;MACfD,OAAO,EAAEA,OAAQ;MACjBS,cAAc,EAAE,CAAC,CAACR,MAAO;MACzBS,eAAe,EAAE,CAAC,CAACV,OAAQ;MAC3BW,SAAS,EAAC;IAAQ,CACnB,CAAC,eACFf,IAAA,CAACH,mBAAmB;MAClBO,OAAO,EAAEI,KAAM;MACfQ,YAAY,EAAEA,CAAA,KAAMV,QAAQ,GAAG,SAAS,CAAE;MAC1CW,gBAAgB,EAAEA,CAAA,KAAMX,QAAQ,GAAG,eAAe,CAAE;MACpDY,eAAe,EAAEA,CAAA,KAAMZ,QAAQ,GAAG,eAAe,CAAE;MACnDa,qBAAqB,EAAGC,SAAS,IAAKd,QAAQ,GAAG,iBAAiB,EAAE;QAAEc;MAAU,CAAC;IAAE,CACpF,CAAC;EAAA,CACE,CAAC;AAEX,CAAC;AAED,eAAejB,qBAAqB","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useState, useCallback, useRef, useEffect } from 'react';
|
|
4
|
-
import { View, Platform, ActivityIndicator, ScrollView, KeyboardAvoidingView } from 'react-native';
|
|
4
|
+
import { View, Platform, ActivityIndicator, ScrollView, KeyboardAvoidingView, TouchableOpacity } from 'react-native';
|
|
5
5
|
import { Ionicons } from '@expo/vector-icons';
|
|
6
6
|
import Header from "../components/Header.js";
|
|
7
7
|
import { useI18n } from "../hooks/useI18n.js";
|
|
@@ -11,25 +11,69 @@ import { Button } from '@oxyhq/bloom/button';
|
|
|
11
11
|
import { TextField, TextFieldInput } from '@oxyhq/bloom/text-field';
|
|
12
12
|
import { useOxy } from "../context/OxyContext.js";
|
|
13
13
|
import { toast } from '@oxyhq/bloom';
|
|
14
|
+
|
|
15
|
+
/** Kind of account this screen can create. `personal` is a signup-minted root and is never created here. */
|
|
14
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
17
|
const USERNAME_REGEX = /^[a-zA-Z0-9_-]{3,30}$/;
|
|
16
18
|
const DEBOUNCE_MS = 400;
|
|
17
19
|
const USERNAME_MAX = 30;
|
|
18
20
|
const DISPLAY_NAME_MAX = 50;
|
|
19
21
|
const BIO_MAX = 160;
|
|
20
|
-
|
|
22
|
+
// The creatable account kinds, matching the API `createAccountSchema` enum.
|
|
23
|
+
// Order places the most common choice (a project / persona) first.
|
|
24
|
+
const KIND_OPTIONS = [{
|
|
25
|
+
value: 'project',
|
|
26
|
+
icon: 'cube-outline'
|
|
27
|
+
}, {
|
|
28
|
+
value: 'organization',
|
|
29
|
+
icon: 'business-outline'
|
|
30
|
+
}, {
|
|
31
|
+
value: 'bot',
|
|
32
|
+
icon: 'hardware-chip-outline'
|
|
33
|
+
}];
|
|
34
|
+
const kindLabel = (t, kind) => {
|
|
35
|
+
switch (kind) {
|
|
36
|
+
case 'organization':
|
|
37
|
+
return t('accounts.kinds.organization.label') || 'Organization';
|
|
38
|
+
case 'bot':
|
|
39
|
+
return t('accounts.kinds.bot.label') || 'Bot';
|
|
40
|
+
default:
|
|
41
|
+
return t('accounts.kinds.project.label') || 'Project';
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const kindDescription = (t, kind) => {
|
|
45
|
+
switch (kind) {
|
|
46
|
+
case 'organization':
|
|
47
|
+
return t('accounts.kinds.organization.description') || 'A shared team account with members';
|
|
48
|
+
case 'bot':
|
|
49
|
+
return t('accounts.kinds.bot.description') || 'A programmatic account with service credentials';
|
|
50
|
+
default:
|
|
51
|
+
return t('accounts.kinds.project.description') || 'A separate account you control';
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Create a new account in the unified account graph (an organization, project,
|
|
57
|
+
* or bot). The caller becomes its owner. Optionally nested under a parent
|
|
58
|
+
* account via the `parentAccountId` prop. NOT the cryptographic Commons/DID
|
|
59
|
+
* "identity" — that is a separate concept.
|
|
60
|
+
*/
|
|
61
|
+
const CreateAccountScreen = ({
|
|
21
62
|
onClose,
|
|
22
|
-
goBack
|
|
63
|
+
goBack,
|
|
64
|
+
parentAccountId
|
|
23
65
|
}) => {
|
|
24
66
|
const bloomTheme = useTheme();
|
|
25
67
|
const {
|
|
26
68
|
oxyServices,
|
|
27
|
-
|
|
69
|
+
createAccount,
|
|
28
70
|
setActingAs
|
|
29
71
|
} = useOxy();
|
|
30
72
|
const {
|
|
31
73
|
t
|
|
32
74
|
} = useI18n();
|
|
75
|
+
const parentId = typeof parentAccountId === 'string' ? parentAccountId : undefined;
|
|
76
|
+
const [kind, setKind] = useState('project');
|
|
33
77
|
const [username, setUsername] = useState('');
|
|
34
78
|
const [displayName, setDisplayName] = useState('');
|
|
35
79
|
const [bio, setBio] = useState('');
|
|
@@ -45,12 +89,12 @@ const CreateManagedAccountScreen = ({
|
|
|
45
89
|
}
|
|
46
90
|
if (!value || value.length < 3) {
|
|
47
91
|
setUsernameStatus(value.length > 0 ? 'invalid' : 'idle');
|
|
48
|
-
setUsernameMessage(value.length > 0 ? 'Username must be at least 3 characters' : '');
|
|
92
|
+
setUsernameMessage(value.length > 0 ? t('accounts.create.username.tooShort') || 'Username must be at least 3 characters' : '');
|
|
49
93
|
return;
|
|
50
94
|
}
|
|
51
95
|
if (!USERNAME_REGEX.test(value)) {
|
|
52
96
|
setUsernameStatus('invalid');
|
|
53
|
-
setUsernameMessage('Only letters, numbers, hyphens, and underscores');
|
|
97
|
+
setUsernameMessage(t('accounts.create.username.invalidChars') || 'Only letters, numbers, hyphens, and underscores');
|
|
54
98
|
return;
|
|
55
99
|
}
|
|
56
100
|
setUsernameStatus('checking');
|
|
@@ -59,13 +103,13 @@ const CreateManagedAccountScreen = ({
|
|
|
59
103
|
try {
|
|
60
104
|
const result = await oxyServices.checkUsernameAvailability(value);
|
|
61
105
|
setUsernameStatus(result.available ? 'available' : 'taken');
|
|
62
|
-
setUsernameMessage(result.message || (result.available ? 'Username is available' : 'Username is taken'));
|
|
106
|
+
setUsernameMessage(result.message || (result.available ? t('accounts.create.username.available') || 'Username is available' : t('accounts.create.username.taken') || 'Username is taken'));
|
|
63
107
|
} catch {
|
|
64
108
|
setUsernameStatus('idle');
|
|
65
|
-
setUsernameMessage('Could not check availability');
|
|
109
|
+
setUsernameMessage(t('accounts.create.username.checkFailed') || 'Could not check availability');
|
|
66
110
|
}
|
|
67
111
|
}, DEBOUNCE_MS);
|
|
68
|
-
}, [oxyServices]);
|
|
112
|
+
}, [oxyServices, t]);
|
|
69
113
|
const handleUsernameChange = useCallback(value => {
|
|
70
114
|
const cleaned = value.toLowerCase().replace(/[^a-z0-9_-]/g, '');
|
|
71
115
|
setUsername(cleaned);
|
|
@@ -89,36 +133,42 @@ const CreateManagedAccountScreen = ({
|
|
|
89
133
|
const nameParts = displayName.trim().split(/\s+/);
|
|
90
134
|
const firstName = nameParts[0] || '';
|
|
91
135
|
const lastName = nameParts.length > 1 ? nameParts.slice(1).join(' ') : undefined;
|
|
92
|
-
const
|
|
136
|
+
const input = {
|
|
137
|
+
kind,
|
|
93
138
|
username,
|
|
94
139
|
name: {
|
|
95
140
|
first: firstName,
|
|
96
141
|
last: lastName
|
|
97
142
|
},
|
|
98
|
-
bio: bio.trim() || undefined
|
|
99
|
-
|
|
100
|
-
|
|
143
|
+
bio: bio.trim() || undefined,
|
|
144
|
+
...(parentId ? {
|
|
145
|
+
parentAccountId: parentId
|
|
146
|
+
} : null)
|
|
147
|
+
};
|
|
148
|
+
const account = await createAccount(input);
|
|
149
|
+
toast.success(t('accounts.create.toasts.success') || 'Account created');
|
|
101
150
|
|
|
102
|
-
// Switch to the new
|
|
151
|
+
// Switch to the new account
|
|
103
152
|
if (account.accountId) {
|
|
104
153
|
setActingAs(account.accountId);
|
|
105
154
|
}
|
|
106
155
|
onClose?.();
|
|
107
156
|
} catch (error) {
|
|
108
|
-
const message = error instanceof Error ? error.message : 'Failed to create
|
|
157
|
+
const message = error instanceof Error ? error.message : t('accounts.create.toasts.failed') || 'Failed to create account';
|
|
109
158
|
toast.error(message);
|
|
110
159
|
} finally {
|
|
111
160
|
setIsCreating(false);
|
|
112
161
|
}
|
|
113
|
-
}, [canCreate, username, displayName, bio,
|
|
162
|
+
}, [canCreate, kind, username, displayName, bio, parentId, createAccount, setActingAs, onClose, t]);
|
|
114
163
|
|
|
115
164
|
// Status icon + color shown alongside the username field message
|
|
116
165
|
const usernameIsInvalid = usernameStatus === 'taken' || usernameStatus === 'invalid';
|
|
117
166
|
const statusColor = usernameStatus === 'available' ? bloomTheme.colors.success : usernameIsInvalid ? bloomTheme.colors.negative : bloomTheme.colors.textSecondary;
|
|
167
|
+
const title = t('accounts.create.title') || 'Create account';
|
|
118
168
|
return /*#__PURE__*/_jsxs(View, {
|
|
119
169
|
className: "flex-1 bg-bg",
|
|
120
170
|
children: [/*#__PURE__*/_jsx(Header, {
|
|
121
|
-
title:
|
|
171
|
+
title: title,
|
|
122
172
|
onBack: goBack,
|
|
123
173
|
onClose: onClose,
|
|
124
174
|
showBackButton: true,
|
|
@@ -137,11 +187,52 @@ const CreateManagedAccountScreen = ({
|
|
|
137
187
|
className: "gap-space-8",
|
|
138
188
|
children: [/*#__PURE__*/_jsx(H1, {
|
|
139
189
|
className: "text-headerBold font-headerBold text-text",
|
|
140
|
-
children:
|
|
190
|
+
children: title
|
|
141
191
|
}), /*#__PURE__*/_jsx(Text, {
|
|
142
192
|
className: "text-body font-body text-text-secondary",
|
|
143
|
-
children:
|
|
193
|
+
children: t('accounts.create.subtitle') || 'Create an account you control. It will have its own profile, members, and apps.'
|
|
144
194
|
})]
|
|
195
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
196
|
+
className: "gap-space-8",
|
|
197
|
+
children: KIND_OPTIONS.map(option => {
|
|
198
|
+
const selected = option.value === kind;
|
|
199
|
+
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
200
|
+
accessibilityRole: "radio",
|
|
201
|
+
accessibilityState: {
|
|
202
|
+
selected
|
|
203
|
+
},
|
|
204
|
+
accessibilityLabel: kindLabel(t, option.value),
|
|
205
|
+
onPress: () => setKind(option.value),
|
|
206
|
+
activeOpacity: 0.7,
|
|
207
|
+
className: "flex-row items-center gap-space-12 p-space-16 rounded-radius-20",
|
|
208
|
+
style: {
|
|
209
|
+
backgroundColor: selected ? bloomTheme.colors.primarySubtle : bloomTheme.colors.card,
|
|
210
|
+
borderWidth: 1,
|
|
211
|
+
borderColor: selected ? bloomTheme.colors.primary : bloomTheme.colors.border
|
|
212
|
+
},
|
|
213
|
+
children: [/*#__PURE__*/_jsx(Ionicons, {
|
|
214
|
+
name: option.icon,
|
|
215
|
+
size: 22,
|
|
216
|
+
color: selected ? bloomTheme.colors.primary : bloomTheme.colors.icon
|
|
217
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
218
|
+
className: "flex-1",
|
|
219
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
220
|
+
className: "text-body font-bodyBold",
|
|
221
|
+
style: {
|
|
222
|
+
color: selected ? bloomTheme.colors.primary : bloomTheme.colors.text
|
|
223
|
+
},
|
|
224
|
+
children: kindLabel(t, option.value)
|
|
225
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
226
|
+
className: "text-caption font-caption text-text-secondary",
|
|
227
|
+
children: kindDescription(t, option.value)
|
|
228
|
+
})]
|
|
229
|
+
}), selected ? /*#__PURE__*/_jsx(Ionicons, {
|
|
230
|
+
name: "checkmark-circle",
|
|
231
|
+
size: 20,
|
|
232
|
+
color: bloomTheme.colors.primary
|
|
233
|
+
}) : null]
|
|
234
|
+
}, option.value);
|
|
235
|
+
})
|
|
145
236
|
}), /*#__PURE__*/_jsxs(View, {
|
|
146
237
|
className: "gap-space-16 p-space-16 rounded-radius-20 bg-fill",
|
|
147
238
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
@@ -150,7 +241,7 @@ const CreateManagedAccountScreen = ({
|
|
|
150
241
|
isInvalid: usernameIsInvalid,
|
|
151
242
|
children: /*#__PURE__*/_jsx(TextFieldInput, {
|
|
152
243
|
floatingLabel: true,
|
|
153
|
-
label:
|
|
244
|
+
label: t('accounts.create.username.label') || 'Username',
|
|
154
245
|
value: username,
|
|
155
246
|
onChangeText: handleUsernameChange,
|
|
156
247
|
isInvalid: usernameIsInvalid,
|
|
@@ -183,7 +274,7 @@ const CreateManagedAccountScreen = ({
|
|
|
183
274
|
}), /*#__PURE__*/_jsx(TextField, {
|
|
184
275
|
children: /*#__PURE__*/_jsx(TextFieldInput, {
|
|
185
276
|
floatingLabel: true,
|
|
186
|
-
label:
|
|
277
|
+
label: t('accounts.create.displayName.label') || 'Display name',
|
|
187
278
|
value: displayName,
|
|
188
279
|
onChangeText: setDisplayName,
|
|
189
280
|
maxLength: DISPLAY_NAME_MAX
|
|
@@ -193,7 +284,7 @@ const CreateManagedAccountScreen = ({
|
|
|
193
284
|
children: [/*#__PURE__*/_jsx(TextField, {
|
|
194
285
|
children: /*#__PURE__*/_jsx(TextFieldInput, {
|
|
195
286
|
floatingLabel: true,
|
|
196
|
-
label:
|
|
287
|
+
label: t('accounts.create.bio.label') || 'Bio (optional)',
|
|
197
288
|
value: bio,
|
|
198
289
|
onChangeText: setBio,
|
|
199
290
|
maxLength: BIO_MAX,
|
|
@@ -211,13 +302,13 @@ const CreateManagedAccountScreen = ({
|
|
|
211
302
|
onPress: handleCreate,
|
|
212
303
|
disabled: !canCreate,
|
|
213
304
|
loading: isCreating,
|
|
214
|
-
accessibilityLabel:
|
|
305
|
+
accessibilityLabel: title,
|
|
215
306
|
className: "w-full",
|
|
216
|
-
children:
|
|
307
|
+
children: title
|
|
217
308
|
})]
|
|
218
309
|
})
|
|
219
310
|
})]
|
|
220
311
|
});
|
|
221
312
|
};
|
|
222
|
-
export default
|
|
223
|
-
//# sourceMappingURL=
|
|
313
|
+
export default CreateAccountScreen;
|
|
314
|
+
//# sourceMappingURL=CreateAccountScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","useCallback","useRef","useEffect","View","Platform","ActivityIndicator","ScrollView","KeyboardAvoidingView","TouchableOpacity","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","KIND_OPTIONS","value","icon","kindLabel","t","kind","kindDescription","CreateAccountScreen","onClose","goBack","parentAccountId","bloomTheme","oxyServices","createAccount","setActingAs","parentId","undefined","setKind","username","setUsername","displayName","setDisplayName","bio","setBio","usernameStatus","setUsernameStatus","usernameMessage","setUsernameMessage","isCreating","setIsCreating","debounceTimerRef","checkUsername","current","clearTimeout","length","test","setTimeout","result","checkUsernameAvailability","available","message","handleUsernameChange","cleaned","toLowerCase","replace","canCreate","trim","handleCreate","nameParts","split","firstName","lastName","slice","join","input","name","first","last","account","success","accountId","error","Error","usernameIsInvalid","statusColor","colors","negative","textSecondary","title","className","children","onBack","showBackButton","showCloseButton","elevation","behavior","OS","keyboardVerticalOffset","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","map","option","selected","accessibilityRole","accessibilityState","accessibilityLabel","onPress","activeOpacity","style","backgroundColor","primarySubtle","card","borderWidth","borderColor","primary","border","size","color","text","isInvalid","floatingLabel","label","onChangeText","autoCapitalize","autoCorrect","autoComplete","maxLength","multiline","numberOfLines","textAlignVertical","variant","disabled","loading"],"sourceRoot":"../../../../src","sources":["ui/screens/CreateAccountScreen.tsx"],"mappings":"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","ignoreList":[]}
|