@oxyhq/services 27.1.2 → 27.1.3
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 +18 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/components/FollowTargetButton.js +22 -11
- package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -1
- package/lib/commonjs/ui/hooks/useFollowTarget.js +11 -2
- package/lib/commonjs/ui/hooks/useFollowTarget.js.map +1 -1
- package/lib/commonjs/ui/stores/followTargetStore.js +12 -0
- package/lib/commonjs/ui/stores/followTargetStore.js.map +1 -1
- package/lib/module/index.js +7 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/components/FollowTargetButton.js +22 -11
- package/lib/module/ui/components/FollowTargetButton.js.map +1 -1
- package/lib/module/ui/hooks/useFollowTarget.js +12 -3
- package/lib/module/ui/hooks/useFollowTarget.js.map +1 -1
- package/lib/module/ui/stores/followTargetStore.js +11 -0
- package/lib/module/ui/stores/followTargetStore.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +1 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts +6 -1
- package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollowTarget.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/followTargetStore.d.ts +7 -0
- package/lib/typescript/commonjs/ui/stores/followTargetStore.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +1 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FollowTargetButton.d.ts +6 -1
- package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFollowTarget.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/followTargetStore.d.ts +7 -0
- package/lib/typescript/module/ui/stores/followTargetStore.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +11 -1
- package/src/ui/components/FollowTargetButton.tsx +28 -6
- package/src/ui/components/__tests__/followTargetButton.test.ts +12 -0
- package/src/ui/hooks/useFollowTarget.ts +12 -4
- package/src/ui/stores/followTargetStore.ts +11 -0
package/lib/commonjs/index.js
CHANGED
|
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "CreateAccountScreen", {
|
|
|
33
33
|
return _CreateAccountScreen.default;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "FOLLOW_ACTION_LEAVES_ACTIVE", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _FollowTargetButton.FOLLOW_ACTION_LEAVES_ACTIVE;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
36
42
|
Object.defineProperty(exports, "FollowButton", {
|
|
37
43
|
enumerable: true,
|
|
38
44
|
get: function () {
|
|
@@ -171,6 +177,12 @@ Object.defineProperty(exports, "UNKNOWN_FOLLOW_STATUS", {
|
|
|
171
177
|
return _followTargetStore.UNKNOWN_FOLLOW_STATUS;
|
|
172
178
|
}
|
|
173
179
|
});
|
|
180
|
+
Object.defineProperty(exports, "buildFollowMenuItems", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function () {
|
|
183
|
+
return _FollowTargetButton.buildFollowMenuItems;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
174
186
|
Object.defineProperty(exports, "clearedFieldsFromAccountUpdate", {
|
|
175
187
|
enumerable: true,
|
|
176
188
|
get: function () {
|
|
@@ -321,6 +333,12 @@ Object.defineProperty(exports, "queryKeys", {
|
|
|
321
333
|
return _queryKeys.queryKeys;
|
|
322
334
|
}
|
|
323
335
|
});
|
|
336
|
+
Object.defineProperty(exports, "resolveFollowPrimaryAction", {
|
|
337
|
+
enumerable: true,
|
|
338
|
+
get: function () {
|
|
339
|
+
return _FollowTargetButton.resolveFollowPrimaryAction;
|
|
340
|
+
}
|
|
341
|
+
});
|
|
324
342
|
Object.defineProperty(exports, "setOxyAssetInstance", {
|
|
325
343
|
enumerable: true,
|
|
326
344
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","_reactNative","_OxyProvider","_interopRequireDefault","_OxyContext","_useAuth","_identityBinding","_authStore","_accountStore","_assetStore","_useAssets","_useFileDownloadUrl","_useFollow","_useStorage","_useAccountQueries","_useServicesQueries","_useSecurityQueries","_useAuthMethods","_usePaymentQueries","_useAccountMutations","_useServicesMutations","_mutationFactory","_mutationKeys","_queryKeys","_userCache","_useMutationStatus","_useOnlineStatus","_useOxyEvent","_errorHandlers","_useFileFiltering","_OxySignInButton","_oauthPopup","_OxyAuthPrompt","_OxyOAuthCallback","_OxyConsentScreen","_RequireOxyAuth","_FollowButton","_FollowTargetButton","_useFollowTarget","_followTargetStore","_OxyPayButton","_LogoIcon","_LogoText","_ProfileButton","_OxyAuthChooser","_OxySignInRequestSurface","_useSwitchableAccounts","_ProfileScreen","_ManageAccountScreen","_NotificationsScreen","_PreferencesScreen","_ConnectedAppsScreen","_CreateAccountScreen","_AccountMembersScreen","_AccountSettingsScreen","_bottomSheetManager","_useSurfaceHeader","_SurfaceHeaderAction","_accountDialogManager","e","__esModule","default","setPlatformOS","Platform","OS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_core","require","_reactNative","_OxyProvider","_interopRequireDefault","_OxyContext","_useAuth","_identityBinding","_authStore","_accountStore","_assetStore","_useAssets","_useFileDownloadUrl","_useFollow","_useStorage","_useAccountQueries","_useServicesQueries","_useSecurityQueries","_useAuthMethods","_usePaymentQueries","_useAccountMutations","_useServicesMutations","_mutationFactory","_mutationKeys","_queryKeys","_userCache","_useMutationStatus","_useOnlineStatus","_useOxyEvent","_errorHandlers","_useFileFiltering","_OxySignInButton","_oauthPopup","_OxyAuthPrompt","_OxyOAuthCallback","_OxyConsentScreen","_RequireOxyAuth","_FollowButton","_FollowTargetButton","_useFollowTarget","_followTargetStore","_OxyPayButton","_LogoIcon","_LogoText","_ProfileButton","_OxyAuthChooser","_OxySignInRequestSurface","_useSwitchableAccounts","_ProfileScreen","_ManageAccountScreen","_NotificationsScreen","_PreferencesScreen","_ConnectedAppsScreen","_CreateAccountScreen","_AccountMembersScreen","_AccountSettingsScreen","_bottomSheetManager","_useSurfaceHeader","_SurfaceHeaderAction","_accountDialogManager","e","__esModule","default","setPlatformOS","Platform","OS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,QAAA,GAAAL,OAAA;AAKA,IAAAM,gBAAA,GAAAN,OAAA;AAKA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AAgBA,IAAAU,UAAA,GAAAV,OAAA;AACA,IAAAW,mBAAA,GAAAX,OAAA;AACA,IAAAY,UAAA,GAAAZ,OAAA;AACA,IAAAa,WAAA,GAAAb,OAAA;AAMA,IAAAc,kBAAA,GAAAd,OAAA;AAUA,IAAAe,mBAAA,GAAAf,OAAA;AAQA,IAAAgB,mBAAA,GAAAhB,OAAA;AAKA,IAAAiB,eAAA,GAAAjB,OAAA;AACA,IAAAkB,kBAAA,GAAAlB,OAAA;AAyBA,IAAAmB,oBAAA,GAAAnB,OAAA;AAUA,IAAAoB,qBAAA,GAAApB,OAAA;AAOA,IAAAqB,gBAAA,GAAArB,OAAA;AAUA,IAAAsB,aAAA,GAAAtB,OAAA;AAQA,IAAAuB,UAAA,GAAAvB,OAAA;AAqBA,IAAAwB,UAAA,GAAAxB,OAAA;AAcA,IAAAyB,kBAAA,GAAAzB,OAAA;AAEA,IAAA0B,gBAAA,GAAA1B,OAAA;AACA,IAAA2B,YAAA,GAAA3B,OAAA;AAKA,IAAA4B,cAAA,GAAA5B,OAAA;AAWA,IAAA6B,iBAAA,GAAA7B,OAAA;AA+BA,IAAA8B,gBAAA,GAAA3B,sBAAA,CAAAH,OAAA;AAOA,IAAA+B,WAAA,GAAA/B,OAAA;AAUA,IAAAgC,cAAA,GAAAhC,OAAA;AAEA,IAAAiC,iBAAA,GAAAjC,OAAA;AAEA,IAAAkC,iBAAA,GAAAlC,OAAA;AAYA,IAAAmC,eAAA,GAAAnC,OAAA;AAGA,IAAAoC,aAAA,GAAAjC,sBAAA,CAAAH,OAAA;AAGA,IAAAqC,mBAAA,GAAArC,OAAA;AAiBA,IAAAsC,gBAAA,GAAAtC,OAAA;AAEA,IAAAuC,kBAAA,GAAAvC,OAAA;AASA,IAAAwC,aAAA,GAAArC,sBAAA,CAAAH,OAAA;AACA,IAAAyC,SAAA,GAAAzC,OAAA;AACA,IAAA0C,SAAA,GAAA1C,OAAA;AAKA,IAAA2C,cAAA,GAAAxC,sBAAA,CAAAH,OAAA;AASA,IAAA4C,eAAA,GAAAzC,sBAAA,CAAAH,OAAA;AAWA,IAAA6C,wBAAA,GAAA7C,OAAA;AAUA,IAAA8C,sBAAA,GAAA9C,OAAA;AAIA,IAAA+C,cAAA,GAAA5C,sBAAA,CAAAH,OAAA;AACA,IAAAgD,oBAAA,GAAA7C,sBAAA,CAAAH,OAAA;AACA,IAAAiD,oBAAA,GAAA9C,sBAAA,CAAAH,OAAA;AACA,IAAAkD,kBAAA,GAAA/C,sBAAA,CAAAH,OAAA;AACA,IAAAmD,oBAAA,GAAAhD,sBAAA,CAAAH,OAAA;AAGA,IAAAoD,oBAAA,GAAAjD,sBAAA,CAAAH,OAAA;AACA,IAAAqD,qBAAA,GAAAlD,sBAAA,CAAAH,OAAA;AACA,IAAAsD,sBAAA,GAAAnD,sBAAA,CAAAH,OAAA;AAKA,IAAAuD,mBAAA,GAAAvD,OAAA;AAMA,IAAAwD,iBAAA,GAAAxD,OAAA;AACA,IAAAyD,oBAAA,GAAAzD,OAAA;AAMA,IAAA0D,qBAAA,GAAA1D,OAAA;AAI8C,SAAAG,uBAAAwD,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA7X9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAIA,IAAAG,mBAAa,EAACC,qBAAQ,CAACC,EAAgB,CAAC;;AAExC;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;;AAgBA;AACA;AACA;;AAOA;AACA;AACA;;AAgCA;;AAeA;AACA;AACA;;AA2BA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;;AAMA;AACA;AACA;;AASA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAsBA;AACA;AACA;AACA;AACA;;AAMA;;AAiCA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAOA;;AAKA;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -13,6 +13,7 @@ var _icons = require("@oxyhq/bloom/icons");
|
|
|
13
13
|
var _menu = require("@oxyhq/bloom/menu");
|
|
14
14
|
var _toast = require("@oxyhq/bloom/toast");
|
|
15
15
|
var _useFollowTarget = require("../hooks/useFollowTarget.js");
|
|
16
|
+
var _followTargetStore = require("../stores/followTargetStore.js");
|
|
16
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
18
|
/**
|
|
18
19
|
* `FollowTargetButton` — one button for everything an Oxy user can follow.
|
|
@@ -195,6 +196,7 @@ const FollowTargetButton = exports.FollowTargetButton = /*#__PURE__*/(0, _react.
|
|
|
195
196
|
showOptions = true,
|
|
196
197
|
durations = DEFAULT_DURATIONS,
|
|
197
198
|
applicationName,
|
|
199
|
+
initialStatus,
|
|
198
200
|
onChange
|
|
199
201
|
}) {
|
|
200
202
|
const {
|
|
@@ -206,7 +208,13 @@ const FollowTargetButton = exports.FollowTargetButton = /*#__PURE__*/(0, _react.
|
|
|
206
208
|
unfollow,
|
|
207
209
|
disableHere,
|
|
208
210
|
enableHere
|
|
209
|
-
} = (0, _useFollowTarget.useFollowTarget)(targetId
|
|
211
|
+
} = (0, _useFollowTarget.useFollowTarget)(targetId, {
|
|
212
|
+
initialStatus
|
|
213
|
+
});
|
|
214
|
+
const reportMutationFailure = (0, _react.useCallback)(() => {
|
|
215
|
+
const message = _followTargetStore.useFollowTargetStore.getState().errors[targetId] ?? 'Could not update follow status';
|
|
216
|
+
_toast.toast.error(message);
|
|
217
|
+
}, [targetId]);
|
|
210
218
|
const text = (0, _react.useMemo)(() => ({
|
|
211
219
|
...VERB_LABELS[verb],
|
|
212
220
|
...labels
|
|
@@ -235,25 +243,28 @@ const FollowTargetButton = exports.FollowTargetButton = /*#__PURE__*/(0, _react.
|
|
|
235
243
|
applicationMode: status.applicationMode
|
|
236
244
|
})) {
|
|
237
245
|
case 'enable-here':
|
|
238
|
-
if (await enableHere()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);
|
|
246
|
+
if (await enableHere()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);else reportMutationFailure();
|
|
239
247
|
return;
|
|
240
248
|
case 'unfollow':
|
|
241
|
-
if (await unfollow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);
|
|
249
|
+
if (await unfollow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);else reportMutationFailure();
|
|
242
250
|
return;
|
|
243
251
|
case 'follow':
|
|
244
|
-
if (await follow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.follow);
|
|
252
|
+
if (await follow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.follow);else reportMutationFailure();
|
|
245
253
|
}
|
|
246
|
-
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange]);
|
|
254
|
+
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange, reportMutationFailure]);
|
|
247
255
|
const handleTimed = (0, _react.useCallback)(async (seconds, durationLabel) => {
|
|
248
256
|
if (!(await follow({
|
|
249
257
|
expiresIn: seconds
|
|
250
|
-
})))
|
|
258
|
+
}))) {
|
|
259
|
+
reportMutationFailure();
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
251
262
|
onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['follow-timed']);
|
|
252
263
|
// The confirmation is the point: a follow that ends on its own is a
|
|
253
264
|
// promise, and a user who does not see it made will not believe it.
|
|
254
265
|
// Which is also why it must not appear when the promise was not made.
|
|
255
266
|
_toast.toast.success(`Following for ${durationLabel.toLowerCase()}`);
|
|
256
|
-
}, [follow, onChange]);
|
|
267
|
+
}, [follow, onChange, reportMutationFailure]);
|
|
257
268
|
const menuItems = (0, _react.useMemo)(() => buildFollowMenuItems({
|
|
258
269
|
following: isFollowing,
|
|
259
270
|
applicationMode: status.applicationMode,
|
|
@@ -275,20 +286,20 @@ const FollowTargetButton = exports.FollowTargetButton = /*#__PURE__*/(0, _react.
|
|
|
275
286
|
// menu item exists to end.
|
|
276
287
|
case 'enable-here':
|
|
277
288
|
void enableHere().then(ok => {
|
|
278
|
-
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);
|
|
289
|
+
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);else reportMutationFailure();
|
|
279
290
|
});
|
|
280
291
|
return;
|
|
281
292
|
case 'disable-here':
|
|
282
293
|
void disableHere().then(ok => {
|
|
283
|
-
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['disable-here']);
|
|
294
|
+
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['disable-here']);else reportMutationFailure();
|
|
284
295
|
});
|
|
285
296
|
return;
|
|
286
297
|
case 'unfollow':
|
|
287
298
|
void unfollow().then(ok => {
|
|
288
|
-
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);
|
|
299
|
+
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);else reportMutationFailure();
|
|
289
300
|
});
|
|
290
301
|
}
|
|
291
|
-
}, [handleTimed, enableHere, disableHere, unfollow, onChange]);
|
|
302
|
+
}, [handleTimed, enableHere, disableHere, unfollow, onChange, reportMutationFailure]);
|
|
292
303
|
const primary = /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
|
|
293
304
|
variant: isFollowing ? 'secondary' : 'primary',
|
|
294
305
|
size: size
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_button","_icons","_menu","_toast","_useFollowTarget","_jsxRuntime","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","FOLLOW_ACTION_LEAVES_ACTIVE","exports","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","memo","targetId","verb","labels","size","style","showOptions","onChange","status","isUnknown","disableHere","enableHere","useFollowTarget","text","useMemo","globalState","handlePrimary","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_button","_icons","_menu","_toast","_useFollowTarget","_followTargetStore","_jsxRuntime","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","FOLLOW_ACTION_LEAVES_ACTIVE","exports","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","memo","targetId","verb","labels","size","style","showOptions","initialStatus","onChange","status","isUnknown","disableHere","enableHere","useFollowTarget","reportMutationFailure","useCallback","message","useFollowTargetStore","getState","errors","toast","error","text","useMemo","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","then","ok","primary","jsx","Button","variant","loading","onPress","accessibilityLabel","children","length","View","jsxs","flexDirection","alignItems","gap","Menu","MenuTrigger","hint","props","icon","ChevronBottom_Stroke2_Corner0_Rounded","width","accessibilityHint","MenuContent","showCancel","map","MenuItem","MenuItemText"],"sourceRoot":"../../../../src","sources":["ui/components/FollowTargetButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -52,12 +52,21 @@ function useFollowTarget(targetId, options) {
|
|
|
52
52
|
_followTargetStore.useFollowTargetStore.getState().setStatus(targetId, next);
|
|
53
53
|
_followTargetStore.useFollowTargetStore.getState().setError(targetId, undefined);
|
|
54
54
|
} catch (e) {
|
|
55
|
-
_followTargetStore.useFollowTargetStore.getState()
|
|
55
|
+
const store = _followTargetStore.useFollowTargetStore.getState();
|
|
56
|
+
const message = e instanceof Error ? e.message : 'Could not read follow status';
|
|
57
|
+
// Leave `isUnknown` false so the button stays interactive and can retry.
|
|
58
|
+
// A failed read is not the same as "never asked" — disabling forever would
|
|
59
|
+
// strand the user with no affordance when the network blips.
|
|
60
|
+
if (!store.statuses[targetId]) {
|
|
61
|
+
store.setStatus(targetId, _followTargetStore.UNKNOWN_FOLLOW_STATUS);
|
|
62
|
+
}
|
|
63
|
+
store.setError(targetId, message);
|
|
56
64
|
}
|
|
57
65
|
}, [targetId, canUsePrivateApi, oxyServices]);
|
|
58
66
|
(0, _react.useEffect)(() => {
|
|
59
67
|
if (!targetId || !canUsePrivateApi) return;
|
|
60
|
-
|
|
68
|
+
const existing = _followTargetStore.useFollowTargetStore.getState().statuses[targetId];
|
|
69
|
+
if (existing && (0, _followTargetStore.isCompleteFollowStatus)(existing)) return;
|
|
61
70
|
void refresh();
|
|
62
71
|
}, [targetId, canUsePrivateApi, refresh]);
|
|
63
72
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_OxyContext","_followTargetStore","useFollowTarget","targetId","options","oxyServices","canUsePrivateApi","useOxy","status","useFollowTargetStore","useCallback","s","statuses","undefined","isPending","pending","error","errors","initialStatus","useEffect","store","getState","setStatus","refresh","next","getFollowTargetStatus","setError","e","Error","
|
|
1
|
+
{"version":3,"names":["_react","require","_OxyContext","_followTargetStore","useFollowTarget","targetId","options","oxyServices","canUsePrivateApi","useOxy","status","useFollowTargetStore","useCallback","s","statuses","undefined","isPending","pending","error","errors","initialStatus","useEffect","store","getState","setStatus","refresh","next","getFollowTargetStatus","setError","e","message","Error","UNKNOWN_FOLLOW_STATUS","existing","isCompleteFollowStatus","mutate","optimistic","run","failureMessage","previous","setPending","settled","current","follow","opts","withApplicationMode","globalState","applicationMode","expiresIn","expiresAt","Date","now","toISOString","followTarget","unfollow","relationshipId","unfollowTarget","disableHere","setFollowApplicationMode","enableHere","restoreFollowInheritance","isFollowing","isFollowedGlobally","isUnknown"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollowTarget.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.UNKNOWN_FOLLOW_STATUS = void 0;
|
|
7
|
+
exports.isCompleteFollowStatus = isCompleteFollowStatus;
|
|
7
8
|
exports.isFollowedGlobally = isFollowedGlobally;
|
|
8
9
|
exports.useFollowTargetStore = void 0;
|
|
9
10
|
exports.withApplicationMode = withApplicationMode;
|
|
@@ -96,6 +97,17 @@ function isFollowedGlobally(status) {
|
|
|
96
97
|
return status.globalState === 'active' || status.globalState === 'requested';
|
|
97
98
|
}
|
|
98
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Whether a cached status is safe to act on without a round trip.
|
|
102
|
+
*
|
|
103
|
+
* List payloads often carry `globalState` without `relationshipId`. Treating
|
|
104
|
+
* that as authoritative would leave disable/unfollow as no-ops forever.
|
|
105
|
+
*/
|
|
106
|
+
function isCompleteFollowStatus(status) {
|
|
107
|
+
if (isFollowedGlobally(status)) return Boolean(status.relationshipId);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
99
111
|
/**
|
|
100
112
|
* Apply a mode change to a cached status without a round trip.
|
|
101
113
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_zustand","require","UNKNOWN_FOLLOW_STATUS","exports","globalState","applicationMode","effectiveState","useFollowTargetStore","create","set","statuses","pending","errors","setStatus","targetId","status","s","seed","entries","setPending","setError","error","reset","isFollowedGlobally","withApplicationMode","mode"],"sourceRoot":"../../../../src","sources":["ui/stores/followTargetStore.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_zustand","require","UNKNOWN_FOLLOW_STATUS","exports","globalState","applicationMode","effectiveState","useFollowTargetStore","create","set","statuses","pending","errors","setStatus","targetId","status","s","seed","entries","setPending","setError","error","reset","isFollowedGlobally","isCompleteFollowStatus","Boolean","relationshipId","withApplicationMode","mode"],"sourceRoot":"../../../../src","sources":["ui/stores/followTargetStore.ts"],"mappings":";;;;;;;;;;AAwBA,IAAAA,QAAA,GAAAC,OAAA;AAxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,qBAAmC,GAAAC,OAAA,CAAAD,qBAAA,GAAG;EACjDE,WAAW,EAAE,MAAM;EACnBC,eAAe,EAAE,SAAS;EAC1BC,cAAc,EAAE;AAClB,CAAC;AAEM,MAAMC,oBAAoB,GAAAJ,OAAA,CAAAI,oBAAA,GAAG,IAAAC,eAAM,EAAqBC,GAAG,KAAM;EACtEC,QAAQ,EAAE,CAAC,CAAC;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,CAAC,CAAC;EAEVC,SAAS,EAAEA,CAACC,QAAQ,EAAEC,MAAM,KAC1BN,GAAG,CAAEO,CAAC,KAAM;IAAEN,QAAQ,EAAE;MAAE,GAAGM,CAAC,CAACN,QAAQ;MAAE,CAACI,QAAQ,GAAGC;IAAO;EAAE,CAAC,CAAC,CAAC;EAEnEE,IAAI,EAAGC,OAAO,IAAKT,GAAG,CAAEO,CAAC,KAAM;IAAEN,QAAQ,EAAE;MAAE,GAAGM,CAAC,CAACN,QAAQ;MAAE,GAAGQ;IAAQ;EAAE,CAAC,CAAC,CAAC;EAE5EC,UAAU,EAAEA,CAACL,QAAQ,EAAEH,OAAO,KAC5BF,GAAG,CAAEO,CAAC,KAAM;IAAEL,OAAO,EAAE;MAAE,GAAGK,CAAC,CAACL,OAAO;MAAE,CAACG,QAAQ,GAAGH;IAAQ;EAAE,CAAC,CAAC,CAAC;EAElES,QAAQ,EAAEA,CAACN,QAAQ,EAAEO,KAAK,KAAKZ,GAAG,CAAEO,CAAC,KAAM;IAAEJ,MAAM,EAAE;MAAE,GAAGI,CAAC,CAACJ,MAAM;MAAE,CAACE,QAAQ,GAAGO;IAAM;EAAE,CAAC,CAAC,CAAC;EAE3F;EACA;EACA;EACA;EACAC,KAAK,EAAEA,CAAA,KAAMb,GAAG,CAAC;IAAEC,QAAQ,EAAE,CAAC,CAAC;IAAEC,OAAO,EAAE,CAAC,CAAC;IAAEC,MAAM,EAAE,CAAC;EAAE,CAAC;AAC5D,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,kBAAkBA,CAACR,MAAoB,EAAW;EAChE,OAAOA,MAAM,CAACX,WAAW,KAAK,QAAQ,IAAIW,MAAM,CAACX,WAAW,KAAK,WAAW;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASoB,sBAAsBA,CAACT,MAAoB,EAAW;EACpE,IAAIQ,kBAAkB,CAACR,MAAM,CAAC,EAAE,OAAOU,OAAO,CAACV,MAAM,CAACW,cAAc,CAAC;EACrE,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CACjCZ,MAAoB,EACpBa,IAA2B,EACb;EACd,OAAO;IACL,GAAGb,MAAM;IACTV,eAAe,EAAEuB,IAAI;IACrBtB,cAAc,EACZsB,IAAI,KAAK,UAAU,GACf,eAAe,GACfb,MAAM,CAACX,WAAW,KAAK,QAAQ,GAC7B,WAAW,GACXW,MAAM,CAACX,WAAW,KAAK,WAAW,GAChC,WAAW,GACX;EACZ,CAAC;AACH","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -146,7 +146,13 @@ export { OxyConsentScreen } from "./ui/components/OxyConsentScreen.js";
|
|
|
146
146
|
export { RequireOxyAuth } from "./ui/components/RequireOxyAuth.js";
|
|
147
147
|
export { default as FollowButton } from "./ui/components/FollowButton.js";
|
|
148
148
|
// The follow graph (#809): follows anything registered, not just users.
|
|
149
|
-
export { FollowTargetButton
|
|
149
|
+
export { FollowTargetButton,
|
|
150
|
+
// The product rules the button encodes, for an application drawing its own
|
|
151
|
+
// affordance instead of using it — a chip grid, a compact row control.
|
|
152
|
+
// Unexported, they get duplicated, and the duplicate is where the "off here"
|
|
153
|
+
// rule goes wrong: pressing a follow that is switched off here must re-enable
|
|
154
|
+
// it here, not unfollow everywhere.
|
|
155
|
+
buildFollowMenuItems, resolveFollowPrimaryAction, FOLLOW_ACTION_LEAVES_ACTIVE } from "./ui/components/FollowTargetButton.js";
|
|
150
156
|
export { useFollowTarget } from "./ui/hooks/useFollowTarget.js";
|
|
151
157
|
export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS,
|
|
152
158
|
// The answer to "does the user follow this at all". Documented in
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["setPlatformOS","Platform","OS","default","OxyProvider","useOxy","useAuth","IdentityBoundSessionError","useAuthStore","useAccountStore","useAssetStore","useAssets","useAssetsStore","useAsset","useUploadProgress","useAssetLoading","useAssetErrors","useAssetsByApp","useAssetsByEntity","useAssetUsageCount","useIsAssetLinked","setOxyAssetInstance","useFileDownloadUrl","useFollow","useFollowerCounts","useSeedFollowStatuses","useStorage","useUserProfile","useUserProfiles","useCurrentUser","useUserById","useUserByUsername","useUsersBySessions","usePrivacySettings","useConnectedApps","useSessions","useSession","useDeviceSessions","useUserDevices","useSecurityInfo","useAccountStorageUsage","useSecurityActivity","useRecentSecurityActivity","useInfiniteSecurityActivity","useAuthMethods","useUserSubscription","useUserPayments","useUserWallet","useUserWalletTransactions","useUpdateProfile","useUploadAvatar","useUpdateAccountSettings","useUpdatePrivacySettings","useUpdateNotificationPreferences","useUpdateUserPreferences","useRevokeConnectedApp","useUploadFile","useSwitchSession","useLogoutSession","useLogoutAll","useUpdateDeviceName","useRemoveDevice","createProfileMutation","createGenericMutation","mutationKeys","queryKeys","invalidateAccountQueries","invalidateUserQueries","invalidateSessionQueries","invalidateDeviceQueries","invalidatePrivacyQueries","invalidateSecurityQueries","invalidateStorageQueries","invalidatePaymentsQueries","invalidateConnectedAppsQueries","invalidateAuthMethodsQueries","upsertCachedUser","upsertCachedUsers","CLEARABLE_USER_FIELDS","clearedFieldsFromProfileUpdate","clearedFieldsFromAccountUpdate","useMutationStatus","useOnlineStatus","useOxyEvent","handleAuthError","isInvalidSessionError","isTimeoutOrNetworkError","extractErrorMessage","useFileFiltering","OXY_OAUTH_STATE_STORAGE_KEY","OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY","OxySignInButton","openOAuthPopup","OxyAuthPrompt","OxyOAuthCallback","OxyConsentScreen","RequireOxyAuth","FollowButton","FollowTargetButton","useFollowTarget","useFollowTargetStore","UNKNOWN_FOLLOW_STATUS","isFollowedGlobally","withApplicationMode","OxyPayButton","LogoIcon","LogoText","ProfileButton","OxyAuthChooser","OxySignInRequestSurface","useSwitchableAccounts","ProfileScreen","ManageAccountScreen","NotificationsScreen","PreferencesScreen","ConnectedAppsScreen","CreateAccountScreen","AccountMembersScreen","AccountSettingsScreen","showBottomSheet","closeBottomSheet","useSurfaceHeader","SurfaceHeaderAction","openAccountDialog","closeAccountDialog","subscribeToAccountDialog"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["setPlatformOS","Platform","OS","default","OxyProvider","useOxy","useAuth","IdentityBoundSessionError","useAuthStore","useAccountStore","useAssetStore","useAssets","useAssetsStore","useAsset","useUploadProgress","useAssetLoading","useAssetErrors","useAssetsByApp","useAssetsByEntity","useAssetUsageCount","useIsAssetLinked","setOxyAssetInstance","useFileDownloadUrl","useFollow","useFollowerCounts","useSeedFollowStatuses","useStorage","useUserProfile","useUserProfiles","useCurrentUser","useUserById","useUserByUsername","useUsersBySessions","usePrivacySettings","useConnectedApps","useSessions","useSession","useDeviceSessions","useUserDevices","useSecurityInfo","useAccountStorageUsage","useSecurityActivity","useRecentSecurityActivity","useInfiniteSecurityActivity","useAuthMethods","useUserSubscription","useUserPayments","useUserWallet","useUserWalletTransactions","useUpdateProfile","useUploadAvatar","useUpdateAccountSettings","useUpdatePrivacySettings","useUpdateNotificationPreferences","useUpdateUserPreferences","useRevokeConnectedApp","useUploadFile","useSwitchSession","useLogoutSession","useLogoutAll","useUpdateDeviceName","useRemoveDevice","createProfileMutation","createGenericMutation","mutationKeys","queryKeys","invalidateAccountQueries","invalidateUserQueries","invalidateSessionQueries","invalidateDeviceQueries","invalidatePrivacyQueries","invalidateSecurityQueries","invalidateStorageQueries","invalidatePaymentsQueries","invalidateConnectedAppsQueries","invalidateAuthMethodsQueries","upsertCachedUser","upsertCachedUsers","CLEARABLE_USER_FIELDS","clearedFieldsFromProfileUpdate","clearedFieldsFromAccountUpdate","useMutationStatus","useOnlineStatus","useOxyEvent","handleAuthError","isInvalidSessionError","isTimeoutOrNetworkError","extractErrorMessage","useFileFiltering","OXY_OAUTH_STATE_STORAGE_KEY","OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY","OxySignInButton","openOAuthPopup","OxyAuthPrompt","OxyOAuthCallback","OxyConsentScreen","RequireOxyAuth","FollowButton","FollowTargetButton","buildFollowMenuItems","resolveFollowPrimaryAction","FOLLOW_ACTION_LEAVES_ACTIVE","useFollowTarget","useFollowTargetStore","UNKNOWN_FOLLOW_STATUS","isFollowedGlobally","withApplicationMode","OxyPayButton","LogoIcon","LogoText","ProfileButton","OxyAuthChooser","OxySignInRequestSurface","useSwitchableAccounts","ProfileScreen","ManageAccountScreen","NotificationsScreen","PreferencesScreen","ConnectedAppsScreen","CreateAccountScreen","AccountMembersScreen","AccountSettingsScreen","showBottomSheet","closeBottomSheet","useSurfaceHeader","SurfaceHeaderAction","openAccountDialog","closeAccountDialog","subscribeToAccountDialog"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,6 +40,7 @@ import { ChevronBottom_Stroke2_Corner0_Rounded as ChevronDown } from '@oxyhq/blo
|
|
|
40
40
|
import { Menu, MenuContent, MenuItem, MenuItemText, MenuTrigger } from '@oxyhq/bloom/menu';
|
|
41
41
|
import { toast } from '@oxyhq/bloom/toast';
|
|
42
42
|
import { useFollowTarget } from "../hooks/useFollowTarget.js";
|
|
43
|
+
import { useFollowTargetStore } from "../stores/followTargetStore.js";
|
|
43
44
|
|
|
44
45
|
/**
|
|
45
46
|
* The small vocabulary of verbs the ecosystem actually uses. An application
|
|
@@ -189,6 +190,7 @@ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton(
|
|
|
189
190
|
showOptions = true,
|
|
190
191
|
durations = DEFAULT_DURATIONS,
|
|
191
192
|
applicationName,
|
|
193
|
+
initialStatus,
|
|
192
194
|
onChange
|
|
193
195
|
}) {
|
|
194
196
|
const {
|
|
@@ -200,7 +202,13 @@ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton(
|
|
|
200
202
|
unfollow,
|
|
201
203
|
disableHere,
|
|
202
204
|
enableHere
|
|
203
|
-
} = useFollowTarget(targetId
|
|
205
|
+
} = useFollowTarget(targetId, {
|
|
206
|
+
initialStatus
|
|
207
|
+
});
|
|
208
|
+
const reportMutationFailure = useCallback(() => {
|
|
209
|
+
const message = useFollowTargetStore.getState().errors[targetId] ?? 'Could not update follow status';
|
|
210
|
+
toast.error(message);
|
|
211
|
+
}, [targetId]);
|
|
204
212
|
const text = useMemo(() => ({
|
|
205
213
|
...VERB_LABELS[verb],
|
|
206
214
|
...labels
|
|
@@ -229,25 +237,28 @@ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton(
|
|
|
229
237
|
applicationMode: status.applicationMode
|
|
230
238
|
})) {
|
|
231
239
|
case 'enable-here':
|
|
232
|
-
if (await enableHere()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);
|
|
240
|
+
if (await enableHere()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);else reportMutationFailure();
|
|
233
241
|
return;
|
|
234
242
|
case 'unfollow':
|
|
235
|
-
if (await unfollow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);
|
|
243
|
+
if (await unfollow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);else reportMutationFailure();
|
|
236
244
|
return;
|
|
237
245
|
case 'follow':
|
|
238
|
-
if (await follow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.follow);
|
|
246
|
+
if (await follow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.follow);else reportMutationFailure();
|
|
239
247
|
}
|
|
240
|
-
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange]);
|
|
248
|
+
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange, reportMutationFailure]);
|
|
241
249
|
const handleTimed = useCallback(async (seconds, durationLabel) => {
|
|
242
250
|
if (!(await follow({
|
|
243
251
|
expiresIn: seconds
|
|
244
|
-
})))
|
|
252
|
+
}))) {
|
|
253
|
+
reportMutationFailure();
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
245
256
|
onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['follow-timed']);
|
|
246
257
|
// The confirmation is the point: a follow that ends on its own is a
|
|
247
258
|
// promise, and a user who does not see it made will not believe it.
|
|
248
259
|
// Which is also why it must not appear when the promise was not made.
|
|
249
260
|
toast.success(`Following for ${durationLabel.toLowerCase()}`);
|
|
250
|
-
}, [follow, onChange]);
|
|
261
|
+
}, [follow, onChange, reportMutationFailure]);
|
|
251
262
|
const menuItems = useMemo(() => buildFollowMenuItems({
|
|
252
263
|
following: isFollowing,
|
|
253
264
|
applicationMode: status.applicationMode,
|
|
@@ -269,20 +280,20 @@ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton(
|
|
|
269
280
|
// menu item exists to end.
|
|
270
281
|
case 'enable-here':
|
|
271
282
|
void enableHere().then(ok => {
|
|
272
|
-
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);
|
|
283
|
+
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);else reportMutationFailure();
|
|
273
284
|
});
|
|
274
285
|
return;
|
|
275
286
|
case 'disable-here':
|
|
276
287
|
void disableHere().then(ok => {
|
|
277
|
-
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['disable-here']);
|
|
288
|
+
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['disable-here']);else reportMutationFailure();
|
|
278
289
|
});
|
|
279
290
|
return;
|
|
280
291
|
case 'unfollow':
|
|
281
292
|
void unfollow().then(ok => {
|
|
282
|
-
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);
|
|
293
|
+
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);else reportMutationFailure();
|
|
283
294
|
});
|
|
284
295
|
}
|
|
285
|
-
}, [handleTimed, enableHere, disableHere, unfollow, onChange]);
|
|
296
|
+
}, [handleTimed, enableHere, disableHere, unfollow, onChange, reportMutationFailure]);
|
|
286
297
|
const primary = /*#__PURE__*/_jsx(Button, {
|
|
287
298
|
variant: isFollowing ? 'secondary' : 'primary',
|
|
288
299
|
size: size
|
|
@@ -1 +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","FOLLOW_ACTION_LEAVES_ACTIVE","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","targetId","verb","labels","size","style","showOptions","onChange","status","isUnknown","disableHere","enableHere","text","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","then","ok","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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAGlD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,qCAAqC,IAAIC,WAAW,QAAQ,oBAAoB;AACzF,SAASC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,WAAW,QAAQ,mBAAmB;AAC1F,SAASC,KAAK,QAAQ,oBAAoB;AAC1C,SAASC,eAAe,QAAQ,6BAA0B;;
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useMemo","View","Button","ChevronBottom_Stroke2_Corner0_Rounded","ChevronDown","Menu","MenuContent","MenuItem","MenuItemText","MenuTrigger","toast","useFollowTarget","useFollowTargetStore","jsx","_jsx","jsxs","_jsxs","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","FOLLOW_ACTION_LEAVES_ACTIVE","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","targetId","verb","labels","size","style","showOptions","initialStatus","onChange","status","isUnknown","disableHere","enableHere","reportMutationFailure","message","getState","errors","error","text","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","then","ok","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":[]}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
import { useCallback, useEffect } from 'react';
|
|
21
21
|
import { useOxy } from "../context/OxyContext.js";
|
|
22
|
-
import { isFollowedGlobally, UNKNOWN_FOLLOW_STATUS, useFollowTargetStore, withApplicationMode } from "../stores/followTargetStore.js";
|
|
22
|
+
import { isCompleteFollowStatus, isFollowedGlobally, UNKNOWN_FOLLOW_STATUS, useFollowTargetStore, withApplicationMode } from "../stores/followTargetStore.js";
|
|
23
23
|
export function useFollowTarget(targetId, options) {
|
|
24
24
|
const {
|
|
25
25
|
oxyServices,
|
|
@@ -48,12 +48,21 @@ export function useFollowTarget(targetId, options) {
|
|
|
48
48
|
useFollowTargetStore.getState().setStatus(targetId, next);
|
|
49
49
|
useFollowTargetStore.getState().setError(targetId, undefined);
|
|
50
50
|
} catch (e) {
|
|
51
|
-
useFollowTargetStore.getState()
|
|
51
|
+
const store = useFollowTargetStore.getState();
|
|
52
|
+
const message = e instanceof Error ? e.message : 'Could not read follow status';
|
|
53
|
+
// Leave `isUnknown` false so the button stays interactive and can retry.
|
|
54
|
+
// A failed read is not the same as "never asked" — disabling forever would
|
|
55
|
+
// strand the user with no affordance when the network blips.
|
|
56
|
+
if (!store.statuses[targetId]) {
|
|
57
|
+
store.setStatus(targetId, UNKNOWN_FOLLOW_STATUS);
|
|
58
|
+
}
|
|
59
|
+
store.setError(targetId, message);
|
|
52
60
|
}
|
|
53
61
|
}, [targetId, canUsePrivateApi, oxyServices]);
|
|
54
62
|
useEffect(() => {
|
|
55
63
|
if (!targetId || !canUsePrivateApi) return;
|
|
56
|
-
|
|
64
|
+
const existing = useFollowTargetStore.getState().statuses[targetId];
|
|
65
|
+
if (existing && isCompleteFollowStatus(existing)) return;
|
|
57
66
|
void refresh();
|
|
58
67
|
}, [targetId, canUsePrivateApi, refresh]);
|
|
59
68
|
|
|
@@ -1 +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","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useOxy","isCompleteFollowStatus","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","message","Error","existing","mutate","optimistic","run","failureMessage","previous","setPending","settled","current","follow","opts","globalState","applicationMode","expiresIn","expiresAt","Date","now","toISOString","followTarget","unfollow","relationshipId","unfollowTarget","disableHere","setFollowApplicationMode","enableHere","restoreFollowInheritance","isFollowing","isUnknown"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollowTarget.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -90,6 +90,17 @@ export function isFollowedGlobally(status) {
|
|
|
90
90
|
return status.globalState === 'active' || status.globalState === 'requested';
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Whether a cached status is safe to act on without a round trip.
|
|
95
|
+
*
|
|
96
|
+
* List payloads often carry `globalState` without `relationshipId`. Treating
|
|
97
|
+
* that as authoritative would leave disable/unfollow as no-ops forever.
|
|
98
|
+
*/
|
|
99
|
+
export function isCompleteFollowStatus(status) {
|
|
100
|
+
if (isFollowedGlobally(status)) return Boolean(status.relationshipId);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
|
|
93
104
|
/**
|
|
94
105
|
* Apply a mode change to a cached status without a round trip.
|
|
95
106
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["create","UNKNOWN_FOLLOW_STATUS","globalState","applicationMode","effectiveState","useFollowTargetStore","set","statuses","pending","errors","setStatus","targetId","status","s","seed","entries","setPending","setError","error","reset","isFollowedGlobally","withApplicationMode","mode"],"sourceRoot":"../../../../src","sources":["ui/stores/followTargetStore.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;;AAEA,SAASA,MAAM,QAAQ,SAAS;;AAGhC;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAmC,GAAG;EACjDC,WAAW,EAAE,MAAM;EACnBC,eAAe,EAAE,SAAS;EAC1BC,cAAc,EAAE;AAClB,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAGL,MAAM,CAAqBM,GAAG,KAAM;EACtEC,QAAQ,EAAE,CAAC,CAAC;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,CAAC,CAAC;EAEVC,SAAS,EAAEA,CAACC,QAAQ,EAAEC,MAAM,KAC1BN,GAAG,CAAEO,CAAC,KAAM;IAAEN,QAAQ,EAAE;MAAE,GAAGM,CAAC,CAACN,QAAQ;MAAE,CAACI,QAAQ,GAAGC;IAAO;EAAE,CAAC,CAAC,CAAC;EAEnEE,IAAI,EAAGC,OAAO,IAAKT,GAAG,CAAEO,CAAC,KAAM;IAAEN,QAAQ,EAAE;MAAE,GAAGM,CAAC,CAACN,QAAQ;MAAE,GAAGQ;IAAQ;EAAE,CAAC,CAAC,CAAC;EAE5EC,UAAU,EAAEA,CAACL,QAAQ,EAAEH,OAAO,KAC5BF,GAAG,CAAEO,CAAC,KAAM;IAAEL,OAAO,EAAE;MAAE,GAAGK,CAAC,CAACL,OAAO;MAAE,CAACG,QAAQ,GAAGH;IAAQ;EAAE,CAAC,CAAC,CAAC;EAElES,QAAQ,EAAEA,CAACN,QAAQ,EAAEO,KAAK,KAAKZ,GAAG,CAAEO,CAAC,KAAM;IAAEJ,MAAM,EAAE;MAAE,GAAGI,CAAC,CAACJ,MAAM;MAAE,CAACE,QAAQ,GAAGO;IAAM;EAAE,CAAC,CAAC,CAAC;EAE3F;EACA;EACA;EACA;EACAC,KAAK,EAAEA,CAAA,KAAMb,GAAG,CAAC;IAAEC,QAAQ,EAAE,CAAC,CAAC;IAAEC,OAAO,EAAE,CAAC,CAAC;IAAEC,MAAM,EAAE,CAAC;EAAE,CAAC;AAC5D,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASW,kBAAkBA,CAACR,MAAoB,EAAW;EAChE,OAAOA,MAAM,CAACV,WAAW,KAAK,QAAQ,IAAIU,MAAM,CAACV,WAAW,KAAK,WAAW;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,
|
|
1
|
+
{"version":3,"names":["create","UNKNOWN_FOLLOW_STATUS","globalState","applicationMode","effectiveState","useFollowTargetStore","set","statuses","pending","errors","setStatus","targetId","status","s","seed","entries","setPending","setError","error","reset","isFollowedGlobally","isCompleteFollowStatus","Boolean","relationshipId","withApplicationMode","mode"],"sourceRoot":"../../../../src","sources":["ui/stores/followTargetStore.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;;AAEA,SAASA,MAAM,QAAQ,SAAS;;AAGhC;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAmC,GAAG;EACjDC,WAAW,EAAE,MAAM;EACnBC,eAAe,EAAE,SAAS;EAC1BC,cAAc,EAAE;AAClB,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAGL,MAAM,CAAqBM,GAAG,KAAM;EACtEC,QAAQ,EAAE,CAAC,CAAC;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,CAAC,CAAC;EAEVC,SAAS,EAAEA,CAACC,QAAQ,EAAEC,MAAM,KAC1BN,GAAG,CAAEO,CAAC,KAAM;IAAEN,QAAQ,EAAE;MAAE,GAAGM,CAAC,CAACN,QAAQ;MAAE,CAACI,QAAQ,GAAGC;IAAO;EAAE,CAAC,CAAC,CAAC;EAEnEE,IAAI,EAAGC,OAAO,IAAKT,GAAG,CAAEO,CAAC,KAAM;IAAEN,QAAQ,EAAE;MAAE,GAAGM,CAAC,CAACN,QAAQ;MAAE,GAAGQ;IAAQ;EAAE,CAAC,CAAC,CAAC;EAE5EC,UAAU,EAAEA,CAACL,QAAQ,EAAEH,OAAO,KAC5BF,GAAG,CAAEO,CAAC,KAAM;IAAEL,OAAO,EAAE;MAAE,GAAGK,CAAC,CAACL,OAAO;MAAE,CAACG,QAAQ,GAAGH;IAAQ;EAAE,CAAC,CAAC,CAAC;EAElES,QAAQ,EAAEA,CAACN,QAAQ,EAAEO,KAAK,KAAKZ,GAAG,CAAEO,CAAC,KAAM;IAAEJ,MAAM,EAAE;MAAE,GAAGI,CAAC,CAACJ,MAAM;MAAE,CAACE,QAAQ,GAAGO;IAAM;EAAE,CAAC,CAAC,CAAC;EAE3F;EACA;EACA;EACA;EACAC,KAAK,EAAEA,CAAA,KAAMb,GAAG,CAAC;IAAEC,QAAQ,EAAE,CAAC,CAAC;IAAEC,OAAO,EAAE,CAAC,CAAC;IAAEC,MAAM,EAAE,CAAC;EAAE,CAAC;AAC5D,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASW,kBAAkBA,CAACR,MAAoB,EAAW;EAChE,OAAOA,MAAM,CAACV,WAAW,KAAK,QAAQ,IAAIU,MAAM,CAACV,WAAW,KAAK,WAAW;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASmB,sBAAsBA,CAACT,MAAoB,EAAW;EACpE,IAAIQ,kBAAkB,CAACR,MAAM,CAAC,EAAE,OAAOU,OAAO,CAACV,MAAM,CAACW,cAAc,CAAC;EACrE,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CACjCZ,MAAoB,EACpBa,IAA2B,EACb;EACd,OAAO;IACL,GAAGb,MAAM;IACTT,eAAe,EAAEsB,IAAI;IACrBrB,cAAc,EACZqB,IAAI,KAAK,UAAU,GACf,eAAe,GACfb,MAAM,CAACV,WAAW,KAAK,QAAQ,GAC7B,WAAW,GACXU,MAAM,CAACV,WAAW,KAAK,WAAW,GAChC,WAAW,GACX;EACZ,CAAC;AACH","ignoreList":[]}
|
|
@@ -72,7 +72,7 @@ export { RequireOxyAuth } from './ui/components/RequireOxyAuth';
|
|
|
72
72
|
export type { RequireOxyAuthProps, RequireOxyAuthPrompt } from './ui/components/RequireOxyAuth';
|
|
73
73
|
export { default as FollowButton } from './ui/components/FollowButton';
|
|
74
74
|
export type { FollowButtonProps, SingleFollowButtonProps, MultiFollowButtonProps } from './ui/components/FollowButton';
|
|
75
|
-
export { FollowTargetButton } from './ui/components/FollowTargetButton';
|
|
75
|
+
export { FollowTargetButton, buildFollowMenuItems, resolveFollowPrimaryAction, FOLLOW_ACTION_LEAVES_ACTIVE, } from './ui/components/FollowTargetButton';
|
|
76
76
|
export type { FollowTargetButtonProps, FollowVerb, FollowLabels, FollowDuration, } from './ui/components/FollowTargetButton';
|
|
77
77
|
export { useFollowTarget } from './ui/hooks/useFollowTarget';
|
|
78
78
|
export type { UseFollowTargetResult } from './ui/hooks/useFollowTarget';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* `/v2/follows`. When it is, that component is deleted and this one takes the
|
|
31
31
|
* name — not aliased, not deprecated in place.
|
|
32
32
|
*/
|
|
33
|
-
import type { FollowApplicationMode } from '@oxyhq/contracts';
|
|
33
|
+
import type { FollowApplicationMode, FollowStatus } from '@oxyhq/contracts';
|
|
34
34
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
35
35
|
/**
|
|
36
36
|
* The small vocabulary of verbs the ecosystem actually uses. An application
|
|
@@ -134,6 +134,11 @@ export interface FollowTargetButtonProps {
|
|
|
134
134
|
* application" is not.
|
|
135
135
|
*/
|
|
136
136
|
applicationName?: string;
|
|
137
|
+
/**
|
|
138
|
+
* Seed status from a list/feed payload. Incomplete rows (e.g. following without
|
|
139
|
+
* `relationshipId`) still trigger an authoritative refresh once private API is ready.
|
|
140
|
+
*/
|
|
141
|
+
initialStatus?: FollowStatus;
|
|
137
142
|
/**
|
|
138
143
|
* Fires when the server accepts a change, with whether this application
|
|
139
144
|
* should act on the follow NOW — the effective state, not the global one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,EACvE,OAAO,CAUR,CAAC;AAEF,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EACF;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAChE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,GACvB;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GACxB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,qBAAqB,CAAC;CACxC,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAIxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,cAAc,EAAE,CAmCnB;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,kBAAkB,+DAkL7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAUrD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;;;;OAQG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GACzC,qBAAqB,CAmKvB"}
|
|
@@ -58,6 +58,13 @@ export declare const useFollowTargetStore: import("zustand").UseBoundStore<impor
|
|
|
58
58
|
* "not followed" would offer to follow something already followed.
|
|
59
59
|
*/
|
|
60
60
|
export declare function isFollowedGlobally(status: FollowStatus): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Whether a cached status is safe to act on without a round trip.
|
|
63
|
+
*
|
|
64
|
+
* List payloads often carry `globalState` without `relationshipId`. Treating
|
|
65
|
+
* that as authoritative would leave disable/unfollow as no-ops forever.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isCompleteFollowStatus(status: FollowStatus): boolean;
|
|
61
68
|
/**
|
|
62
69
|
* Apply a mode change to a cached status without a round trip.
|
|
63
70
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5E,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
|
|
1
|
+
{"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5E,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAGpE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
|
|
@@ -72,7 +72,7 @@ export { RequireOxyAuth } from './ui/components/RequireOxyAuth.js';
|
|
|
72
72
|
export type { RequireOxyAuthProps, RequireOxyAuthPrompt } from './ui/components/RequireOxyAuth.js';
|
|
73
73
|
export { default as FollowButton } from './ui/components/FollowButton.js';
|
|
74
74
|
export type { FollowButtonProps, SingleFollowButtonProps, MultiFollowButtonProps } from './ui/components/FollowButton.js';
|
|
75
|
-
export { FollowTargetButton } from './ui/components/FollowTargetButton.js';
|
|
75
|
+
export { FollowTargetButton, buildFollowMenuItems, resolveFollowPrimaryAction, FOLLOW_ACTION_LEAVES_ACTIVE, } from './ui/components/FollowTargetButton.js';
|
|
76
76
|
export type { FollowTargetButtonProps, FollowVerb, FollowLabels, FollowDuration, } from './ui/components/FollowTargetButton.js';
|
|
77
77
|
export { useFollowTarget } from './ui/hooks/useFollowTarget.js';
|
|
78
78
|
export type { UseFollowTargetResult } from './ui/hooks/useFollowTarget.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* `/v2/follows`. When it is, that component is deleted and this one takes the
|
|
31
31
|
* name — not aliased, not deprecated in place.
|
|
32
32
|
*/
|
|
33
|
-
import type { FollowApplicationMode } from '@oxyhq/contracts';
|
|
33
|
+
import type { FollowApplicationMode, FollowStatus } from '@oxyhq/contracts';
|
|
34
34
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
35
35
|
/**
|
|
36
36
|
* The small vocabulary of verbs the ecosystem actually uses. An application
|
|
@@ -134,6 +134,11 @@ export interface FollowTargetButtonProps {
|
|
|
134
134
|
* application" is not.
|
|
135
135
|
*/
|
|
136
136
|
applicationName?: string;
|
|
137
|
+
/**
|
|
138
|
+
* Seed status from a list/feed payload. Incomplete rows (e.g. following without
|
|
139
|
+
* `relationshipId`) still trigger an authoritative refresh once private API is ready.
|
|
140
|
+
*/
|
|
141
|
+
initialStatus?: FollowStatus;
|
|
137
142
|
/**
|
|
138
143
|
* Fires when the server accepts a change, with whether this application
|
|
139
144
|
* should act on the follow NOW — the effective state, not the global one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,EACvE,OAAO,CAUR,CAAC;AAEF,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EACF;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAChE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,GACvB;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GACxB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,qBAAqB,CAAC;CACxC,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAIxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,cAAc,EAAE,CAmCnB;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,kBAAkB,+DAkL7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAUrD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;;;;OAQG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GACzC,qBAAqB,CAmKvB"}
|
|
@@ -58,6 +58,13 @@ export declare const useFollowTargetStore: import("zustand").UseBoundStore<impor
|
|
|
58
58
|
* "not followed" would offer to follow something already followed.
|
|
59
59
|
*/
|
|
60
60
|
export declare function isFollowedGlobally(status: FollowStatus): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Whether a cached status is safe to act on without a round trip.
|
|
63
|
+
*
|
|
64
|
+
* List payloads often carry `globalState` without `relationshipId`. Treating
|
|
65
|
+
* that as authoritative would leave disable/unfollow as no-ops forever.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isCompleteFollowStatus(status: FollowStatus): boolean;
|
|
61
68
|
/**
|
|
62
69
|
* Apply a mode change to a cached status without a round trip.
|
|
63
70
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5E,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
|
|
1
|
+
{"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5E,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAGpE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -279,7 +279,17 @@ export type { RequireOxyAuthProps, RequireOxyAuthPrompt } from './ui/components/
|
|
|
279
279
|
export { default as FollowButton } from './ui/components/FollowButton';
|
|
280
280
|
export type { FollowButtonProps, SingleFollowButtonProps, MultiFollowButtonProps } from './ui/components/FollowButton';
|
|
281
281
|
// The follow graph (#809): follows anything registered, not just users.
|
|
282
|
-
export {
|
|
282
|
+
export {
|
|
283
|
+
FollowTargetButton,
|
|
284
|
+
// The product rules the button encodes, for an application drawing its own
|
|
285
|
+
// affordance instead of using it — a chip grid, a compact row control.
|
|
286
|
+
// Unexported, they get duplicated, and the duplicate is where the "off here"
|
|
287
|
+
// rule goes wrong: pressing a follow that is switched off here must re-enable
|
|
288
|
+
// it here, not unfollow everywhere.
|
|
289
|
+
buildFollowMenuItems,
|
|
290
|
+
resolveFollowPrimaryAction,
|
|
291
|
+
FOLLOW_ACTION_LEAVES_ACTIVE,
|
|
292
|
+
} from './ui/components/FollowTargetButton';
|
|
283
293
|
export type {
|
|
284
294
|
FollowTargetButtonProps,
|
|
285
295
|
FollowVerb,
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
*/
|
|
33
33
|
|
|
34
34
|
import { memo, useCallback, useMemo } from 'react';
|
|
35
|
-
import type { FollowApplicationMode } from '@oxyhq/contracts';
|
|
35
|
+
import type { FollowApplicationMode, FollowStatus } from '@oxyhq/contracts';
|
|
36
36
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
37
37
|
import { View } from 'react-native';
|
|
38
38
|
import { Button } from '@oxyhq/bloom/button';
|
|
@@ -40,6 +40,7 @@ import { ChevronBottom_Stroke2_Corner0_Rounded as ChevronDown } from '@oxyhq/blo
|
|
|
40
40
|
import { Menu, MenuContent, MenuItem, MenuItemText, MenuTrigger } from '@oxyhq/bloom/menu';
|
|
41
41
|
import { toast } from '@oxyhq/bloom/toast';
|
|
42
42
|
import { useFollowTarget } from '../hooks/useFollowTarget';
|
|
43
|
+
import { useFollowTargetStore } from '../stores/followTargetStore';
|
|
43
44
|
|
|
44
45
|
/**
|
|
45
46
|
* The small vocabulary of verbs the ecosystem actually uses. An application
|
|
@@ -220,6 +221,11 @@ export interface FollowTargetButtonProps {
|
|
|
220
221
|
* application" is not.
|
|
221
222
|
*/
|
|
222
223
|
applicationName?: string;
|
|
224
|
+
/**
|
|
225
|
+
* Seed status from a list/feed payload. Incomplete rows (e.g. following without
|
|
226
|
+
* `relationshipId`) still trigger an authoritative refresh once private API is ready.
|
|
227
|
+
*/
|
|
228
|
+
initialStatus?: FollowStatus;
|
|
223
229
|
/**
|
|
224
230
|
* Fires when the server accepts a change, with whether this application
|
|
225
231
|
* should act on the follow NOW — the effective state, not the global one.
|
|
@@ -246,10 +252,17 @@ export const FollowTargetButton = memo(function FollowTargetButton({
|
|
|
246
252
|
showOptions = true,
|
|
247
253
|
durations = DEFAULT_DURATIONS,
|
|
248
254
|
applicationName,
|
|
255
|
+
initialStatus,
|
|
249
256
|
onChange,
|
|
250
257
|
}: FollowTargetButtonProps) {
|
|
251
258
|
const { status, isFollowing, isUnknown, isPending, follow, unfollow, disableHere, enableHere } =
|
|
252
|
-
useFollowTarget(targetId);
|
|
259
|
+
useFollowTarget(targetId, { initialStatus });
|
|
260
|
+
|
|
261
|
+
const reportMutationFailure = useCallback(() => {
|
|
262
|
+
const message =
|
|
263
|
+
useFollowTargetStore.getState().errors[targetId] ?? 'Could not update follow status';
|
|
264
|
+
toast.error(message);
|
|
265
|
+
}, [targetId]);
|
|
253
266
|
|
|
254
267
|
const text = useMemo(() => ({ ...VERB_LABELS[verb], ...labels }), [verb, labels]);
|
|
255
268
|
|
|
@@ -275,25 +288,31 @@ export const FollowTargetButton = memo(function FollowTargetButton({
|
|
|
275
288
|
switch (resolveFollowPrimaryAction({ isFollowing, applicationMode: status.applicationMode })) {
|
|
276
289
|
case 'enable-here':
|
|
277
290
|
if (await enableHere()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);
|
|
291
|
+
else reportMutationFailure();
|
|
278
292
|
return;
|
|
279
293
|
case 'unfollow':
|
|
280
294
|
if (await unfollow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);
|
|
295
|
+
else reportMutationFailure();
|
|
281
296
|
return;
|
|
282
297
|
case 'follow':
|
|
283
298
|
if (await follow()) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.follow);
|
|
299
|
+
else reportMutationFailure();
|
|
284
300
|
}
|
|
285
|
-
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange]);
|
|
301
|
+
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange, reportMutationFailure]);
|
|
286
302
|
|
|
287
303
|
const handleTimed = useCallback(
|
|
288
304
|
async (seconds: number, durationLabel: string) => {
|
|
289
|
-
if (!(await follow({ expiresIn: seconds })))
|
|
305
|
+
if (!(await follow({ expiresIn: seconds }))) {
|
|
306
|
+
reportMutationFailure();
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
290
309
|
onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['follow-timed']);
|
|
291
310
|
// The confirmation is the point: a follow that ends on its own is a
|
|
292
311
|
// promise, and a user who does not see it made will not believe it.
|
|
293
312
|
// Which is also why it must not appear when the promise was not made.
|
|
294
313
|
toast.success(`Following for ${durationLabel.toLowerCase()}`);
|
|
295
314
|
},
|
|
296
|
-
[follow, onChange]
|
|
315
|
+
[follow, onChange, reportMutationFailure]
|
|
297
316
|
);
|
|
298
317
|
|
|
299
318
|
const menuItems = useMemo(
|
|
@@ -332,20 +351,23 @@ export const FollowTargetButton = memo(function FollowTargetButton({
|
|
|
332
351
|
case 'enable-here':
|
|
333
352
|
void enableHere().then((ok) => {
|
|
334
353
|
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['enable-here']);
|
|
354
|
+
else reportMutationFailure();
|
|
335
355
|
});
|
|
336
356
|
return;
|
|
337
357
|
case 'disable-here':
|
|
338
358
|
void disableHere().then((ok) => {
|
|
339
359
|
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE['disable-here']);
|
|
360
|
+
else reportMutationFailure();
|
|
340
361
|
});
|
|
341
362
|
return;
|
|
342
363
|
case 'unfollow':
|
|
343
364
|
void unfollow().then((ok) => {
|
|
344
365
|
if (ok) onChange?.(FOLLOW_ACTION_LEAVES_ACTIVE.unfollow);
|
|
366
|
+
else reportMutationFailure();
|
|
345
367
|
});
|
|
346
368
|
}
|
|
347
369
|
},
|
|
348
|
-
[handleTimed, enableHere, disableHere, unfollow, onChange]
|
|
370
|
+
[handleTimed, enableHere, disableHere, unfollow, onChange, reportMutationFailure]
|
|
349
371
|
);
|
|
350
372
|
|
|
351
373
|
const primary = (
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
resolveFollowPrimaryAction,
|
|
19
19
|
} from '../FollowTargetButton';
|
|
20
20
|
import {
|
|
21
|
+
isCompleteFollowStatus,
|
|
21
22
|
isFollowedGlobally,
|
|
22
23
|
UNKNOWN_FOLLOW_STATUS,
|
|
23
24
|
withApplicationMode,
|
|
@@ -153,6 +154,17 @@ describe('withApplicationMode', () => {
|
|
|
153
154
|
);
|
|
154
155
|
expect(isFollowedGlobally(UNKNOWN_FOLLOW_STATUS)).toBe(false);
|
|
155
156
|
});
|
|
157
|
+
|
|
158
|
+
it('treats a following row without relationshipId as incomplete', () => {
|
|
159
|
+
expect(
|
|
160
|
+
isCompleteFollowStatus({
|
|
161
|
+
globalState: 'active',
|
|
162
|
+
applicationMode: 'inherit',
|
|
163
|
+
effectiveState: 'following',
|
|
164
|
+
})
|
|
165
|
+
).toBe(false);
|
|
166
|
+
expect(isCompleteFollowStatus(UNKNOWN_FOLLOW_STATUS)).toBe(true);
|
|
167
|
+
});
|
|
156
168
|
});
|
|
157
169
|
|
|
158
170
|
describe('what onChange reports', () => {
|
|
@@ -19,6 +19,7 @@ import { useCallback, useEffect } from 'react';
|
|
|
19
19
|
import type { FollowStatus } from '@oxyhq/contracts';
|
|
20
20
|
import { useOxy } from '../context/OxyContext';
|
|
21
21
|
import {
|
|
22
|
+
isCompleteFollowStatus,
|
|
22
23
|
isFollowedGlobally,
|
|
23
24
|
UNKNOWN_FOLLOW_STATUS,
|
|
24
25
|
useFollowTargetStore,
|
|
@@ -90,15 +91,22 @@ export function useFollowTarget(
|
|
|
90
91
|
useFollowTargetStore.getState().setStatus(targetId, next);
|
|
91
92
|
useFollowTargetStore.getState().setError(targetId, undefined);
|
|
92
93
|
} catch (e) {
|
|
93
|
-
useFollowTargetStore
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
const store = useFollowTargetStore.getState();
|
|
95
|
+
const message = e instanceof Error ? e.message : 'Could not read follow status';
|
|
96
|
+
// Leave `isUnknown` false so the button stays interactive and can retry.
|
|
97
|
+
// A failed read is not the same as "never asked" — disabling forever would
|
|
98
|
+
// strand the user with no affordance when the network blips.
|
|
99
|
+
if (!store.statuses[targetId]) {
|
|
100
|
+
store.setStatus(targetId, UNKNOWN_FOLLOW_STATUS);
|
|
101
|
+
}
|
|
102
|
+
store.setError(targetId, message);
|
|
96
103
|
}
|
|
97
104
|
}, [targetId, canUsePrivateApi, oxyServices]);
|
|
98
105
|
|
|
99
106
|
useEffect(() => {
|
|
100
107
|
if (!targetId || !canUsePrivateApi) return;
|
|
101
|
-
|
|
108
|
+
const existing = useFollowTargetStore.getState().statuses[targetId];
|
|
109
|
+
if (existing && isCompleteFollowStatus(existing)) return;
|
|
102
110
|
void refresh();
|
|
103
111
|
}, [targetId, canUsePrivateApi, refresh]);
|
|
104
112
|
|
|
@@ -93,6 +93,17 @@ export function isFollowedGlobally(status: FollowStatus): boolean {
|
|
|
93
93
|
return status.globalState === 'active' || status.globalState === 'requested';
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Whether a cached status is safe to act on without a round trip.
|
|
98
|
+
*
|
|
99
|
+
* List payloads often carry `globalState` without `relationshipId`. Treating
|
|
100
|
+
* that as authoritative would leave disable/unfollow as no-ops forever.
|
|
101
|
+
*/
|
|
102
|
+
export function isCompleteFollowStatus(status: FollowStatus): boolean {
|
|
103
|
+
if (isFollowedGlobally(status)) return Boolean(status.relationshipId);
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
|
|
96
107
|
/**
|
|
97
108
|
* Apply a mode change to a cached status without a round trip.
|
|
98
109
|
*
|