@oxyhq/services 27.0.0 → 27.1.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 (60) hide show
  1. package/lib/commonjs/index.js +29 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/components/FollowButton.js +3 -5
  4. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  5. package/lib/commonjs/ui/components/FollowTargetButton.js +292 -0
  6. package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -0
  7. package/lib/commonjs/ui/hooks/useFollowTarget.js +140 -0
  8. package/lib/commonjs/ui/hooks/useFollowTarget.js.map +1 -0
  9. package/lib/commonjs/ui/screens/AccountMembersScreen.js +49 -6
  10. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  11. package/lib/commonjs/ui/stores/followTargetStore.js +113 -0
  12. package/lib/commonjs/ui/stores/followTargetStore.js.map +1 -0
  13. package/lib/commonjs/ui/stores/resetSessionScopedStores.js +2 -0
  14. package/lib/commonjs/ui/stores/resetSessionScopedStores.js.map +1 -1
  15. package/lib/module/index.js +4 -0
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/ui/components/FollowButton.js +3 -5
  18. package/lib/module/ui/components/FollowButton.js.map +1 -1
  19. package/lib/module/ui/components/FollowTargetButton.js +287 -0
  20. package/lib/module/ui/components/FollowTargetButton.js.map +1 -0
  21. package/lib/module/ui/hooks/useFollowTarget.js +136 -0
  22. package/lib/module/ui/hooks/useFollowTarget.js.map +1 -0
  23. package/lib/module/ui/screens/AccountMembersScreen.js +49 -6
  24. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  25. package/lib/module/ui/stores/followTargetStore.js +107 -0
  26. package/lib/module/ui/stores/followTargetStore.js.map +1 -0
  27. package/lib/module/ui/stores/resetSessionScopedStores.js +2 -0
  28. package/lib/module/ui/stores/resetSessionScopedStores.js.map +1 -1
  29. package/lib/typescript/commonjs/index.d.ts +5 -0
  30. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts +119 -0
  33. package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -0
  34. package/lib/typescript/commonjs/ui/hooks/useFollowTarget.d.ts +41 -0
  35. package/lib/typescript/commonjs/ui/hooks/useFollowTarget.d.ts.map +1 -0
  36. package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/ui/stores/followTargetStore.d.ts +70 -0
  38. package/lib/typescript/commonjs/ui/stores/followTargetStore.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/ui/stores/resetSessionScopedStores.d.ts.map +1 -1
  40. package/lib/typescript/module/index.d.ts +5 -0
  41. package/lib/typescript/module/index.d.ts.map +1 -1
  42. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  43. package/lib/typescript/module/ui/components/FollowTargetButton.d.ts +119 -0
  44. package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -0
  45. package/lib/typescript/module/ui/hooks/useFollowTarget.d.ts +41 -0
  46. package/lib/typescript/module/ui/hooks/useFollowTarget.d.ts.map +1 -0
  47. package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  48. package/lib/typescript/module/ui/stores/followTargetStore.d.ts +70 -0
  49. package/lib/typescript/module/ui/stores/followTargetStore.d.ts.map +1 -0
  50. package/lib/typescript/module/ui/stores/resetSessionScopedStores.d.ts.map +1 -1
  51. package/package.json +3 -3
  52. package/src/index.ts +11 -0
  53. package/src/ui/components/FollowButton.tsx +3 -5
  54. package/src/ui/components/FollowTargetButton.tsx +326 -0
  55. package/src/ui/components/__tests__/followTargetButton.test.ts +132 -0
  56. package/src/ui/hooks/useFollowTarget.ts +194 -0
  57. package/src/ui/screens/AccountMembersScreen.tsx +62 -6
  58. package/src/ui/stores/__tests__/resetSessionScopedStores.test.ts +23 -0
  59. package/src/ui/stores/followTargetStore.ts +119 -0
  60. package/src/ui/stores/resetSessionScopedStores.ts +2 -0
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * `FollowTargetButton` — one button for everything an Oxy user can follow.
5
+ *
6
+ * Follows a TARGET of any registered kind: a person, a topic, a channel, a
7
+ * store, an artist. Nothing in this file branches on what the target is, which
8
+ * is the property that lets an application this package has never heard of use
9
+ * it without a release.
10
+ *
11
+ * ## Two controls, not one
12
+ *
13
+ * The main press does the obvious thing. The chevron beside it opens the
14
+ * choices that a single press cannot express — follow for a while, stop showing
15
+ * this here without giving it up everywhere — and those belong behind a
16
+ * disclosure precisely because they are not what most people want most of the
17
+ * time. Bloom's `Menu` renders as a bottom sheet on native and a dropdown on
18
+ * web, so this is one component and not a platform fork.
19
+ *
20
+ * ## Verbs
21
+ *
22
+ * "Follow" is wrong for half the things in the ecosystem: you subscribe to a
23
+ * channel, you join a community, you watch a listing. The verb is a prop with a
24
+ * small vocabulary of defaults and a full override, rather than a lookup keyed
25
+ * on kind — a kind→verb table in this package would need a release every time
26
+ * an application invents a kind, which is exactly the coupling #809 removes.
27
+ *
28
+ * ## Relationship to the legacy `FollowButton`
29
+ *
30
+ * `FollowButton` follows a USER through the Mongo-backed social graph and
31
+ * remains the correct component for that until the user graph is migrated onto
32
+ * `/v2/follows`. When it is, that component is deleted and this one takes the
33
+ * name — not aliased, not deprecated in place.
34
+ */
35
+
36
+ import { memo, useCallback, useMemo } from 'react';
37
+ import { View } from 'react-native';
38
+ import { Button } from '@oxyhq/bloom/button';
39
+ import { ChevronBottom_Stroke2_Corner0_Rounded as ChevronDown } from '@oxyhq/bloom/icons';
40
+ import { Menu, MenuContent, MenuItem, MenuItemText, MenuTrigger } from '@oxyhq/bloom/menu';
41
+ import { toast } from '@oxyhq/bloom/toast';
42
+ import { useFollowTarget } from "../hooks/useFollowTarget.js";
43
+
44
+ /**
45
+ * The small vocabulary of verbs the ecosystem actually uses. An application
46
+ * whose verb is not here passes `labels` instead — the escape hatch exists so
47
+ * this union never has to grow to accommodate one product's wording.
48
+ */
49
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
50
+ const VERB_LABELS = {
51
+ follow: {
52
+ idle: 'Follow',
53
+ active: 'Following',
54
+ pending: 'Requested',
55
+ disabled: 'Off here'
56
+ },
57
+ subscribe: {
58
+ idle: 'Subscribe',
59
+ active: 'Subscribed',
60
+ pending: 'Requested',
61
+ disabled: 'Off here'
62
+ },
63
+ join: {
64
+ idle: 'Join',
65
+ active: 'Joined',
66
+ pending: 'Requested',
67
+ disabled: 'Off here'
68
+ },
69
+ watch: {
70
+ idle: 'Watch',
71
+ active: 'Watching',
72
+ pending: 'Requested',
73
+ disabled: 'Off here'
74
+ }
75
+ };
76
+
77
+ /** A timed-follow choice offered in the menu. */
78
+
79
+ const HOUR = 60 * 60;
80
+
81
+ /**
82
+ * Defaults chosen for the cases a timed follow is actually for: a live event
83
+ * tonight, a story running this week. Not a general-purpose duration picker —
84
+ * an application that needs one passes its own.
85
+ */
86
+ const DEFAULT_DURATIONS = [{
87
+ label: '24 hours',
88
+ seconds: 24 * HOUR
89
+ }, {
90
+ label: '72 hours',
91
+ seconds: 72 * HOUR
92
+ }, {
93
+ label: 'A week',
94
+ seconds: 7 * 24 * HOUR
95
+ }];
96
+
97
+ /** One line in the disclosure menu. */
98
+
99
+ /**
100
+ * Which choices exist, given the state.
101
+ *
102
+ * Pure and exported because this is the product decision, not a rendering
103
+ * detail: a timed follow is only offered before following, turning it off here
104
+ * is only offered while following, and NEITHER is offered before the server has
105
+ * answered — every one of them addresses a relationship that does not exist
106
+ * yet, so offering them mid-write would mean sending a guessed id.
107
+ */
108
+ export function buildFollowMenuItems(input) {
109
+ const items = [];
110
+ if (!input.following) {
111
+ if (input.durations === false) return items;
112
+ for (const d of input.durations) {
113
+ items.push({
114
+ key: `for-${d.seconds}`,
115
+ label: `${input.idleVerb} for ${d.label.toLowerCase()}`,
116
+ action: {
117
+ type: 'follow-timed',
118
+ seconds: d.seconds,
119
+ durationLabel: d.label
120
+ }
121
+ });
122
+ }
123
+ return items;
124
+ }
125
+ if (!input.hasRelationship || input.isPending) return items;
126
+ items.push(input.applicationMode === 'disabled' ? {
127
+ key: 'enable-here',
128
+ label: `Show in ${input.applicationName}`,
129
+ action: {
130
+ type: 'enable-here'
131
+ }
132
+ } : {
133
+ key: 'disable-here',
134
+ label: `Don’t show in ${input.applicationName}`,
135
+ action: {
136
+ type: 'disable-here'
137
+ }
138
+ });
139
+ items.push({
140
+ // Named for what it does. "Unfollow" beside "don't show here" would read as
141
+ // the same action twice, and the user would pick the wrong one.
142
+ key: 'unfollow-everywhere',
143
+ label: 'Unfollow everywhere',
144
+ action: {
145
+ type: 'unfollow'
146
+ }
147
+ });
148
+ return items;
149
+ }
150
+ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton({
151
+ targetId,
152
+ verb = 'follow',
153
+ labels,
154
+ size = 'medium',
155
+ style,
156
+ disabled = false,
157
+ showOptions = true,
158
+ durations = DEFAULT_DURATIONS,
159
+ applicationName,
160
+ onChange
161
+ }) {
162
+ const {
163
+ status,
164
+ isFollowing,
165
+ isUnknown,
166
+ isPending,
167
+ follow,
168
+ unfollow,
169
+ disableHere,
170
+ enableHere
171
+ } = useFollowTarget(targetId);
172
+ const text = useMemo(() => ({
173
+ ...VERB_LABELS[verb],
174
+ ...labels
175
+ }), [verb, labels]);
176
+ const label = useMemo(() => {
177
+ if (status.globalState === 'requested') return text.pending;
178
+ if (!isFollowing) return text.idle;
179
+ // Followed globally but switched off here. `effectiveState` reports
180
+ // `not_following` for this, correctly — the question it answers is "does
181
+ // this act here" — so the label has to be derived from the other two.
182
+ return status.applicationMode === 'disabled' ? text.disabled : text.active;
183
+ }, [isFollowing, status.globalState, status.applicationMode, text]);
184
+ const handlePrimary = useCallback(async () => {
185
+ if (isFollowing) {
186
+ await unfollow();
187
+ onChange?.(false);
188
+ return;
189
+ }
190
+ await follow();
191
+ onChange?.(true);
192
+ }, [isFollowing, follow, unfollow, onChange]);
193
+ const handleTimed = useCallback(async (seconds, durationLabel) => {
194
+ await follow({
195
+ expiresIn: seconds
196
+ });
197
+ onChange?.(true);
198
+ // The confirmation is the point: a follow that ends on its own is a
199
+ // promise, and a user who does not see it made will not believe it.
200
+ toast.success(`Following for ${durationLabel.toLowerCase()}`);
201
+ }, [follow, onChange]);
202
+ const menuItems = useMemo(() => buildFollowMenuItems({
203
+ following: isFollowing,
204
+ applicationMode: status.applicationMode,
205
+ hasRelationship: Boolean(status.relationshipId),
206
+ isPending,
207
+ durations,
208
+ idleVerb: text.idle,
209
+ applicationName: applicationName ?? 'this app'
210
+ }), [isFollowing, status.applicationMode, status.relationshipId, isPending, durations, text.idle, applicationName]);
211
+ const runItem = useCallback(item => {
212
+ switch (item.action.type) {
213
+ case 'follow-timed':
214
+ void handleTimed(item.action.seconds, item.action.durationLabel);
215
+ return;
216
+ case 'enable-here':
217
+ void enableHere();
218
+ return;
219
+ case 'disable-here':
220
+ void disableHere();
221
+ return;
222
+ case 'unfollow':
223
+ void unfollow();
224
+ onChange?.(false);
225
+ }
226
+ }, [handleTimed, enableHere, disableHere, unfollow, onChange]);
227
+ const primary = /*#__PURE__*/_jsx(Button, {
228
+ variant: isFollowing ? 'secondary' : 'primary',
229
+ size: size
230
+ // Unknown is not "not following": the button stays inert until the first
231
+ // read settles rather than inviting a follow that may already exist.
232
+ ,
233
+ disabled: disabled || isUnknown,
234
+ loading: isPending,
235
+ onPress: () => void handlePrimary(),
236
+ accessibilityLabel: label,
237
+ children: label
238
+ });
239
+ if (!showOptions || menuItems.length === 0) {
240
+ return /*#__PURE__*/_jsx(View, {
241
+ style: style,
242
+ children: primary
243
+ });
244
+ }
245
+ return /*#__PURE__*/_jsxs(View, {
246
+ style: [{
247
+ flexDirection: 'row',
248
+ alignItems: 'center',
249
+ gap: 4
250
+ }, style],
251
+ children: [primary, /*#__PURE__*/_jsxs(Menu, {
252
+ children: [/*#__PURE__*/_jsx(MenuTrigger, {
253
+ label: `${label} options`,
254
+ hint: "Opens follow options",
255
+ children: ({
256
+ props
257
+ }) =>
258
+ /*#__PURE__*/
259
+ // The trigger's props are mapped rather than spread: `MenuTrigger`
260
+ // hands back a DOM-ish bag (focus handlers, an accessibility role)
261
+ // and `Button` accepts a different set, so a spread would pass
262
+ // props it silently drops.
263
+ _jsx(Button, {
264
+ variant: "secondary",
265
+ size: size === 'large' ? 'large' : 'small',
266
+ icon: /*#__PURE__*/_jsx(ChevronDown, {
267
+ width: 16
268
+ }),
269
+ disabled: disabled || isUnknown,
270
+ onPress: props.onPress,
271
+ accessibilityLabel: props.accessibilityLabel,
272
+ accessibilityHint: props.accessibilityHint
273
+ })
274
+ }), /*#__PURE__*/_jsx(MenuContent, {
275
+ showCancel: true,
276
+ children: menuItems.map(item => /*#__PURE__*/_jsx(MenuItem, {
277
+ label: item.label,
278
+ onPress: () => runItem(item),
279
+ children: /*#__PURE__*/_jsx(MenuItemText, {
280
+ children: item.label
281
+ })
282
+ }, item.key))
283
+ })]
284
+ })]
285
+ });
286
+ });
287
+ //# sourceMappingURL=FollowTargetButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useMemo","View","Button","ChevronBottom_Stroke2_Corner0_Rounded","ChevronDown","Menu","MenuContent","MenuItem","MenuItemText","MenuTrigger","toast","useFollowTarget","jsx","_jsx","jsxs","_jsxs","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","buildFollowMenuItems","input","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationMode","applicationName","FollowTargetButton","targetId","verb","labels","size","style","showOptions","onChange","status","isFollowing","isUnknown","unfollow","disableHere","enableHere","text","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","primary","variant","loading","onPress","accessibilityLabel","children","length","flexDirection","alignItems","gap","hint","props","icon","width","accessibilityHint","showCancel","map"],"sourceRoot":"../../../../src","sources":["ui/components/FollowTargetButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * `useFollowTarget` — the one hook every application uses to follow anything.
5
+ *
6
+ * Wraps the `/v2/follows` SDK methods with the store above, an optimistic
7
+ * update, and a rollback. Nothing in here knows what kind of thing it is
8
+ * following, which is the property that lets an application the SDK has never
9
+ * heard of use it without a release of this package.
10
+ *
11
+ * ## Optimism, and its one limit
12
+ *
13
+ * A follow flips the button immediately and rolls back if the server refuses,
14
+ * because the round trip is long enough to feel like a bug otherwise. But an
15
+ * optimistic follow has no relationship id until the server answers, and every
16
+ * other operation addresses the relationship — so those stay disabled for the
17
+ * width of one request rather than being sent with a guessed id.
18
+ */
19
+
20
+ import { useCallback, useEffect } from 'react';
21
+ import { useOxy } from "../context/OxyContext.js";
22
+ import { isFollowedGlobally, UNKNOWN_FOLLOW_STATUS, useFollowTargetStore, withApplicationMode } from "../stores/followTargetStore.js";
23
+ export function useFollowTarget(targetId, options) {
24
+ const {
25
+ oxyServices,
26
+ canUsePrivateApi
27
+ } = useOxy();
28
+ const status = useFollowTargetStore(useCallback(s => targetId ? s.statuses[targetId] : undefined, [targetId]));
29
+ const isPending = useFollowTargetStore(useCallback(s => targetId ? s.pending[targetId] ?? false : false, [targetId]));
30
+ const error = useFollowTargetStore(useCallback(s => targetId ? s.errors[targetId] : undefined, [targetId]));
31
+ const initialStatus = options?.initialStatus;
32
+
33
+ // A caller that already knows the status — a follow list, a feed payload —
34
+ // seeds it rather than making this hook re-ask once per rendered row.
35
+ useEffect(() => {
36
+ if (!targetId || !initialStatus) return;
37
+ const store = useFollowTargetStore.getState();
38
+ if (!store.statuses[targetId]) store.setStatus(targetId, initialStatus);
39
+ }, [targetId, initialStatus]);
40
+ const refresh = useCallback(async () => {
41
+ // Gated on `canUsePrivateApi`, not on `isAuthenticated`: during the session
42
+ // cold boot the second is true well before the first, and a read sent in
43
+ // that window 401s and would leave the button stuck reporting an error the
44
+ // user cannot act on.
45
+ if (!targetId || !canUsePrivateApi) return;
46
+ try {
47
+ const next = await oxyServices.getFollowTargetStatus(targetId);
48
+ useFollowTargetStore.getState().setStatus(targetId, next);
49
+ useFollowTargetStore.getState().setError(targetId, undefined);
50
+ } catch (e) {
51
+ useFollowTargetStore.getState().setError(targetId, e instanceof Error ? e.message : 'Could not read follow status');
52
+ }
53
+ }, [targetId, canUsePrivateApi, oxyServices]);
54
+ useEffect(() => {
55
+ if (!targetId || !canUsePrivateApi) return;
56
+ if (useFollowTargetStore.getState().statuses[targetId]) return;
57
+ void refresh();
58
+ }, [targetId, canUsePrivateApi, refresh]);
59
+
60
+ /**
61
+ * Run a mutation optimistically: show `optimistic` at once, keep the previous
62
+ * value, and put it back if the server refuses. Every mutation below goes
63
+ * through this so the rollback cannot be forgotten in one of them.
64
+ */
65
+ const mutate = useCallback(async (optimistic, run, failureMessage) => {
66
+ if (!targetId) return;
67
+ const store = useFollowTargetStore.getState();
68
+ const previous = store.statuses[targetId];
69
+ store.setStatus(targetId, optimistic);
70
+ store.setPending(targetId, true);
71
+ store.setError(targetId, undefined);
72
+ try {
73
+ const settled = await run();
74
+ if (settled) useFollowTargetStore.getState().setStatus(targetId, settled);
75
+ } catch (e) {
76
+ const s = useFollowTargetStore.getState();
77
+ // Back to what was true, not to a guess. Clearing the entry instead
78
+ // would make the next render ask again and flash the wrong state.
79
+ if (previous) s.setStatus(targetId, previous);
80
+ s.setError(targetId, e instanceof Error ? e.message : failureMessage);
81
+ } finally {
82
+ useFollowTargetStore.getState().setPending(targetId, false);
83
+ }
84
+ }, [targetId]);
85
+ const current = status ?? UNKNOWN_FOLLOW_STATUS;
86
+ const follow = useCallback(async opts => {
87
+ if (!targetId) return;
88
+ await mutate({
89
+ ...withApplicationMode({
90
+ ...current,
91
+ globalState: 'active'
92
+ }, current.applicationMode),
93
+ ...(opts?.expiresIn ? {
94
+ expiresAt: new Date(Date.now() + opts.expiresIn * 1000).toISOString()
95
+ } : {})
96
+ },
97
+ // The server returns the whole resulting status, so store it rather
98
+ // than reconstructing one: `effectiveState`'s derivation lives there,
99
+ // and a client recomputing it is a second implementation of one rule.
100
+ async () => (await oxyServices.followTarget(targetId, opts)).status, 'Could not follow');
101
+ }, [targetId, current, mutate, oxyServices]);
102
+ const unfollow = useCallback(async () => {
103
+ const relationshipId = current.relationshipId;
104
+ if (!targetId || !relationshipId) return;
105
+ await mutate({
106
+ ...UNKNOWN_FOLLOW_STATUS
107
+ }, async () => {
108
+ await oxyServices.unfollowTarget(relationshipId);
109
+ return {
110
+ ...UNKNOWN_FOLLOW_STATUS
111
+ };
112
+ }, 'Could not unfollow');
113
+ }, [targetId, current.relationshipId, mutate, oxyServices]);
114
+ const setMode = useCallback(async mode => {
115
+ const relationshipId = current.relationshipId;
116
+ if (!targetId || !relationshipId) return;
117
+ await mutate(withApplicationMode(current, mode), async () => {
118
+ await oxyServices.setFollowApplicationMode(relationshipId, mode);
119
+ }, 'Could not change this app’s setting for this follow');
120
+ }, [targetId, current, mutate, oxyServices]);
121
+ const disableHere = useCallback(() => setMode('disabled'), [setMode]);
122
+ const enableHere = useCallback(() => setMode('enabled'), [setMode]);
123
+ return {
124
+ status: current,
125
+ isFollowing: isFollowedGlobally(current),
126
+ isUnknown: status === undefined,
127
+ isPending,
128
+ error,
129
+ follow,
130
+ unfollow,
131
+ disableHere,
132
+ enableHere,
133
+ refresh
134
+ };
135
+ }
136
+ //# sourceMappingURL=useFollowTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useOxy","isFollowedGlobally","UNKNOWN_FOLLOW_STATUS","useFollowTargetStore","withApplicationMode","useFollowTarget","targetId","options","oxyServices","canUsePrivateApi","status","s","statuses","undefined","isPending","pending","error","errors","initialStatus","store","getState","setStatus","refresh","next","getFollowTargetStatus","setError","e","Error","message","mutate","optimistic","run","failureMessage","previous","setPending","settled","current","follow","opts","globalState","applicationMode","expiresIn","expiresAt","Date","now","toISOString","followTarget","unfollow","relationshipId","unfollowTarget","setMode","mode","setFollowApplicationMode","disableHere","enableHere","isFollowing","isUnknown"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollowTarget.ts"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,7 @@ import { Text } from '@oxyhq/bloom/typography';
11
11
  import { Button } from '@oxyhq/bloom/button';
12
12
  import { TextField, TextFieldInput } from '@oxyhq/bloom/text-field';
13
13
  import { Divider } from '@oxyhq/bloom/divider';
14
+ import { getNormalizedUserHandle } from '@oxyhq/core';
14
15
  import { useOxy } from "../context/OxyContext.js";
15
16
  import { useI18n } from "../hooks/useI18n.js";
16
17
  import { useSurfaceHeader } from "../hooks/useSurfaceHeader.js";
@@ -74,10 +75,36 @@ const AccountMembersScreen = ({
74
75
  enabled: canUsePrivateApi && id.length > 0 && canRead
75
76
  });
76
77
  const members = useMemo(() => membersQuery.data ?? [], [membersQuery.data]);
77
- const ownerCount = useMemo(() => members.filter(m => m.role === 'owner').length, [members]);
78
+ const memberUserIds = useMemo(() => [...new Set(members.map(member => member.memberUserId).filter(id => id.length > 0))], [members]);
79
+ const memberProfilesQuery = useQuery({
80
+ queryKey: ['users', 'by-ids', memberUserIds],
81
+ queryFn: () => oxyServices.getUsersByIds(memberUserIds),
82
+ enabled: canUsePrivateApi && memberUserIds.length > 0
83
+ });
84
+ const memberLabelByUserId = useMemo(() => {
85
+ const labels = new Map();
86
+ for (const profile of memberProfilesQuery.data ?? []) {
87
+ // `getNormalizedUserHandle` answers null for an actor with no resolvable
88
+ // handle. Leaving that entry out is what lets `memberDisplayLabel`'s own
89
+ // fallback run, rather than storing a null the map is not typed to hold.
90
+ const handle = getNormalizedUserHandle(profile);
91
+ if (handle) labels.set(profile.id, handle);
92
+ }
93
+ return labels;
94
+ }, [memberProfilesQuery.data]);
95
+ const memberDisplayLabel = useCallback(memberUserId => memberLabelByUserId.get(memberUserId) ?? memberUserId, [memberLabelByUserId]);
96
+ // DIRECT owners only. The list also carries members whose row lives on an
97
+ // ancestor, and the last-owner rule this count feeds is about the rows on THIS
98
+ // account — the server's guard counts those. Including an inherited owner
99
+ // would make a child that has no owner of its own look like it has exactly
100
+ // one, and silently disable removing anybody.
101
+ const ownerCount = useMemo(() => members.filter(m => m.role === 'owner' && (m.source ?? 'direct') === 'direct').length, [members]);
78
102
  const invalidateMembers = useCallback(() => {
103
+ // Inherited rows on descendant rosters derive from ancestor membership
104
+ // tables — mirror the SDK's per-account prefix sweep so every cached member
105
+ // list refetches, not only the account that was mutated.
79
106
  queryClient.invalidateQueries({
80
- queryKey: ['accounts', 'members', id]
107
+ queryKey: ['accounts', 'members']
81
108
  });
82
109
  queryClient.invalidateQueries({
83
110
  queryKey: ['accounts', 'detail', id]
@@ -282,9 +309,16 @@ const AccountMembersScreen = ({
282
309
  children: members.map((member, index) => {
283
310
  const isOwner = member.role === 'owner';
284
311
  const isLastOwner = isOwner && ownerCount <= 1;
285
- const canEditThisRole = canUpdate && !isOwner;
286
- const canRemoveThisMember = canRemove && !isLastOwner && (!isOwner || canTransfer);
287
- const canTransferToThis = canTransfer && !isOwner && member.status === 'active';
312
+ // An INHERITED entry's row lives on an ancestor account, and
313
+ // every member mutation is scoped to rows on the account in
314
+ // the path so offering to edit, remove or promote one would
315
+ // be offering a request the server answers 404. The row is
316
+ // changed where it lives, on that ancestor's own member
317
+ // screen.
318
+ const isEditableHere = (member.source ?? 'direct') === 'direct';
319
+ const canEditThisRole = canUpdate && isEditableHere && !isOwner;
320
+ const canRemoveThisMember = canRemove && isEditableHere && !isLastOwner && (!isOwner || canTransfer);
321
+ const canTransferToThis = canTransfer && isEditableHere && !isOwner && member.status === 'active';
288
322
  return /*#__PURE__*/_jsxs(View, {
289
323
  children: [index > 0 ? /*#__PURE__*/_jsx(Divider, {
290
324
  color: colors.border,
@@ -296,7 +330,7 @@ const AccountMembersScreen = ({
296
330
  children: [/*#__PURE__*/_jsx(Text, {
297
331
  className: "text-body font-bodyBold text-text flex-1",
298
332
  numberOfLines: 1,
299
- children: member.memberUserId
333
+ children: memberDisplayLabel(member.memberUserId)
300
334
  }), isOwner ? /*#__PURE__*/_jsx(View, {
301
335
  className: "px-space-8 py-space-4 rounded-radius-full",
302
336
  style: {
@@ -309,6 +343,15 @@ const AccountMembersScreen = ({
309
343
  },
310
344
  children: roleLabel('owner')
311
345
  })
346
+ }) : null, !isEditableHere ? /*#__PURE__*/_jsx(View, {
347
+ className: "px-space-8 py-space-4 rounded-radius-full",
348
+ style: {
349
+ backgroundColor: colors.card
350
+ },
351
+ children: /*#__PURE__*/_jsx(Text, {
352
+ className: "text-caption font-caption text-text-secondary",
353
+ children: t('accounts.members.inherited') || 'Inherited'
354
+ })
312
355
  }) : null, member.status !== 'active' ? /*#__PURE__*/_jsx(View, {
313
356
  className: "px-space-8 py-space-4 rounded-radius-full",
314
357
  style: {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useMemo","useState","View","TouchableOpacity","ActivityIndicator","Ionicons","useQuery","useMutation","useQueryClient","toast","surfaces","useTheme","Text","Button","TextField","TextFieldInput","Divider","useOxy","useI18n","useSurfaceHeader","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ASSIGNABLE_ROLES","errorMessage","error","fallback","Error","message","isUserNotFound","toLowerCase","includes","AccountMembersScreen","onClose","goBack","accountId","bloomTheme","colors","t","title","subtitle","oxyServices","canUsePrivateApi","queryClient","id","roleLabel","role","charAt","toUpperCase","slice","accountQuery","queryKey","queryFn","getAccount","enabled","length","callerMembership","data","permissions","isImplicitOwner","relationship","can","permission","canRead","canInvite","canUpdate","canRemove","canTransfer","membersQuery","listAccountMembers","members","ownerCount","filter","m","invalidateMembers","invalidateQueries","inviteIdentifier","setInviteIdentifier","inviteRole","setInviteRole","inviteError","setInviteError","inviteMutation","mutationKey","mutationFn","input","inviteAccountMember","onSuccess","success","onError","updateMutation","updateAccountMember","memberId","removeMutation","removeAccountMember","transferMutation","userId","transferAccountOwnership","handleInvite","usernameOrEmail","trim","mutate","handleChangeRole","member","_id","confirmRemove","confirmed","confirm","confirmLabel","cancelLabel","destructive","confirmTransfer","memberUserId","children","className","isLoading","isInvalid","floatingLabel","label","value","onChangeText","autoCapitalize","autoCorrect","autoComplete","style","color","negative","map","selected","accessibilityRole","accessibilityState","accessibilityLabel","onPress","activeOpacity","backgroundColor","primary","card","borderWidth","borderColor","border","background","text","variant","disabled","isPending","loading","index","isOwner","isLastOwner","canEditThisRole","canRemoveThisMember","canTransferToThis","status","spacing","numberOfLines","primarySubtle","name","size","icon"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountMembersScreen.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useMemo","useState","View","TouchableOpacity","ActivityIndicator","Ionicons","useQuery","useMutation","useQueryClient","toast","surfaces","useTheme","Text","Button","TextField","TextFieldInput","Divider","getNormalizedUserHandle","useOxy","useI18n","useSurfaceHeader","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ASSIGNABLE_ROLES","errorMessage","error","fallback","Error","message","isUserNotFound","toLowerCase","includes","AccountMembersScreen","onClose","goBack","accountId","bloomTheme","colors","t","title","subtitle","oxyServices","canUsePrivateApi","queryClient","id","roleLabel","role","charAt","toUpperCase","slice","accountQuery","queryKey","queryFn","getAccount","enabled","length","callerMembership","data","permissions","isImplicitOwner","relationship","can","permission","canRead","canInvite","canUpdate","canRemove","canTransfer","membersQuery","listAccountMembers","members","memberUserIds","Set","map","member","memberUserId","filter","memberProfilesQuery","getUsersByIds","memberLabelByUserId","labels","Map","profile","handle","set","memberDisplayLabel","get","ownerCount","m","source","invalidateMembers","invalidateQueries","inviteIdentifier","setInviteIdentifier","inviteRole","setInviteRole","inviteError","setInviteError","inviteMutation","mutationKey","mutationFn","input","inviteAccountMember","onSuccess","success","onError","updateMutation","updateAccountMember","memberId","removeMutation","removeAccountMember","transferMutation","userId","transferAccountOwnership","handleInvite","usernameOrEmail","trim","mutate","handleChangeRole","_id","confirmRemove","confirmed","confirm","confirmLabel","cancelLabel","destructive","confirmTransfer","children","className","isLoading","isInvalid","floatingLabel","label","value","onChangeText","autoCapitalize","autoCorrect","autoComplete","style","color","negative","selected","accessibilityRole","accessibilityState","accessibilityLabel","onPress","activeOpacity","backgroundColor","primary","card","borderWidth","borderColor","border","background","text","variant","disabled","isPending","loading","index","isOwner","isLastOwner","isEditableHere","canEditThisRole","canRemoveThisMember","canTransferToThis","status","spacing","numberOfLines","primarySubtle","name","size","icon"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountMembersScreen.tsx"],"mappings":"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","ignoreList":[]}