@oxy.so/services 12.10.1 → 12.11.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.
Files changed (54) hide show
  1. package/lib/commonjs/ui/components/accountSettings/AccountCategoriesSection.js +142 -0
  2. package/lib/commonjs/ui/components/accountSettings/AccountCategoriesSection.js.map +1 -0
  3. package/lib/commonjs/ui/components/accountSettings/AccountSettings.js +361 -0
  4. package/lib/commonjs/ui/components/accountSettings/AccountSettings.js.map +1 -0
  5. package/lib/commonjs/ui/hooks/useAvatarPicker.js +54 -48
  6. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
  7. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +16 -237
  8. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  9. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js +23 -4
  10. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -1
  11. package/lib/commonjs/ui/screens/index.js +7 -0
  12. package/lib/commonjs/ui/screens/index.js.map +1 -1
  13. package/lib/module/ui/components/accountSettings/AccountCategoriesSection.js +134 -0
  14. package/lib/module/ui/components/accountSettings/AccountCategoriesSection.js.map +1 -0
  15. package/lib/module/ui/components/accountSettings/AccountSettings.js +355 -0
  16. package/lib/module/ui/components/accountSettings/AccountSettings.js.map +1 -0
  17. package/lib/module/ui/hooks/useAvatarPicker.js +53 -48
  18. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
  19. package/lib/module/ui/screens/AccountSettingsScreen.js +16 -235
  20. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  21. package/lib/module/ui/screens/ChangeAvatarScreen.js +23 -4
  22. package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -1
  23. package/lib/module/ui/screens/index.js +4 -0
  24. package/lib/module/ui/screens/index.js.map +1 -1
  25. package/lib/typescript/commonjs/ui/components/accountSettings/AccountCategoriesSection.d.ts +26 -0
  26. package/lib/typescript/commonjs/ui/components/accountSettings/AccountCategoriesSection.d.ts.map +1 -0
  27. package/lib/typescript/commonjs/ui/components/accountSettings/AccountSettings.d.ts +80 -0
  28. package/lib/typescript/commonjs/ui/components/accountSettings/AccountSettings.d.ts.map +1 -0
  29. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts +22 -1
  30. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts +4 -5
  32. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/ui/screens/index.d.ts +1 -0
  35. package/lib/typescript/commonjs/ui/screens/index.d.ts.map +1 -1
  36. package/lib/typescript/module/ui/components/accountSettings/AccountCategoriesSection.d.ts +26 -0
  37. package/lib/typescript/module/ui/components/accountSettings/AccountCategoriesSection.d.ts.map +1 -0
  38. package/lib/typescript/module/ui/components/accountSettings/AccountSettings.d.ts +80 -0
  39. package/lib/typescript/module/ui/components/accountSettings/AccountSettings.d.ts.map +1 -0
  40. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts +22 -1
  41. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  42. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts +4 -5
  43. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  44. package/lib/typescript/module/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
  45. package/lib/typescript/module/ui/screens/index.d.ts +1 -0
  46. package/lib/typescript/module/ui/screens/index.d.ts.map +1 -1
  47. package/package.json +4 -4
  48. package/src/ui/components/accountSettings/AccountCategoriesSection.tsx +180 -0
  49. package/src/ui/components/accountSettings/AccountSettings.tsx +421 -0
  50. package/src/ui/components/accountSettings/__tests__/AccountSettings.test.tsx +101 -0
  51. package/src/ui/hooks/useAvatarPicker.ts +65 -69
  52. package/src/ui/screens/AccountSettingsScreen.tsx +13 -277
  53. package/src/ui/screens/ChangeAvatarScreen.tsx +25 -6
  54. package/src/ui/screens/index.ts +8 -0
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","translate","updateAvatarVisibility","toast","updateProfileWithAvatar","openWithinOrPresent","extractUploadedFileId","result","undefined","id","file","first","files","useAvatarPicker","oxyServices","currentLanguage","activeSessionId","queryClient","finalizeCroppedAvatar","cropped","uploadResult","assets","upload","uri","type","mime","name","Date","now","visibility","newFileId","Error","avatar","success","e","message","error","removeAvatar","openAvatarPicker"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAvatarPicker.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","translate","updateAvatarVisibility","toast","updateProfileWithAvatar","openWithinOrPresent","extractUploadedFileId","result","undefined","id","file","first","files","pickAvatarFile","oxyServices","subject","uploadResult","assets","upload","uri","type","mime","name","Date","now","visibility","fileId","Error","useAvatarPicker","currentLanguage","activeSessionId","queryClient","openAvatarPicker","locale","avatar","success","e","message","error"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAvatarPicker.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAQ,OAAO;AAEnC,SAASC,SAAS,EAAEC,sBAAsB,QAAQ,cAAc;AAEhE,SAASC,KAAK,QAAQ,qBAAqB;AAC3C,SAASC,uBAAuB,QAAQ,yBAAsB;AAC9D,SAASC,mBAAmB,QAAQ,2BAAwB;;AAS5D;;AAOA,SAASC,qBAAqBA,CAACC,MAAqC,EAAsB;EACxF,IAAI,CAACA,MAAM,EAAE,OAAOC,SAAS;EAC7B,IAAI,OAAOD,MAAM,CAACE,EAAE,KAAK,QAAQ,EAAE,OAAOF,MAAM,CAACE,EAAE;EACnD,IAAIF,MAAM,CAACG,IAAI,EAAED,EAAE,EAAE,OAAOF,MAAM,CAACG,IAAI,CAACD,EAAE;EAC1C,MAAME,KAAK,GAAGJ,MAAM,CAACK,KAAK,GAAG,CAAC,CAAC;EAC/B,IAAID,KAAK,EAAEF,EAAE,EAAE,OAAOE,KAAK,CAACF,EAAE;EAC9B,OAAOD,SAAS;AAClB;;AAEA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeK,cAAcA,CAClCC,WAAwB,EACxBC,OAA6B,EACO;EACpC;EACA;EACA;EACA;EACA;EACA,MAAMR,MAAM,GAAG,MAAMF,mBAAmB,CAAC,cAAc,EAAEU,OAAO,GAAG;IAAEA;EAAQ,CAAC,GAAGP,SAAS,CAAC;EAC3F,IAAI,CAACD,MAAM,EAAE,OAAOC,SAAS;EAC7B,IAAI,SAAS,IAAID,MAAM,EAAE,OAAO,IAAI;EACpC,MAAMS,YAAY,GAAI,MAAMF,WAAW,CAACG,MAAM,CAACC,MAAM,CACnD;IAAEC,GAAG,EAAEZ,MAAM,CAACY,GAAG;IAAEC,IAAI,EAAEb,MAAM,CAACc,IAAI;IAAEC,IAAI,EAAE,UAAUC,IAAI,CAACC,GAAG,CAAC,CAAC;EAAO,CAAC,EACxE;IAAEC,UAAU,EAAE;EAAS,CACzB,CAAuB;EACvB,MAAMC,MAAM,GAAGpB,qBAAqB,CAACU,YAAY,CAAC;EAClD,IAAI,CAACU,MAAM,EAAE;IACX,MAAM,IAAIC,KAAK,CAAC,qDAAqD,CAAC;EACxE;EACA,MAAMzB,sBAAsB,CAACwB,MAAM,EAAEZ,WAAW,EAAE,gBAAgB,CAAC;EACnE,OAAOY,MAAM;AACf;AAEA,OAAO,SAASE,eAAeA,CAAC;EAC9Bd,WAAW;EACXe,eAAe;EACfC,eAAe;EACfC;AACsB,CAAC,EAAE;EACzB,MAAMC,gBAAgB,GAAGhC,WAAW,CAAC,YAAY;IAC/C,MAAMiC,MAAM,GAAGJ,eAAe,IAAIrB,SAAS;IAC3C,IAAI;MACF,MAAMkB,MAAM,GAAG,MAAMb,cAAc,CAACC,WAAW,CAAC;MAChD,IAAIY,MAAM,KAAKlB,SAAS,EAAE;MAC1B;MACA;MACA,MAAMJ,uBAAuB,CAC3B;QAAE8B,MAAM,EAAER,MAAM,IAAI;MAAG,CAAC,EACxBZ,WAAW,EACXgB,eAAe,EACfC,WACF,CAAC;MACD5B,KAAK,CAACgC,OAAO,CACXlC,SAAS,CACPgC,MAAM,EACNP,MAAM,KAAK,IAAI,GAAG,kCAAkC,GAAG,kCACzD,CACF,CAAC;IACH,CAAC,CAAC,OAAOU,CAAU,EAAE;MACnB,MAAMC,OAAO,GAAGD,CAAC,YAAYT,KAAK,GAAGS,CAAC,CAACC,OAAO,GAAG7B,SAAS;MAC1DL,KAAK,CAACmC,KAAK,CAACD,OAAO,IAAIpC,SAAS,CAACgC,MAAM,EAAE,uCAAuC,CAAC,CAAC;IACpF;EACF,CAAC,EAAE,CAACH,eAAe,EAAED,eAAe,EAAEf,WAAW,EAAEiB,WAAW,CAAC,CAAC;EAEhE,OAAO;IAAEC;EAAiB,CAAC;AAC7B","ignoreList":[]}
@@ -1,260 +1,41 @@
1
1
  "use strict";
2
2
 
3
- import { OrganizationSettings } from "../components/organizations/OrganizationSettings.js";
4
- import { useCallback, useMemo, useState } from 'react';
5
- import { View } from 'react-native';
6
- import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
7
- import { toast } from '@oxy.so/bloom/toast';
8
- import { surfaces } from '@oxy.so/bloom/surfaces';
9
- import { useTheme } from '@oxy.so/bloom/theme';
10
- import { Text } from '@oxy.so/bloom/typography';
11
- import { Button } from '@oxy.so/bloom/button';
12
- import { TextField, TextFieldInput } from '@oxy.so/bloom/text-field';
13
- import { GroupedSection, GroupedSectionItem } from '@oxy.so/bloom/grouped-section';
14
- import { accountNameInvalidKey, accountNameInvalidMessage, accountNameMaxLength, getNormalizedUserHandle, isValidAccountName } from '@oxy.so/core';
15
- import { SettingsIcon } from "../components/SettingsIcon.js";
16
- import { useOxy } from "../context/oxyRuntimeContext.js";
3
+ import { AccountSettings, useAccountSettingsNode } from "../components/accountSettings/AccountSettings.js";
17
4
  import { useI18n } from "../hooks/useI18n.js";
18
5
  import { useSurfaceHeader } from "../hooks/useSurfaceHeader.js";
19
- import { clearedFieldsFromAccountUpdate, upsertCachedUser } from "../hooks/queries/userCache.js";
20
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
21
- const BIO_MAX = 160;
22
- const errorMessage = (error, fallback) => error instanceof Error && error.message ? error.message : fallback;
23
6
 
24
7
  /**
25
- * Per-account settings: edit the account's profile, jump to member management,
26
- * and archive the account (danger zone). Receives the target `accountId` via
27
- * navigation props. Self-surface for the caller's own personal account lives in
28
- * {@link ManageAccountScreen}; this screen manages a non-personal account in the
29
- * graph.
8
+ * The `AccountSettings` surface: {@link AccountSettings} for the `accountId`
9
+ * route prop, under the surface's own header. Self-surface for the caller's own
10
+ * personal account lives in {@link ManageAccountScreen}; this screen manages a
11
+ * non-personal account in the graph.
30
12
  */
13
+ import { jsx as _jsx } from "react/jsx-runtime";
31
14
  const AccountSettingsScreen = ({
32
15
  onClose,
33
16
  goBack,
34
17
  navigate,
35
18
  accountId
36
19
  }) => {
37
- const bloomTheme = useTheme();
38
- const colors = bloomTheme.colors;
39
20
  const {
40
21
  t
41
22
  } = useI18n();
42
- const {
43
- oxyServices,
44
- canUsePrivateApi,
45
- user,
46
- accounts,
47
- switchToAccount
48
- } = useOxy();
49
- const queryClient = useQueryClient();
50
23
  const id = typeof accountId === 'string' ? accountId : '';
51
- const accountQuery = useQuery({
52
- queryKey: ['accounts', 'detail', id, user?.id, canUsePrivateApi],
53
- initialData: canUsePrivateApi ? accounts?.find(account => account.accountId === id) : undefined,
54
- initialDataUpdatedAt: 0,
55
- queryFn: () => oxyServices.accounts.get(id),
56
- enabled: canUsePrivateApi && id.length > 0
57
- });
58
- const node = canUsePrivateApi && accountQuery.isSuccess ? accountQuery.data : null;
59
- const permissions = node?.callerMembership?.permissions ?? [];
60
- const isImplicitOwner = node ? node.relationship !== 'member' : false;
61
- const can = useCallback(permission => isImplicitOwner || permissions.includes(permission), [isImplicitOwner, permissions]);
62
- const canUpdate = can('account:update');
63
- const canViewMembers = can('members:read');
64
- const canArchive = can('account:delete');
65
-
66
- // Editable fields, seeded lazily from the loaded account once.
67
- const [seeded, setSeeded] = useState(false);
68
- const [displayName, setDisplayName] = useState('');
69
- const [displayNameError, setDisplayNameError] = useState('');
70
- const [bio, setBio] = useState('');
71
-
72
- // Seed the form from the account during render (no useEffect): the first time
73
- // the query resolves we capture its values into local edit state.
74
- if (node && !seeded) {
75
- setDisplayName(node.account?.name?.displayName ?? getNormalizedUserHandle(node.account) ?? '');
76
- setBio(node.account?.bio ?? '');
77
- setSeeded(true);
78
- }
79
- const updateMutation = useMutation({
80
- mutationKey: ['accounts', 'update', id],
81
- mutationFn: input => oxyServices.accounts.update(id, input),
82
- onSuccess: (updatedNode, input) => {
83
- const cleared = clearedFieldsFromAccountUpdate(input);
84
- upsertCachedUser(queryClient, updatedNode.account, user?.id, {
85
- cleared: cleared.length > 0 ? cleared : undefined
86
- });
87
- queryClient.invalidateQueries({
88
- queryKey: ['accounts', 'detail', id]
89
- });
90
- queryClient.invalidateQueries({
91
- queryKey: ['accounts']
92
- });
93
- toast.success(t('accounts.settings.toasts.saved') || 'Account updated');
94
- },
95
- onError: error => {
96
- toast.error(errorMessage(error, t('accounts.settings.toasts.saveFailed') || 'Failed to update account'));
97
- }
98
- });
99
- const archiveMutation = useMutation({
100
- mutationKey: ['accounts', 'archive', id],
101
- mutationFn: () => oxyServices.accounts.archive(id),
102
- onSuccess: async () => {
103
- // If we archived the account we're currently signed in AS, switch back to
104
- // the personal account so the app isn't left as an archived identity.
105
- if (user?.id === id) {
106
- const personal = accounts.find(node => node.relationship === 'self');
107
- if (personal) {
108
- await switchToAccount(personal.accountId).catch(() => undefined);
109
- }
110
- }
111
- queryClient.invalidateQueries({
112
- queryKey: ['accounts']
113
- });
114
- toast.success(t('accounts.settings.toasts.archived') || 'Account archived');
115
- (onClose ?? goBack)?.();
116
- },
117
- onError: error => {
118
- toast.error(errorMessage(error, t('accounts.settings.toasts.archiveFailed') || 'Failed to archive account'));
119
- }
120
- });
121
- const handleArchive = useCallback(async () => {
122
- const confirmed = await surfaces.confirm({
123
- title: t('accounts.settings.archive.confirmTitle') || 'Archive account',
124
- description: t('accounts.settings.archive.confirmDescription') || 'Archive this account? It will be deactivated and its members will lose access.',
125
- confirmLabel: t('accounts.settings.archive.title') || 'Archive account',
126
- cancelLabel: t('common.cancel') || 'Cancel',
127
- destructive: true
128
- });
129
- if (confirmed) archiveMutation.mutate();
130
- }, [archiveMutation, t]);
131
- const handleDisplayNameChange = useCallback(value => {
132
- setDisplayName(value);
133
- const trimmed = value.trim();
134
- if (!trimmed) {
135
- setDisplayNameError('');
136
- return;
137
- }
138
- const kind = node?.account.kind;
139
- setDisplayNameError(isValidAccountName(trimmed, kind) ? '' : t(`accounts.settings.displayName.${accountNameInvalidKey(kind)}`) || accountNameInvalidMessage(kind));
140
- }, [node?.account.kind, t]);
141
- const handleSave = useCallback(() => {
142
- const trimmed = displayName.trim();
143
- if (!trimmed || displayNameError) return;
144
- // Managed accounts (org / project / bot / channel) have a title, not a
145
- // given-and-family name — persist the explicit displayName column.
146
- updateMutation.mutate({
147
- name: {
148
- displayName: trimmed
149
- },
150
- bio: bio.trim() ? bio.trim() : null
151
- });
152
- }, [displayName, displayNameError, bio, updateMutation]);
153
- const title = t('accounts.settings.title') || 'Account settings';
154
- const accountHandle = useMemo(() => {
155
- const username = node?.account?.username;
156
- return username ? `@${username}` : '';
157
- }, [node?.account?.username]);
24
+ const {
25
+ node
26
+ } = useAccountSettingsNode(id);
158
27
 
159
28
  // The nav large title is the account's handle once loaded (falls back to the
160
29
  // generic screen title before the account resolves).
30
+ const username = node?.account?.username;
161
31
  useSurfaceHeader({
162
- title: accountHandle || title,
163
- subtitle: t('accounts.settings.subtitle') || 'Manage this account’s profile, members, and access.'
32
+ title: username ? `@${username}` : t('accounts.settings.title'),
33
+ subtitle: t('accounts.settings.subtitle')
164
34
  });
165
- if (!id) {
166
- return /*#__PURE__*/_jsx(_Fragment, {
167
- children: /*#__PURE__*/_jsx(View, {
168
- className: "items-center justify-center px-screen-margin py-space-40",
169
- children: /*#__PURE__*/_jsx(Text, {
170
- className: "text-body font-body text-text-secondary text-center",
171
- children: t('accounts.settings.errors.missingAccount') || 'No account selected.'
172
- })
173
- })
174
- });
175
- }
176
- return /*#__PURE__*/_jsx(_Fragment, {
177
- children: /*#__PURE__*/_jsx(View, {
178
- className: "px-screen-margin pt-space-24 pb-space-32 gap-space-24",
179
- children: accountQuery.isLoading ? /*#__PURE__*/_jsx(View, {
180
- className: "items-center py-space-32",
181
- children: null
182
- }) : /*#__PURE__*/_jsxs(_Fragment, {
183
- children: [canUpdate ? /*#__PURE__*/_jsxs(View, {
184
- className: "gap-space-16 p-space-16 rounded-radius-20 bg-fill",
185
- children: [/*#__PURE__*/_jsxs(View, {
186
- className: "gap-space-4",
187
- children: [/*#__PURE__*/_jsx(TextField, {
188
- isInvalid: Boolean(displayNameError),
189
- children: /*#__PURE__*/_jsx(TextFieldInput, {
190
- floatingLabel: true,
191
- label: t('accounts.settings.displayName.label') || 'Display name',
192
- value: displayName,
193
- onChangeText: handleDisplayNameChange,
194
- isInvalid: Boolean(displayNameError),
195
- maxLength: accountNameMaxLength(node?.account.kind)
196
- })
197
- }), displayNameError ? /*#__PURE__*/_jsx(Text, {
198
- className: "text-caption font-caption text-negative px-space-4",
199
- children: displayNameError
200
- }) : null]
201
- }), /*#__PURE__*/_jsxs(View, {
202
- className: "gap-space-4",
203
- children: [/*#__PURE__*/_jsx(TextField, {
204
- children: /*#__PURE__*/_jsx(TextFieldInput, {
205
- floatingLabel: true,
206
- label: t('accounts.settings.bio.label') || 'Bio (optional)',
207
- value: bio,
208
- onChangeText: setBio,
209
- maxLength: BIO_MAX,
210
- multiline: true,
211
- numberOfLines: 3,
212
- textAlignVertical: "top"
213
- })
214
- }), /*#__PURE__*/_jsxs(Text, {
215
- className: "text-caption font-caption text-text-tertiary px-space-4 text-right",
216
- children: [bio.length, "/", BIO_MAX]
217
- })]
218
- }), /*#__PURE__*/_jsx(Button, {
219
- appearance: "solid",
220
- tone: "accent",
221
- onPress: handleSave,
222
- disabled: updateMutation.isPending || !displayName.trim() || Boolean(displayNameError),
223
- loading: updateMutation.isPending,
224
- accessibilityLabel: t('accounts.settings.save') || 'Save changes',
225
- className: "w-full",
226
- children: t('accounts.settings.save') || 'Save changes'
227
- })]
228
- }) : null, node?.account.kind === 'organization' ? /*#__PURE__*/_jsx(OrganizationSettings, {
229
- accountId: id,
230
- canUpdate: canUpdate
231
- }, id) : null, canViewMembers ? /*#__PURE__*/_jsx(GroupedSection, {
232
- title: t('accounts.settings.sections.access') || 'Access',
233
- children: /*#__PURE__*/_jsx(GroupedSectionItem, {
234
- icon: /*#__PURE__*/_jsx(SettingsIcon, {
235
- name: "account-multiple",
236
- color: colors.info
237
- }),
238
- title: t('accounts.members.title') || 'Members',
239
- description: t('accounts.settings.members.subtitle') || 'Invite people and manage roles',
240
- onPress: () => navigate?.('AccountMembers', {
241
- accountId: id
242
- })
243
- })
244
- }) : null, canArchive ? /*#__PURE__*/_jsx(GroupedSection, {
245
- title: t('accounts.settings.sections.dangerZone') || 'Danger zone',
246
- children: /*#__PURE__*/_jsx(GroupedSectionItem, {
247
- icon: /*#__PURE__*/_jsx(SettingsIcon, {
248
- name: "archive-arrow-down",
249
- color: colors.error
250
- }),
251
- title: t('accounts.settings.archive.title') || 'Archive account',
252
- description: t('accounts.settings.archive.subtitle') || 'Deactivate this account',
253
- onPress: handleArchive
254
- })
255
- }) : null]
256
- })
257
- })
35
+ return /*#__PURE__*/_jsx(AccountSettings, {
36
+ accountId: id,
37
+ navigate: navigate,
38
+ onClose: onClose ?? goBack
258
39
  });
259
40
  };
260
41
  export default AccountSettingsScreen;
@@ -1 +1 @@
1
- {"version":3,"names":["OrganizationSettings","useCallback","useMemo","useState","View","useQuery","useMutation","useQueryClient","toast","surfaces","useTheme","Text","Button","TextField","TextFieldInput","GroupedSection","GroupedSectionItem","accountNameInvalidKey","accountNameInvalidMessage","accountNameMaxLength","getNormalizedUserHandle","isValidAccountName","SettingsIcon","useOxy","useI18n","useSurfaceHeader","clearedFieldsFromAccountUpdate","upsertCachedUser","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","BIO_MAX","errorMessage","error","fallback","Error","message","AccountSettingsScreen","onClose","goBack","navigate","accountId","bloomTheme","colors","t","oxyServices","canUsePrivateApi","user","accounts","switchToAccount","queryClient","id","accountQuery","queryKey","initialData","find","account","undefined","initialDataUpdatedAt","queryFn","get","enabled","length","node","isSuccess","data","permissions","callerMembership","isImplicitOwner","relationship","can","permission","includes","canUpdate","canViewMembers","canArchive","seeded","setSeeded","displayName","setDisplayName","displayNameError","setDisplayNameError","bio","setBio","name","updateMutation","mutationKey","mutationFn","input","update","onSuccess","updatedNode","cleared","invalidateQueries","success","onError","archiveMutation","archive","personal","catch","handleArchive","confirmed","confirm","title","description","confirmLabel","cancelLabel","destructive","mutate","handleDisplayNameChange","value","trimmed","trim","kind","handleSave","accountHandle","username","subtitle","children","className","isLoading","isInvalid","Boolean","floatingLabel","label","onChangeText","maxLength","multiline","numberOfLines","textAlignVertical","appearance","tone","onPress","disabled","isPending","loading","accessibilityLabel","icon","color","info"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountSettingsScreen.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AccountSettings","useAccountSettingsNode","useI18n","useSurfaceHeader","jsx","_jsx","AccountSettingsScreen","onClose","goBack","navigate","accountId","t","id","node","username","account","title","subtitle"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountSettingsScreen.tsx"],"mappings":";;AAEA,SACEA,eAAe,EACfC,sBAAsB,QACjB,kDAA+C;AACtD,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,gBAAgB,QAAQ,8BAA2B;;AAE5D;AACA;AACA;AACA;AACA;AACA;AALA,SAAAC,GAAA,IAAAC,IAAA;AAMA,MAAMC,qBAAgD,GAAGA,CAAC;EACxDC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAE,CAAC,GAAGT,OAAO,CAAC,CAAC;EACvB,MAAMU,EAAE,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAG,EAAE;EACzD,MAAM;IAAEG;EAAK,CAAC,GAAGZ,sBAAsB,CAACW,EAAE,CAAC;;EAE3C;EACA;EACA,MAAME,QAAQ,GAAGD,IAAI,EAAEE,OAAO,EAAED,QAAQ;EACxCX,gBAAgB,CAAC;IACfa,KAAK,EAAEF,QAAQ,GAAG,IAAIA,QAAQ,EAAE,GAAGH,CAAC,CAAC,yBAAyB,CAAC;IAC/DM,QAAQ,EAAEN,CAAC,CAAC,4BAA4B;EAC1C,CAAC,CAAC;EAEF,oBAAON,IAAA,CAACL,eAAe;IAACU,SAAS,EAAEE,EAAG;IAACH,QAAQ,EAAEA,QAAS;IAACF,OAAO,EAAEA,OAAO,IAAIC;EAAO,CAAE,CAAC;AAC3F,CAAC;AAED,eAAeF,qBAAqB","ignoreList":[]}
@@ -90,9 +90,26 @@ async function loadImagePicker() {
90
90
  return null;
91
91
  }
92
92
  }
93
+
94
+ /**
95
+ * The `subject` route prop, when a caller is changing a picture that is not the
96
+ * signed-in user's (see `pickAvatarFile`). Route props arrive untyped.
97
+ */
98
+ function readSubject(value) {
99
+ if (!value || typeof value !== 'object') return null;
100
+ const {
101
+ avatar,
102
+ displayName
103
+ } = value;
104
+ return {
105
+ avatar: typeof avatar === 'string' && avatar.length > 0 ? avatar : null,
106
+ displayName: typeof displayName === 'string' ? displayName : undefined
107
+ };
108
+ }
93
109
  const ChangeAvatarScreen = ({
94
110
  navigate,
95
- dismiss
111
+ dismiss,
112
+ subject
96
113
  }) => {
97
114
  const bloomTheme = useTheme();
98
115
  const {
@@ -102,6 +119,8 @@ const ChangeAvatarScreen = ({
102
119
  user,
103
120
  oxyServices
104
121
  } = useOxy();
122
+ const other = useMemo(() => readSubject(subject), [subject]);
123
+ const currentAvatar = other ? other.avatar : user?.avatar;
105
124
 
106
125
  /** Set when a permission was refused — drives the inline denied notice. */
107
126
  const [denied, setDenied] = useState(null);
@@ -110,10 +129,10 @@ const ChangeAvatarScreen = ({
110
129
  useSurfaceHeader(useMemo(() => ({
111
130
  title: t('changeAvatar.title')
112
131
  }), [t]));
113
- const displayName = useMemo(() => user?.name?.displayName ?? getNormalizedUserHandle(user) ?? '', [user]);
132
+ const displayName = useMemo(() => other ? other.displayName ?? '' : user?.name?.displayName ?? getNormalizedUserHandle(user) ?? '', [other, user]);
114
133
  const avatarUri = useMemo(
115
134
  // `thumb` is 256x256 — exactly a 2x source for the 132dp hero.
116
- () => user?.avatar ? oxyServices.assets.publicUrl(user.avatar, 'thumb') : undefined, [user?.avatar, oxyServices]);
135
+ () => currentAvatar ? oxyServices.assets.publicUrl(currentAvatar, 'thumb') : undefined, [currentAvatar, oxyServices]);
117
136
 
118
137
  /**
119
138
  * Hand a source to the crop editor by navigating WITHIN this surface (a push,
@@ -293,7 +312,7 @@ const ChangeAvatarScreen = ({
293
312
  title: t('changeAvatar.sources.remove.title'),
294
313
  description: t('changeAvatar.sources.remove.description'),
295
314
  destructive: true,
296
- disabled: busy || !user?.avatar,
315
+ disabled: busy || !currentAvatar,
297
316
  onPress: () => void removeCurrentPhoto()
298
317
  })]
299
318
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useMemo","useState","Linking","Platform","View","Avatar","GroupedSection","GroupedSectionItem","AdmonitionRoot","AdmonitionRow","AdmonitionIcon","AdmonitionContent","AdmonitionText","AdmonitionButton","surfaces","bloomSurfaces","useTheme","toast","getNormalizedUserHandle","logger","useOxy","useI18n","useSurfaceHeader","SettingsIcon","jsx","_jsx","jsxs","_jsxs","LOG_COMPONENT","PREVIEW_SIZE","NON_IMAGE_MIME_TYPES","PICKER_OPTIONS","mediaTypes","allowsMultipleSelection","quality","loadImagePicker","mod","launchImageLibraryAsync","err","debug","component","reason","Error","message","String","ChangeAvatarScreen","navigate","dismiss","bloomTheme","t","user","oxyServices","denied","setDenied","busy","setBusy","title","displayName","name","avatarUri","avatar","assets","publicUrl","undefined","goToCrop","cropProps","pickFromDevice","source","picker","error","permission","requestCameraPermissionsAsync","requestMediaLibraryPermissionsAsync","granted","result","launchCameraAsync","asset","canceled","uri","imageUri","sourceWidth","width","sourceHeight","height","handleOxyFilePicked","file","contentType","startsWith","imageFileId","id","pickFromOxyFiles","selectMode","multiSelect","disabledMimeTypes","onPicked","removeCurrentPhoto","confirmed","confirm","description","confirmLabel","cancelLabel","destructive","removal","removed","openSystemSettings","openSettings","canUseCamera","OS","className","children","accessible","accessibilityRole","accessibilityLabel","size","type","onPress","icon","color","colors","primary","disabled","info","success"],"sourceRoot":"../../../../src","sources":["ui/screens/ChangeAvatarScreen.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useMemo","useState","Linking","Platform","View","Avatar","GroupedSection","GroupedSectionItem","AdmonitionRoot","AdmonitionRow","AdmonitionIcon","AdmonitionContent","AdmonitionText","AdmonitionButton","surfaces","bloomSurfaces","useTheme","toast","getNormalizedUserHandle","logger","useOxy","useI18n","useSurfaceHeader","SettingsIcon","jsx","_jsx","jsxs","_jsxs","LOG_COMPONENT","PREVIEW_SIZE","NON_IMAGE_MIME_TYPES","PICKER_OPTIONS","mediaTypes","allowsMultipleSelection","quality","loadImagePicker","mod","launchImageLibraryAsync","err","debug","component","reason","Error","message","String","readSubject","value","avatar","displayName","length","undefined","ChangeAvatarScreen","navigate","dismiss","subject","bloomTheme","t","user","oxyServices","other","currentAvatar","denied","setDenied","busy","setBusy","title","name","avatarUri","assets","publicUrl","goToCrop","cropProps","pickFromDevice","source","picker","error","permission","requestCameraPermissionsAsync","requestMediaLibraryPermissionsAsync","granted","result","launchCameraAsync","asset","canceled","uri","imageUri","sourceWidth","width","sourceHeight","height","handleOxyFilePicked","file","contentType","startsWith","imageFileId","id","pickFromOxyFiles","selectMode","multiSelect","disabledMimeTypes","onPicked","removeCurrentPhoto","confirmed","confirm","description","confirmLabel","cancelLabel","destructive","removal","removed","openSystemSettings","openSettings","canUseCamera","OS","className","children","accessible","accessibilityRole","accessibilityLabel","size","type","onPress","icon","color","colors","primary","disabled","info","success"],"sourceRoot":"../../../../src","sources":["ui/screens/ChangeAvatarScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -19,4 +19,8 @@ export { default as AccountMembersScreen } from "./AccountMembersScreen.js";
19
19
  export { default as AccountSettingsScreen } from "./AccountSettingsScreen.js";
20
20
  export { default as SupervisionScreen } from "./SupervisionScreen.js";
21
21
  export { default as OxyOneScreen } from "./OxyOneScreen.js";
22
+
23
+ // The body of the `AccountSettings` surface, for an app embedding a managed
24
+ // account's settings in its own page with its own sections around them.
25
+ export { AccountSettings } from "../components/accountSettings/AccountSettings.js";
22
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","ProfileScreen","ManageAccountScreen","NotificationsScreen","PreferencesScreen","ConnectedAppsScreen","CreateAccountScreen","AccountMembersScreen","AccountSettingsScreen","SupervisionScreen","OxyOneScreen"],"sourceRoot":"../../../../src","sources":["ui/screens/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,aAAa,QAAQ,oBAAiB;AAC1D,SAASD,OAAO,IAAIE,mBAAmB,QAAQ,0BAAuB;AACtE,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,0BAAuB;AACtE,SAASH,OAAO,IAAII,iBAAiB,QAAQ,wBAAqB;AAClE,SAASJ,OAAO,IAAIK,mBAAmB,QAAQ,0BAAuB;AACtE,SAASL,OAAO,IAAIM,mBAAmB,QAAQ,0BAAuB;AACtE,SAASN,OAAO,IAAIO,oBAAoB,QAAQ,2BAAwB;AACxE,SAASP,OAAO,IAAIQ,qBAAqB,QAAQ,4BAAyB;AAE1E,SAASR,OAAO,IAAIS,iBAAiB,QAAQ,wBAAqB;AAClE,SAAST,OAAO,IAAIU,YAAY,QAAQ,mBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["default","ProfileScreen","ManageAccountScreen","NotificationsScreen","PreferencesScreen","ConnectedAppsScreen","CreateAccountScreen","AccountMembersScreen","AccountSettingsScreen","SupervisionScreen","OxyOneScreen","AccountSettings"],"sourceRoot":"../../../../src","sources":["ui/screens/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,aAAa,QAAQ,oBAAiB;AAC1D,SAASD,OAAO,IAAIE,mBAAmB,QAAQ,0BAAuB;AACtE,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,0BAAuB;AACtE,SAASH,OAAO,IAAII,iBAAiB,QAAQ,wBAAqB;AAClE,SAASJ,OAAO,IAAIK,mBAAmB,QAAQ,0BAAuB;AACtE,SAASL,OAAO,IAAIM,mBAAmB,QAAQ,0BAAuB;AACtE,SAASN,OAAO,IAAIO,oBAAoB,QAAQ,2BAAwB;AACxE,SAASP,OAAO,IAAIQ,qBAAqB,QAAQ,4BAAyB;AAE1E,SAASR,OAAO,IAAIS,iBAAiB,QAAQ,wBAAqB;AAClE,SAAST,OAAO,IAAIU,YAAY,QAAQ,mBAAgB;;AAExD;AACA;AACA,SACEC,eAAe,QAGV,kDAA+C","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ import type React from 'react';
2
+ import { type AccountCategoryId } from '@oxy.so/core';
3
+ /**
4
+ * An account's categories are an ORDERED list whose element 0 is the primary —
5
+ * nothing else records which one is. So nothing here sorts: a choice joins at
6
+ * the end (choosing a second category must not demote the first), "Make
7
+ * primary" moves one to the front, and two lists are equal only in the same
8
+ * order (a promotion changes nothing BUT the order).
9
+ */
10
+ export declare function toggleAccountCategory(current: readonly AccountCategoryId[], id: AccountCategoryId): AccountCategoryId[];
11
+ export declare function promoteAccountCategory(current: readonly AccountCategoryId[], id: AccountCategoryId): AccountCategoryId[];
12
+ export declare function accountCategoriesEqual(a: readonly AccountCategoryId[], b: readonly AccountCategoryId[]): boolean;
13
+ interface AccountCategoriesSectionProps {
14
+ value: readonly AccountCategoryId[];
15
+ onChange: (next: AccountCategoryId[]) => void;
16
+ disabled?: boolean;
17
+ }
18
+ /**
19
+ * The categories editor of `AccountSettings`: the chosen categories in their
20
+ * stored order (primary first), and a collapsible list of the vocabulary to add
21
+ * from. Only SELECTABLE ids are offered — a withdrawn one stays on an account
22
+ * that carries it, but Oxy refuses newly adding it.
23
+ */
24
+ export declare const AccountCategoriesSection: React.FC<AccountCategoriesSectionProps>;
25
+ export {};
26
+ //# sourceMappingURL=AccountCategoriesSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountCategoriesSection.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/accountSettings/AccountCategoriesSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAKtB;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,EAAE,EAAE,iBAAiB,GACpB,iBAAiB,EAAE,CAIrB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,EAAE,EAAE,iBAAiB,GACpB,iBAAiB,EAAE,CAGrB;AAED,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,SAAS,iBAAiB,EAAE,EAC/B,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAC9B,OAAO,CAET;AASD,UAAU,6BAA6B;IACrC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAgH5E,CAAC"}
@@ -0,0 +1,80 @@
1
+ import type React from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import { type AccountNode, type User } from '@oxy.so/core';
4
+ import { type ClearableUserField } from '../../hooks/queries/userCache';
5
+ import type { BaseScreenProps } from '../../types/navigation';
6
+ /**
7
+ * How archiving the account behaves, for an app whose ending of an account
8
+ * means more than Oxy's archive.
9
+ */
10
+ export interface AccountSettingsArchiveOptions {
11
+ /** The danger-zone row's title, replacing "Archive account". */
12
+ title?: string;
13
+ /**
14
+ * The row's subtitle. With a `title` of its own the row shows only this
15
+ * (nothing when omitted), never Oxy's subtitle under the app's title.
16
+ */
17
+ description?: string;
18
+ /** The danger-zone section's footer. */
19
+ footer?: string;
20
+ /**
21
+ * Replaces the default confirmation. Resolve `false` to back out; a rejection
22
+ * is reported as an archive failure and nothing is archived.
23
+ */
24
+ confirm?: (node: AccountNode) => Promise<boolean>;
25
+ /**
26
+ * Runs after the confirmation and BEFORE Oxy archives the account — for an
27
+ * app's own data that has to go while the account still resolves. A
28
+ * rejection stops the archive and is reported as an archive failure.
29
+ */
30
+ beforeArchive?: (node: AccountNode) => Promise<void>;
31
+ /** After the archive, in place of closing the surface. */
32
+ onArchived?: (node: AccountNode) => void;
33
+ /** The success toast, replacing "Account archived". */
34
+ successMessage?: string;
35
+ }
36
+ export interface AccountSettingsProps {
37
+ accountId: string;
38
+ /**
39
+ * The app's own sections for this account, rendered after the account's
40
+ * profile, categories and members, and before the danger zone.
41
+ */
42
+ extraSections?: ReactNode;
43
+ /**
44
+ * After each accepted profile write — name, bio, picture, categories — with
45
+ * the account Oxy returned and the fields the write cleared. The SDK's user
46
+ * cache already holds the change; this is for an app's own copies of the
47
+ * identity (posts that embed it, for example).
48
+ */
49
+ onUpdated?: (account: User, change: {
50
+ cleared: ClearableUserField[];
51
+ }) => void;
52
+ archive?: AccountSettingsArchiveOptions;
53
+ /**
54
+ * The host surface's navigation, for the SDK routes this opens (Members).
55
+ * Omitted when the settings are embedded in an app's own page, and those
56
+ * routes open as a sheet.
57
+ */
58
+ navigate?: BaseScreenProps['navigate'];
59
+ /** Called after an archive when `archive.onArchived` is not given. */
60
+ onClose?: () => void;
61
+ }
62
+ /**
63
+ * The account-graph node {@link AccountSettings} edits — seeded from the
64
+ * session's account list, then read fresh. `node` is `null` until it resolves.
65
+ */
66
+ export declare function useAccountSettingsNode(accountId: string): {
67
+ query: import("@tanstack/react-query").UseQueryResult<AccountNode, Error>;
68
+ node: AccountNode | null;
69
+ };
70
+ /**
71
+ * A non-personal account's settings: its picture, name, bio and categories,
72
+ * its members, and archiving it. The one editor for every member-operated
73
+ * account — the `AccountSettings` surface renders it, and an app embeds it in
74
+ * its own page (`@oxy.so/services/screens`) with its own sections and archive
75
+ * steps around it. Oxy decides what the caller may do from the membership it
76
+ * resolved, so every section is shown only to a member who holds its right.
77
+ */
78
+ export declare const AccountSettings: React.FC<AccountSettingsProps>;
79
+ export default AccountSettings;
80
+ //# sourceMappingURL=AccountSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountSettings.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/accountSettings/AccountSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,OAAO,EAQL,KAAK,WAAW,EAEhB,KAAK,IAAI,EACV,MAAM,cAAc,CAAC;AAItB,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAW9D;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,0DAA0D;IAC1D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,kBAAkB,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/E,OAAO,CAAC,EAAE,6BAA6B,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM;;;EAYvD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoS1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -2,7 +2,10 @@
2
2
  * Avatar Picker Hook
3
3
  *
4
4
  * The ONE write path for a user's profile picture. It owns no UI: the whole
5
- * choose-and-crop experience is a single surface.
5
+ * choose-and-crop experience is a single surface. The choosing half —
6
+ * {@link pickAvatarFile} — is account-agnostic and also serves a managed
7
+ * account's picture (`AccountSettings`), so there is one picker, one cropper and
8
+ * one upload for every account an app can edit.
6
9
  *
7
10
  * Flow (typed promise over the shared surface stack — no callback props):
8
11
  * 1. `openWithinOrPresent('ChangeAvatar')` opens the source list (device gallery,
@@ -27,6 +30,24 @@ interface UseAvatarPickerOptions {
27
30
  activeSessionId: string | null;
28
31
  queryClient: QueryClient;
29
32
  }
33
+ /**
34
+ * Whose picture the picker is changing, when it is not the signed-in user's —
35
+ * the source list previews it and offers "Remove" only when there is one.
36
+ */
37
+ export interface AvatarPickerSubject {
38
+ avatar?: string | null;
39
+ displayName?: string;
40
+ }
41
+ /**
42
+ * The shared choose-and-crop flow, then the crop uploaded as a NEW public file.
43
+ *
44
+ * Resolves the new file's id, `null` when the person chose to remove the
45
+ * picture, or `undefined` when they backed out. It writes no account: the
46
+ * caller decides whose picture the file becomes, which is what lets the
47
+ * signed-in user's profile and a managed account share every step before that.
48
+ * An upload failure rejects.
49
+ */
50
+ export declare function pickAvatarFile(oxyServices: OxyServices, subject?: AvatarPickerSubject): Promise<string | null | undefined>;
30
51
  export declare function useAvatarPicker({ oxyServices, currentLanguage, activeSessionId, queryClient, }: UseAvatarPickerOptions): {
31
52
  openAvatarPicker: () => Promise<void>;
32
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useAvatarPicker.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAvatarPicker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMzD,UAAU,sBAAsB;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAkBD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,GACZ,EAAE,sBAAsB;;EA2ExB"}
1
+ {"version":3,"file":"useAvatarPicker.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAvatarPicker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,UAAU,sBAAsB;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAkBD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAmBpC;AAED,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,GACZ,EAAE,sBAAsB;;EA2BxB"}