@oxyhq/services 27.1.0 → 27.1.1
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 +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/components/FollowTargetButton.js +42 -11
- package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -1
- package/lib/commonjs/ui/hooks/useFollowTarget.js +18 -11
- package/lib/commonjs/ui/hooks/useFollowTarget.js.map +1 -1
- package/lib/module/index.js +5 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/components/FollowTargetButton.js +41 -11
- package/lib/module/ui/components/FollowTargetButton.js.map +1 -1
- package/lib/module/ui/hooks/useFollowTarget.js +18 -11
- package/lib/module/ui/hooks/useFollowTarget.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 +11 -0
- package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollowTarget.d.ts +13 -4
- package/lib/typescript/commonjs/ui/hooks/useFollowTarget.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 +11 -0
- package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFollowTarget.d.ts +13 -4
- package/lib/typescript/module/ui/hooks/useFollowTarget.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +9 -1
- package/src/ui/components/FollowTargetButton.tsx +40 -10
- package/src/ui/components/__tests__/followTargetButton.test.ts +24 -4
- package/src/ui/hooks/useFollowTarget.ts +43 -26
package/lib/commonjs/index.js
CHANGED
|
@@ -279,6 +279,12 @@ Object.defineProperty(exports, "invalidateUserQueries", {
|
|
|
279
279
|
return _queryKeys.invalidateUserQueries;
|
|
280
280
|
}
|
|
281
281
|
});
|
|
282
|
+
Object.defineProperty(exports, "isFollowedGlobally", {
|
|
283
|
+
enumerable: true,
|
|
284
|
+
get: function () {
|
|
285
|
+
return _followTargetStore.isFollowedGlobally;
|
|
286
|
+
}
|
|
287
|
+
});
|
|
282
288
|
Object.defineProperty(exports, "isInvalidSessionError", {
|
|
283
289
|
enumerable: true,
|
|
284
290
|
get: function () {
|
|
@@ -723,6 +729,12 @@ Object.defineProperty(exports, "useUsersBySessions", {
|
|
|
723
729
|
return _useAccountQueries.useUsersBySessions;
|
|
724
730
|
}
|
|
725
731
|
});
|
|
732
|
+
Object.defineProperty(exports, "withApplicationMode", {
|
|
733
|
+
enumerable: true,
|
|
734
|
+
get: function () {
|
|
735
|
+
return _followTargetStore.withApplicationMode;
|
|
736
|
+
}
|
|
737
|
+
});
|
|
726
738
|
var _core = require("@oxyhq/core");
|
|
727
739
|
var _reactNative = require("react-native");
|
|
728
740
|
var _OxyProvider = _interopRequireDefault(require("./ui/components/OxyProvider.js"));
|
|
@@ -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":"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,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;AAnX9C;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;;AAuBA;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":[]}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.FollowTargetButton = void 0;
|
|
7
7
|
exports.buildFollowMenuItems = buildFollowMenuItems;
|
|
8
|
+
exports.resolveFollowPrimaryAction = resolveFollowPrimaryAction;
|
|
8
9
|
var _react = require("react");
|
|
9
10
|
var _reactNative = require("react-native");
|
|
10
11
|
var _button = require("@oxyhq/bloom/button");
|
|
@@ -110,6 +111,18 @@ const DEFAULT_DURATIONS = [{
|
|
|
110
111
|
* answered — every one of them addresses a relationship that does not exist
|
|
111
112
|
* yet, so offering them mid-write would mean sending a guessed id.
|
|
112
113
|
*/
|
|
114
|
+
/**
|
|
115
|
+
* What the main button should do for the current state.
|
|
116
|
+
*
|
|
117
|
+
* Exported because the product rule is not obvious from the label alone: a
|
|
118
|
+
* follow switched off here still reads as "following" globally, so the primary
|
|
119
|
+
* press must re-enable here — not unfollow everywhere.
|
|
120
|
+
*/
|
|
121
|
+
function resolveFollowPrimaryAction(input) {
|
|
122
|
+
if (!input.isFollowing) return 'follow';
|
|
123
|
+
if (input.applicationMode === 'disabled') return 'enable-here';
|
|
124
|
+
return 'unfollow';
|
|
125
|
+
}
|
|
113
126
|
function buildFollowMenuItems(input) {
|
|
114
127
|
const items = [];
|
|
115
128
|
if (!input.following) {
|
|
@@ -186,22 +199,39 @@ const FollowTargetButton = exports.FollowTargetButton = /*#__PURE__*/(0, _react.
|
|
|
186
199
|
// this act here" — so the label has to be derived from the other two.
|
|
187
200
|
return status.applicationMode === 'disabled' ? text.disabled : text.active;
|
|
188
201
|
}, [isFollowing, status.globalState, status.applicationMode, text]);
|
|
202
|
+
|
|
203
|
+
// `onChange` fires ONLY when the server accepted the write.
|
|
204
|
+
//
|
|
205
|
+
// The mutations never reject — a refusal becomes error state so the button
|
|
206
|
+
// can render it — so an unconditional `onChange` after `await` reports
|
|
207
|
+
// INTENT rather than outcome. A caller mirroring the follow somewhere else
|
|
208
|
+
// (a local shelf, a ranking signal) would then mirror failures too, and the
|
|
209
|
+
// button beside it would show the server's truth while the mirror showed a
|
|
210
|
+
// press that did not happen. Same shape of trap as reading `effectiveState`
|
|
211
|
+
// as "does the user follow this".
|
|
189
212
|
const handlePrimary = (0, _react.useCallback)(async () => {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
213
|
+
switch (resolveFollowPrimaryAction({
|
|
214
|
+
isFollowing,
|
|
215
|
+
applicationMode: status.applicationMode
|
|
216
|
+
})) {
|
|
217
|
+
case 'enable-here':
|
|
218
|
+
if (await enableHere()) onChange?.(true);
|
|
219
|
+
return;
|
|
220
|
+
case 'unfollow':
|
|
221
|
+
if (await unfollow()) onChange?.(false);
|
|
222
|
+
return;
|
|
223
|
+
case 'follow':
|
|
224
|
+
if (await follow()) onChange?.(true);
|
|
194
225
|
}
|
|
195
|
-
|
|
196
|
-
onChange?.(true);
|
|
197
|
-
}, [isFollowing, follow, unfollow, onChange]);
|
|
226
|
+
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange]);
|
|
198
227
|
const handleTimed = (0, _react.useCallback)(async (seconds, durationLabel) => {
|
|
199
|
-
await follow({
|
|
228
|
+
if (!(await follow({
|
|
200
229
|
expiresIn: seconds
|
|
201
|
-
});
|
|
230
|
+
}))) return;
|
|
202
231
|
onChange?.(true);
|
|
203
232
|
// The confirmation is the point: a follow that ends on its own is a
|
|
204
233
|
// promise, and a user who does not see it made will not believe it.
|
|
234
|
+
// Which is also why it must not appear when the promise was not made.
|
|
205
235
|
_toast.toast.success(`Following for ${durationLabel.toLowerCase()}`);
|
|
206
236
|
}, [follow, onChange]);
|
|
207
237
|
const menuItems = (0, _react.useMemo)(() => buildFollowMenuItems({
|
|
@@ -225,8 +255,9 @@ const FollowTargetButton = exports.FollowTargetButton = /*#__PURE__*/(0, _react.
|
|
|
225
255
|
void disableHere();
|
|
226
256
|
return;
|
|
227
257
|
case 'unfollow':
|
|
228
|
-
void unfollow()
|
|
229
|
-
|
|
258
|
+
void unfollow().then(ok => {
|
|
259
|
+
if (ok) onChange?.(false);
|
|
260
|
+
});
|
|
230
261
|
}
|
|
231
262
|
}, [handleTimed, enableHere, disableHere, unfollow, onChange]);
|
|
232
263
|
const primary = /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
|
|
@@ -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","
|
|
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","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","exports","memo","targetId","verb","labels","size","style","showOptions","onChange","status","isUnknown","unfollow","disableHere","enableHere","useFollowTarget","text","useMemo","globalState","handlePrimary","useCallback","handleTimed","expiresIn","toast","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":[]}
|
|
@@ -67,7 +67,7 @@ function useFollowTarget(targetId, options) {
|
|
|
67
67
|
* through this so the rollback cannot be forgotten in one of them.
|
|
68
68
|
*/
|
|
69
69
|
const mutate = (0, _react.useCallback)(async (optimistic, run, failureMessage) => {
|
|
70
|
-
if (!targetId) return;
|
|
70
|
+
if (!targetId) return false;
|
|
71
71
|
const store = _followTargetStore.useFollowTargetStore.getState();
|
|
72
72
|
const previous = store.statuses[targetId];
|
|
73
73
|
store.setStatus(targetId, optimistic);
|
|
@@ -76,20 +76,22 @@ function useFollowTarget(targetId, options) {
|
|
|
76
76
|
try {
|
|
77
77
|
const settled = await run();
|
|
78
78
|
if (settled) _followTargetStore.useFollowTargetStore.getState().setStatus(targetId, settled);
|
|
79
|
+
return true;
|
|
79
80
|
} catch (e) {
|
|
80
81
|
const s = _followTargetStore.useFollowTargetStore.getState();
|
|
81
82
|
// Back to what was true, not to a guess. Clearing the entry instead
|
|
82
83
|
// would make the next render ask again and flash the wrong state.
|
|
83
84
|
if (previous) s.setStatus(targetId, previous);
|
|
84
85
|
s.setError(targetId, e instanceof Error ? e.message : failureMessage);
|
|
86
|
+
return false;
|
|
85
87
|
} finally {
|
|
86
88
|
_followTargetStore.useFollowTargetStore.getState().setPending(targetId, false);
|
|
87
89
|
}
|
|
88
90
|
}, [targetId]);
|
|
89
91
|
const current = status ?? _followTargetStore.UNKNOWN_FOLLOW_STATUS;
|
|
90
92
|
const follow = (0, _react.useCallback)(async opts => {
|
|
91
|
-
if (!targetId) return;
|
|
92
|
-
|
|
93
|
+
if (!targetId) return false;
|
|
94
|
+
return mutate({
|
|
93
95
|
...(0, _followTargetStore.withApplicationMode)({
|
|
94
96
|
...current,
|
|
95
97
|
globalState: 'active'
|
|
@@ -105,8 +107,8 @@ function useFollowTarget(targetId, options) {
|
|
|
105
107
|
}, [targetId, current, mutate, oxyServices]);
|
|
106
108
|
const unfollow = (0, _react.useCallback)(async () => {
|
|
107
109
|
const relationshipId = current.relationshipId;
|
|
108
|
-
if (!targetId || !relationshipId) return;
|
|
109
|
-
|
|
110
|
+
if (!targetId || !relationshipId) return false;
|
|
111
|
+
return mutate({
|
|
110
112
|
..._followTargetStore.UNKNOWN_FOLLOW_STATUS
|
|
111
113
|
}, async () => {
|
|
112
114
|
await oxyServices.unfollowTarget(relationshipId);
|
|
@@ -115,15 +117,20 @@ function useFollowTarget(targetId, options) {
|
|
|
115
117
|
};
|
|
116
118
|
}, 'Could not unfollow');
|
|
117
119
|
}, [targetId, current.relationshipId, mutate, oxyServices]);
|
|
118
|
-
const
|
|
120
|
+
const disableHere = (0, _react.useCallback)(async () => {
|
|
119
121
|
const relationshipId = current.relationshipId;
|
|
120
|
-
if (!targetId || !relationshipId) return;
|
|
121
|
-
|
|
122
|
-
await oxyServices.setFollowApplicationMode(relationshipId,
|
|
122
|
+
if (!targetId || !relationshipId) return false;
|
|
123
|
+
return mutate((0, _followTargetStore.withApplicationMode)(current, 'disabled'), async () => {
|
|
124
|
+
await oxyServices.setFollowApplicationMode(relationshipId, 'disabled');
|
|
125
|
+
}, 'Could not change this app’s setting for this follow');
|
|
126
|
+
}, [targetId, current, mutate, oxyServices]);
|
|
127
|
+
const enableHere = (0, _react.useCallback)(async () => {
|
|
128
|
+
const relationshipId = current.relationshipId;
|
|
129
|
+
if (!targetId || !relationshipId) return false;
|
|
130
|
+
return mutate((0, _followTargetStore.withApplicationMode)(current, 'inherit'), async () => {
|
|
131
|
+
await oxyServices.restoreFollowInheritance(relationshipId);
|
|
123
132
|
}, 'Could not change this app’s setting for this follow');
|
|
124
133
|
}, [targetId, current, mutate, oxyServices]);
|
|
125
|
-
const disableHere = (0, _react.useCallback)(() => setMode('disabled'), [setMode]);
|
|
126
|
-
const enableHere = (0, _react.useCallback)(() => setMode('enabled'), [setMode]);
|
|
127
134
|
return {
|
|
128
135
|
status: current,
|
|
129
136
|
isFollowing: (0, _followTargetStore.isFollowedGlobally)(current),
|
|
@@ -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","message","mutate","optimistic","run","failureMessage","previous","setPending","settled","current","UNKNOWN_FOLLOW_STATUS","follow","opts","withApplicationMode","globalState","applicationMode","expiresIn","expiresAt","Date","now","toISOString","followTarget","unfollow","relationshipId","unfollowTarget","
|
|
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","message","mutate","optimistic","run","failureMessage","previous","setPending","settled","current","UNKNOWN_FOLLOW_STATUS","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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -148,7 +148,11 @@ export { default as FollowButton } from "./ui/components/FollowButton.js";
|
|
|
148
148
|
// The follow graph (#809): follows anything registered, not just users.
|
|
149
149
|
export { FollowTargetButton } from "./ui/components/FollowTargetButton.js";
|
|
150
150
|
export { useFollowTarget } from "./ui/hooks/useFollowTarget.js";
|
|
151
|
-
export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS
|
|
151
|
+
export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS,
|
|
152
|
+
// The answer to "does the user follow this at all". Documented in
|
|
153
|
+
// docs/FOLLOWS.md and, until now, not exported — so the one line of that
|
|
154
|
+
// guide most likely to be reached for did not resolve.
|
|
155
|
+
isFollowedGlobally, withApplicationMode } from "./ui/stores/followTargetStore.js";
|
|
152
156
|
export { default as OxyPayButton } from "./ui/components/OxyPayButton.js";
|
|
153
157
|
export { LogoIcon } from "./ui/components/logo/LogoIcon.js";
|
|
154
158
|
export { LogoText } from "./ui/components/logo/LogoText.js";
|
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","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","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":[]}
|
|
@@ -105,6 +105,18 @@ const DEFAULT_DURATIONS = [{
|
|
|
105
105
|
* answered — every one of them addresses a relationship that does not exist
|
|
106
106
|
* yet, so offering them mid-write would mean sending a guessed id.
|
|
107
107
|
*/
|
|
108
|
+
/**
|
|
109
|
+
* What the main button should do for the current state.
|
|
110
|
+
*
|
|
111
|
+
* Exported because the product rule is not obvious from the label alone: a
|
|
112
|
+
* follow switched off here still reads as "following" globally, so the primary
|
|
113
|
+
* press must re-enable here — not unfollow everywhere.
|
|
114
|
+
*/
|
|
115
|
+
export function resolveFollowPrimaryAction(input) {
|
|
116
|
+
if (!input.isFollowing) return 'follow';
|
|
117
|
+
if (input.applicationMode === 'disabled') return 'enable-here';
|
|
118
|
+
return 'unfollow';
|
|
119
|
+
}
|
|
108
120
|
export function buildFollowMenuItems(input) {
|
|
109
121
|
const items = [];
|
|
110
122
|
if (!input.following) {
|
|
@@ -181,22 +193,39 @@ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton(
|
|
|
181
193
|
// this act here" — so the label has to be derived from the other two.
|
|
182
194
|
return status.applicationMode === 'disabled' ? text.disabled : text.active;
|
|
183
195
|
}, [isFollowing, status.globalState, status.applicationMode, text]);
|
|
196
|
+
|
|
197
|
+
// `onChange` fires ONLY when the server accepted the write.
|
|
198
|
+
//
|
|
199
|
+
// The mutations never reject — a refusal becomes error state so the button
|
|
200
|
+
// can render it — so an unconditional `onChange` after `await` reports
|
|
201
|
+
// INTENT rather than outcome. A caller mirroring the follow somewhere else
|
|
202
|
+
// (a local shelf, a ranking signal) would then mirror failures too, and the
|
|
203
|
+
// button beside it would show the server's truth while the mirror showed a
|
|
204
|
+
// press that did not happen. Same shape of trap as reading `effectiveState`
|
|
205
|
+
// as "does the user follow this".
|
|
184
206
|
const handlePrimary = useCallback(async () => {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
207
|
+
switch (resolveFollowPrimaryAction({
|
|
208
|
+
isFollowing,
|
|
209
|
+
applicationMode: status.applicationMode
|
|
210
|
+
})) {
|
|
211
|
+
case 'enable-here':
|
|
212
|
+
if (await enableHere()) onChange?.(true);
|
|
213
|
+
return;
|
|
214
|
+
case 'unfollow':
|
|
215
|
+
if (await unfollow()) onChange?.(false);
|
|
216
|
+
return;
|
|
217
|
+
case 'follow':
|
|
218
|
+
if (await follow()) onChange?.(true);
|
|
189
219
|
}
|
|
190
|
-
|
|
191
|
-
onChange?.(true);
|
|
192
|
-
}, [isFollowing, follow, unfollow, onChange]);
|
|
220
|
+
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange]);
|
|
193
221
|
const handleTimed = useCallback(async (seconds, durationLabel) => {
|
|
194
|
-
await follow({
|
|
222
|
+
if (!(await follow({
|
|
195
223
|
expiresIn: seconds
|
|
196
|
-
});
|
|
224
|
+
}))) return;
|
|
197
225
|
onChange?.(true);
|
|
198
226
|
// The confirmation is the point: a follow that ends on its own is a
|
|
199
227
|
// promise, and a user who does not see it made will not believe it.
|
|
228
|
+
// Which is also why it must not appear when the promise was not made.
|
|
200
229
|
toast.success(`Following for ${durationLabel.toLowerCase()}`);
|
|
201
230
|
}, [follow, onChange]);
|
|
202
231
|
const menuItems = useMemo(() => buildFollowMenuItems({
|
|
@@ -220,8 +249,9 @@ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton(
|
|
|
220
249
|
void disableHere();
|
|
221
250
|
return;
|
|
222
251
|
case 'unfollow':
|
|
223
|
-
void unfollow()
|
|
224
|
-
|
|
252
|
+
void unfollow().then(ok => {
|
|
253
|
+
if (ok) onChange?.(false);
|
|
254
|
+
});
|
|
225
255
|
}
|
|
226
256
|
}, [handleTimed, enableHere, disableHere, unfollow, onChange]);
|
|
227
257
|
const primary = /*#__PURE__*/_jsx(Button, {
|
|
@@ -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","
|
|
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","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","unfollow","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":"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","ignoreList":[]}
|
|
@@ -63,7 +63,7 @@ export function useFollowTarget(targetId, options) {
|
|
|
63
63
|
* through this so the rollback cannot be forgotten in one of them.
|
|
64
64
|
*/
|
|
65
65
|
const mutate = useCallback(async (optimistic, run, failureMessage) => {
|
|
66
|
-
if (!targetId) return;
|
|
66
|
+
if (!targetId) return false;
|
|
67
67
|
const store = useFollowTargetStore.getState();
|
|
68
68
|
const previous = store.statuses[targetId];
|
|
69
69
|
store.setStatus(targetId, optimistic);
|
|
@@ -72,20 +72,22 @@ export function useFollowTarget(targetId, options) {
|
|
|
72
72
|
try {
|
|
73
73
|
const settled = await run();
|
|
74
74
|
if (settled) useFollowTargetStore.getState().setStatus(targetId, settled);
|
|
75
|
+
return true;
|
|
75
76
|
} catch (e) {
|
|
76
77
|
const s = useFollowTargetStore.getState();
|
|
77
78
|
// Back to what was true, not to a guess. Clearing the entry instead
|
|
78
79
|
// would make the next render ask again and flash the wrong state.
|
|
79
80
|
if (previous) s.setStatus(targetId, previous);
|
|
80
81
|
s.setError(targetId, e instanceof Error ? e.message : failureMessage);
|
|
82
|
+
return false;
|
|
81
83
|
} finally {
|
|
82
84
|
useFollowTargetStore.getState().setPending(targetId, false);
|
|
83
85
|
}
|
|
84
86
|
}, [targetId]);
|
|
85
87
|
const current = status ?? UNKNOWN_FOLLOW_STATUS;
|
|
86
88
|
const follow = useCallback(async opts => {
|
|
87
|
-
if (!targetId) return;
|
|
88
|
-
|
|
89
|
+
if (!targetId) return false;
|
|
90
|
+
return mutate({
|
|
89
91
|
...withApplicationMode({
|
|
90
92
|
...current,
|
|
91
93
|
globalState: 'active'
|
|
@@ -101,8 +103,8 @@ export function useFollowTarget(targetId, options) {
|
|
|
101
103
|
}, [targetId, current, mutate, oxyServices]);
|
|
102
104
|
const unfollow = useCallback(async () => {
|
|
103
105
|
const relationshipId = current.relationshipId;
|
|
104
|
-
if (!targetId || !relationshipId) return;
|
|
105
|
-
|
|
106
|
+
if (!targetId || !relationshipId) return false;
|
|
107
|
+
return mutate({
|
|
106
108
|
...UNKNOWN_FOLLOW_STATUS
|
|
107
109
|
}, async () => {
|
|
108
110
|
await oxyServices.unfollowTarget(relationshipId);
|
|
@@ -111,15 +113,20 @@ export function useFollowTarget(targetId, options) {
|
|
|
111
113
|
};
|
|
112
114
|
}, 'Could not unfollow');
|
|
113
115
|
}, [targetId, current.relationshipId, mutate, oxyServices]);
|
|
114
|
-
const
|
|
116
|
+
const disableHere = useCallback(async () => {
|
|
115
117
|
const relationshipId = current.relationshipId;
|
|
116
|
-
if (!targetId || !relationshipId) return;
|
|
117
|
-
|
|
118
|
-
await oxyServices.setFollowApplicationMode(relationshipId,
|
|
118
|
+
if (!targetId || !relationshipId) return false;
|
|
119
|
+
return mutate(withApplicationMode(current, 'disabled'), async () => {
|
|
120
|
+
await oxyServices.setFollowApplicationMode(relationshipId, 'disabled');
|
|
121
|
+
}, 'Could not change this app’s setting for this follow');
|
|
122
|
+
}, [targetId, current, mutate, oxyServices]);
|
|
123
|
+
const enableHere = useCallback(async () => {
|
|
124
|
+
const relationshipId = current.relationshipId;
|
|
125
|
+
if (!targetId || !relationshipId) return false;
|
|
126
|
+
return mutate(withApplicationMode(current, 'inherit'), async () => {
|
|
127
|
+
await oxyServices.restoreFollowInheritance(relationshipId);
|
|
119
128
|
}, 'Could not change this app’s setting for this follow');
|
|
120
129
|
}, [targetId, current, mutate, oxyServices]);
|
|
121
|
-
const disableHere = useCallback(() => setMode('disabled'), [setMode]);
|
|
122
|
-
const enableHere = useCallback(() => setMode('enabled'), [setMode]);
|
|
123
130
|
return {
|
|
124
131
|
status: current,
|
|
125
132
|
isFollowing: isFollowedGlobally(current),
|
|
@@ -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","message","mutate","optimistic","run","failureMessage","previous","setPending","settled","current","follow","opts","globalState","applicationMode","expiresIn","expiresAt","Date","now","toISOString","followTarget","unfollow","relationshipId","unfollowTarget","
|
|
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","disableHere","setFollowApplicationMode","enableHere","restoreFollowInheritance","isFollowing","isUnknown"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFollowTarget.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -76,7 +76,7 @@ export { FollowTargetButton } 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';
|
|
79
|
-
export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS } from './ui/stores/followTargetStore';
|
|
79
|
+
export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS, isFollowedGlobally, withApplicationMode, } from './ui/stores/followTargetStore';
|
|
80
80
|
export { default as OxyPayButton } from './ui/components/OxyPayButton';
|
|
81
81
|
export { LogoIcon } from './ui/components/logo/LogoIcon';
|
|
82
82
|
export { LogoText } from './ui/components/logo/LogoText';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAYH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAKzE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACH,aAAa,EACb,SAAS,IAAI,cAAc,EAC3B,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAKjF,OAAO,EACH,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACH,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,sBAAsB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,GAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,yBAAyB,GAC5B,MAAM,sCAAsC,CAAC;AAG9C,YAAY,EACR,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,GAC7B,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,gCAAgC,EAChC,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAClB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACH,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACR,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAQjE,OAAO,EACH,SAAS,EACT,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,GAC/B,MAAM,8BAA8B,CAAC;AAStC,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,8BAA8B,EAC9B,8BAA8B,GACjC,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACR,aAAa,EACb,kBAAkB,EAClB,uBAAuB,GAC1B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKrD,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAKvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AA0B/E,OAAO,EACL,2BAA2B,EAC3B,mCAAmC,GACpC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAM5F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACf,MAAM,kCAAkC,CAAC;AAO1C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEvH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,YAAY,EACV,uBAAuB,EACvB,UAAU,EACV,YAAY,EACZ,cAAc,GACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,6 +79,17 @@ export interface FollowMenuItem {
|
|
|
79
79
|
* answered — every one of them addresses a relationship that does not exist
|
|
80
80
|
* yet, so offering them mid-write would mean sending a guessed id.
|
|
81
81
|
*/
|
|
82
|
+
/**
|
|
83
|
+
* What the main button should do for the current state.
|
|
84
|
+
*
|
|
85
|
+
* Exported because the product rule is not obvious from the label alone: a
|
|
86
|
+
* follow switched off here still reads as "following" globally, so the primary
|
|
87
|
+
* press must re-enable here — not unfollow everywhere.
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveFollowPrimaryAction(input: {
|
|
90
|
+
isFollowing: boolean;
|
|
91
|
+
applicationMode: FollowApplicationMode;
|
|
92
|
+
}): 'follow' | 'unfollow' | 'enable-here';
|
|
82
93
|
export declare function buildFollowMenuItems(input: {
|
|
83
94
|
following: boolean;
|
|
84
95
|
applicationMode: FollowApplicationMode;
|
|
@@ -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;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzD;;;;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,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,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,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,kBAAkB,+
|
|
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;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzD;;;;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,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,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,kBAAkB,+DAyJ7B,CAAC"}
|
|
@@ -26,13 +26,22 @@ export interface UseFollowTargetResult {
|
|
|
26
26
|
isUnknown: boolean;
|
|
27
27
|
isPending: boolean;
|
|
28
28
|
error: string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Every mutation resolves to whether the server ACCEPTED it.
|
|
31
|
+
*
|
|
32
|
+
* They never reject — a refusal becomes `error` in the store, so the button
|
|
33
|
+
* can render it — which means a caller that only awaits them cannot tell a
|
|
34
|
+
* write that happened from one that did not. Returning the outcome is what
|
|
35
|
+
* lets a caller mirror the change somewhere else without mirroring failures
|
|
36
|
+
* too.
|
|
37
|
+
*/
|
|
29
38
|
follow: (options?: {
|
|
30
39
|
expiresIn?: number;
|
|
31
|
-
}) => Promise<
|
|
32
|
-
unfollow: () => Promise<
|
|
40
|
+
}) => Promise<boolean>;
|
|
41
|
+
unfollow: () => Promise<boolean>;
|
|
33
42
|
/** Stop acting on this follow HERE, without giving it up everywhere. */
|
|
34
|
-
disableHere: () => Promise<
|
|
35
|
-
enableHere: () => Promise<
|
|
43
|
+
disableHere: () => Promise<boolean>;
|
|
44
|
+
enableHere: () => Promise<boolean>;
|
|
36
45
|
refresh: () => Promise<void>;
|
|
37
46
|
}
|
|
38
47
|
export declare function useFollowTarget(targetId: string | undefined, options?: {
|
|
@@ -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;AASrD,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,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,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;AASrD,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,CAwJvB"}
|
|
@@ -76,7 +76,7 @@ export { FollowTargetButton } 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';
|
|
79
|
-
export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS } from './ui/stores/followTargetStore.js';
|
|
79
|
+
export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS, isFollowedGlobally, withApplicationMode, } from './ui/stores/followTargetStore.js';
|
|
80
80
|
export { default as OxyPayButton } from './ui/components/OxyPayButton.js';
|
|
81
81
|
export { LogoIcon } from './ui/components/logo/LogoIcon.js';
|
|
82
82
|
export { LogoText } from './ui/components/logo/LogoText.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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"}
|
|
@@ -79,6 +79,17 @@ export interface FollowMenuItem {
|
|
|
79
79
|
* answered — every one of them addresses a relationship that does not exist
|
|
80
80
|
* yet, so offering them mid-write would mean sending a guessed id.
|
|
81
81
|
*/
|
|
82
|
+
/**
|
|
83
|
+
* What the main button should do for the current state.
|
|
84
|
+
*
|
|
85
|
+
* Exported because the product rule is not obvious from the label alone: a
|
|
86
|
+
* follow switched off here still reads as "following" globally, so the primary
|
|
87
|
+
* press must re-enable here — not unfollow everywhere.
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveFollowPrimaryAction(input: {
|
|
90
|
+
isFollowing: boolean;
|
|
91
|
+
applicationMode: FollowApplicationMode;
|
|
92
|
+
}): 'follow' | 'unfollow' | 'enable-here';
|
|
82
93
|
export declare function buildFollowMenuItems(input: {
|
|
83
94
|
following: boolean;
|
|
84
95
|
applicationMode: FollowApplicationMode;
|
|
@@ -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;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzD;;;;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,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,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,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,kBAAkB,+
|
|
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;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzD;;;;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,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,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,kBAAkB,+DAyJ7B,CAAC"}
|
|
@@ -26,13 +26,22 @@ export interface UseFollowTargetResult {
|
|
|
26
26
|
isUnknown: boolean;
|
|
27
27
|
isPending: boolean;
|
|
28
28
|
error: string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Every mutation resolves to whether the server ACCEPTED it.
|
|
31
|
+
*
|
|
32
|
+
* They never reject — a refusal becomes `error` in the store, so the button
|
|
33
|
+
* can render it — which means a caller that only awaits them cannot tell a
|
|
34
|
+
* write that happened from one that did not. Returning the outcome is what
|
|
35
|
+
* lets a caller mirror the change somewhere else without mirroring failures
|
|
36
|
+
* too.
|
|
37
|
+
*/
|
|
29
38
|
follow: (options?: {
|
|
30
39
|
expiresIn?: number;
|
|
31
|
-
}) => Promise<
|
|
32
|
-
unfollow: () => Promise<
|
|
40
|
+
}) => Promise<boolean>;
|
|
41
|
+
unfollow: () => Promise<boolean>;
|
|
33
42
|
/** Stop acting on this follow HERE, without giving it up everywhere. */
|
|
34
|
-
disableHere: () => Promise<
|
|
35
|
-
enableHere: () => Promise<
|
|
43
|
+
disableHere: () => Promise<boolean>;
|
|
44
|
+
enableHere: () => Promise<boolean>;
|
|
36
45
|
refresh: () => Promise<void>;
|
|
37
46
|
}
|
|
38
47
|
export declare function useFollowTarget(targetId: string | undefined, options?: {
|
|
@@ -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;AASrD,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,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,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;AASrD,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,CAwJvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "27.1.
|
|
3
|
+
"version": "27.1.1",
|
|
4
4
|
"description": "OxyHQ Expo/React Native SDK — UI components, screens, and native features",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"@commitlint/cli": "^21.2.1",
|
|
148
148
|
"@commitlint/config-conventional": "^21.2.0",
|
|
149
149
|
"@expo/vector-icons": "^15.0.3",
|
|
150
|
-
"@oxyhq/core": "19.1.
|
|
150
|
+
"@oxyhq/core": "19.1.1",
|
|
151
151
|
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
152
152
|
"@react-native-community/netinfo": "^11.4.1",
|
|
153
153
|
"@react-native/babel-preset": "^0.86.0",
|
package/src/index.ts
CHANGED
|
@@ -288,7 +288,15 @@ export type {
|
|
|
288
288
|
} from './ui/components/FollowTargetButton';
|
|
289
289
|
export { useFollowTarget } from './ui/hooks/useFollowTarget';
|
|
290
290
|
export type { UseFollowTargetResult } from './ui/hooks/useFollowTarget';
|
|
291
|
-
export {
|
|
291
|
+
export {
|
|
292
|
+
useFollowTargetStore,
|
|
293
|
+
UNKNOWN_FOLLOW_STATUS,
|
|
294
|
+
// The answer to "does the user follow this at all". Documented in
|
|
295
|
+
// docs/FOLLOWS.md and, until now, not exported — so the one line of that
|
|
296
|
+
// guide most likely to be reached for did not resolve.
|
|
297
|
+
isFollowedGlobally,
|
|
298
|
+
withApplicationMode,
|
|
299
|
+
} from './ui/stores/followTargetStore';
|
|
292
300
|
export { default as OxyPayButton } from './ui/components/OxyPayButton';
|
|
293
301
|
export { LogoIcon } from './ui/components/logo/LogoIcon';
|
|
294
302
|
export { LogoText } from './ui/components/logo/LogoText';
|
|
@@ -111,6 +111,22 @@ export interface FollowMenuItem {
|
|
|
111
111
|
* answered — every one of them addresses a relationship that does not exist
|
|
112
112
|
* yet, so offering them mid-write would mean sending a guessed id.
|
|
113
113
|
*/
|
|
114
|
+
/**
|
|
115
|
+
* What the main button should do for the current state.
|
|
116
|
+
*
|
|
117
|
+
* Exported because the product rule is not obvious from the label alone: a
|
|
118
|
+
* follow switched off here still reads as "following" globally, so the primary
|
|
119
|
+
* press must re-enable here — not unfollow everywhere.
|
|
120
|
+
*/
|
|
121
|
+
export function resolveFollowPrimaryAction(input: {
|
|
122
|
+
isFollowing: boolean;
|
|
123
|
+
applicationMode: FollowApplicationMode;
|
|
124
|
+
}): 'follow' | 'unfollow' | 'enable-here' {
|
|
125
|
+
if (!input.isFollowing) return 'follow';
|
|
126
|
+
if (input.applicationMode === 'disabled') return 'enable-here';
|
|
127
|
+
return 'unfollow';
|
|
128
|
+
}
|
|
129
|
+
|
|
114
130
|
export function buildFollowMenuItems(input: {
|
|
115
131
|
following: boolean;
|
|
116
132
|
applicationMode: FollowApplicationMode;
|
|
@@ -210,22 +226,35 @@ export const FollowTargetButton = memo(function FollowTargetButton({
|
|
|
210
226
|
return status.applicationMode === 'disabled' ? text.disabled : text.active;
|
|
211
227
|
}, [isFollowing, status.globalState, status.applicationMode, text]);
|
|
212
228
|
|
|
229
|
+
// `onChange` fires ONLY when the server accepted the write.
|
|
230
|
+
//
|
|
231
|
+
// The mutations never reject — a refusal becomes error state so the button
|
|
232
|
+
// can render it — so an unconditional `onChange` after `await` reports
|
|
233
|
+
// INTENT rather than outcome. A caller mirroring the follow somewhere else
|
|
234
|
+
// (a local shelf, a ranking signal) would then mirror failures too, and the
|
|
235
|
+
// button beside it would show the server's truth while the mirror showed a
|
|
236
|
+
// press that did not happen. Same shape of trap as reading `effectiveState`
|
|
237
|
+
// as "does the user follow this".
|
|
213
238
|
const handlePrimary = useCallback(async () => {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
239
|
+
switch (resolveFollowPrimaryAction({ isFollowing, applicationMode: status.applicationMode })) {
|
|
240
|
+
case 'enable-here':
|
|
241
|
+
if (await enableHere()) onChange?.(true);
|
|
242
|
+
return;
|
|
243
|
+
case 'unfollow':
|
|
244
|
+
if (await unfollow()) onChange?.(false);
|
|
245
|
+
return;
|
|
246
|
+
case 'follow':
|
|
247
|
+
if (await follow()) onChange?.(true);
|
|
218
248
|
}
|
|
219
|
-
|
|
220
|
-
onChange?.(true);
|
|
221
|
-
}, [isFollowing, follow, unfollow, onChange]);
|
|
249
|
+
}, [isFollowing, status.applicationMode, follow, unfollow, enableHere, onChange]);
|
|
222
250
|
|
|
223
251
|
const handleTimed = useCallback(
|
|
224
252
|
async (seconds: number, durationLabel: string) => {
|
|
225
|
-
await follow({ expiresIn: seconds });
|
|
253
|
+
if (!(await follow({ expiresIn: seconds }))) return;
|
|
226
254
|
onChange?.(true);
|
|
227
255
|
// The confirmation is the point: a follow that ends on its own is a
|
|
228
256
|
// promise, and a user who does not see it made will not believe it.
|
|
257
|
+
// Which is also why it must not appear when the promise was not made.
|
|
229
258
|
toast.success(`Following for ${durationLabel.toLowerCase()}`);
|
|
230
259
|
},
|
|
231
260
|
[follow, onChange]
|
|
@@ -266,8 +295,9 @@ export const FollowTargetButton = memo(function FollowTargetButton({
|
|
|
266
295
|
void disableHere();
|
|
267
296
|
return;
|
|
268
297
|
case 'unfollow':
|
|
269
|
-
void unfollow()
|
|
270
|
-
|
|
298
|
+
void unfollow().then((ok) => {
|
|
299
|
+
if (ok) onChange?.(false);
|
|
300
|
+
});
|
|
271
301
|
}
|
|
272
302
|
},
|
|
273
303
|
[handleTimed, enableHere, disableHere, unfollow, onChange]
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* to reflect.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { buildFollowMenuItems } from '../FollowTargetButton';
|
|
15
|
+
import { buildFollowMenuItems, resolveFollowPrimaryAction } from '../FollowTargetButton';
|
|
16
16
|
import {
|
|
17
17
|
isFollowedGlobally,
|
|
18
18
|
UNKNOWN_FOLLOW_STATUS,
|
|
@@ -36,6 +36,26 @@ const base = {
|
|
|
36
36
|
|
|
37
37
|
const keys = (items: ReturnType<typeof buildFollowMenuItems>) => items.map((i) => i.key);
|
|
38
38
|
|
|
39
|
+
describe('resolveFollowPrimaryAction', () => {
|
|
40
|
+
it('follows when not following globally', () => {
|
|
41
|
+
expect(resolveFollowPrimaryAction({ isFollowing: false, applicationMode: 'inherit' })).toBe(
|
|
42
|
+
'follow'
|
|
43
|
+
);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('unfollows when following and active here', () => {
|
|
47
|
+
expect(resolveFollowPrimaryAction({ isFollowing: true, applicationMode: 'inherit' })).toBe(
|
|
48
|
+
'unfollow'
|
|
49
|
+
);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('re-enables here instead of unfollowing everywhere when switched off in this app', () => {
|
|
53
|
+
expect(resolveFollowPrimaryAction({ isFollowing: true, applicationMode: 'disabled' })).toBe(
|
|
54
|
+
'enable-here'
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
39
59
|
describe('buildFollowMenuItems', () => {
|
|
40
60
|
describe('before following', () => {
|
|
41
61
|
it('offers the timed follows and nothing else', () => {
|
|
@@ -108,9 +128,9 @@ describe('withApplicationMode', () => {
|
|
|
108
128
|
expect(isFollowedGlobally(next)).toBe(true);
|
|
109
129
|
});
|
|
110
130
|
|
|
111
|
-
it('restores
|
|
112
|
-
expect(withApplicationMode(withApplicationMode(active, 'disabled'), '
|
|
113
|
-
applicationMode: '
|
|
131
|
+
it('restores inheritance when enabled again', () => {
|
|
132
|
+
expect(withApplicationMode(withApplicationMode(active, 'disabled'), 'inherit')).toMatchObject({
|
|
133
|
+
applicationMode: 'inherit',
|
|
114
134
|
effectiveState: 'following',
|
|
115
135
|
});
|
|
116
136
|
});
|
|
@@ -36,11 +36,20 @@ export interface UseFollowTargetResult {
|
|
|
36
36
|
isUnknown: boolean;
|
|
37
37
|
isPending: boolean;
|
|
38
38
|
error: string | undefined;
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Every mutation resolves to whether the server ACCEPTED it.
|
|
41
|
+
*
|
|
42
|
+
* They never reject — a refusal becomes `error` in the store, so the button
|
|
43
|
+
* can render it — which means a caller that only awaits them cannot tell a
|
|
44
|
+
* write that happened from one that did not. Returning the outcome is what
|
|
45
|
+
* lets a caller mirror the change somewhere else without mirroring failures
|
|
46
|
+
* too.
|
|
47
|
+
*/
|
|
48
|
+
follow: (options?: { expiresIn?: number }) => Promise<boolean>;
|
|
49
|
+
unfollow: () => Promise<boolean>;
|
|
41
50
|
/** Stop acting on this follow HERE, without giving it up everywhere. */
|
|
42
|
-
disableHere: () => Promise<
|
|
43
|
-
enableHere: () => Promise<
|
|
51
|
+
disableHere: () => Promise<boolean>;
|
|
52
|
+
enableHere: () => Promise<boolean>;
|
|
44
53
|
refresh: () => Promise<void>;
|
|
45
54
|
}
|
|
46
55
|
|
|
@@ -103,8 +112,8 @@ export function useFollowTarget(
|
|
|
103
112
|
optimistic: FollowStatus,
|
|
104
113
|
run: () => Promise<FollowStatus | void>,
|
|
105
114
|
failureMessage: string
|
|
106
|
-
) => {
|
|
107
|
-
if (!targetId) return;
|
|
115
|
+
): Promise<boolean> => {
|
|
116
|
+
if (!targetId) return false;
|
|
108
117
|
const store = useFollowTargetStore.getState();
|
|
109
118
|
const previous = store.statuses[targetId];
|
|
110
119
|
store.setStatus(targetId, optimistic);
|
|
@@ -113,12 +122,14 @@ export function useFollowTarget(
|
|
|
113
122
|
try {
|
|
114
123
|
const settled = await run();
|
|
115
124
|
if (settled) useFollowTargetStore.getState().setStatus(targetId, settled);
|
|
125
|
+
return true;
|
|
116
126
|
} catch (e) {
|
|
117
127
|
const s = useFollowTargetStore.getState();
|
|
118
128
|
// Back to what was true, not to a guess. Clearing the entry instead
|
|
119
129
|
// would make the next render ask again and flash the wrong state.
|
|
120
130
|
if (previous) s.setStatus(targetId, previous);
|
|
121
131
|
s.setError(targetId, e instanceof Error ? e.message : failureMessage);
|
|
132
|
+
return false;
|
|
122
133
|
} finally {
|
|
123
134
|
useFollowTargetStore.getState().setPending(targetId, false);
|
|
124
135
|
}
|
|
@@ -130,8 +141,8 @@ export function useFollowTarget(
|
|
|
130
141
|
|
|
131
142
|
const follow = useCallback(
|
|
132
143
|
async (opts?: { expiresIn?: number }) => {
|
|
133
|
-
if (!targetId) return;
|
|
134
|
-
|
|
144
|
+
if (!targetId) return false;
|
|
145
|
+
return mutate(
|
|
135
146
|
{
|
|
136
147
|
...withApplicationMode({ ...current, globalState: 'active' }, current.applicationMode),
|
|
137
148
|
...(opts?.expiresIn
|
|
@@ -150,8 +161,8 @@ export function useFollowTarget(
|
|
|
150
161
|
|
|
151
162
|
const unfollow = useCallback(async () => {
|
|
152
163
|
const relationshipId = current.relationshipId;
|
|
153
|
-
if (!targetId || !relationshipId) return;
|
|
154
|
-
|
|
164
|
+
if (!targetId || !relationshipId) return false;
|
|
165
|
+
return mutate(
|
|
155
166
|
{ ...UNKNOWN_FOLLOW_STATUS },
|
|
156
167
|
async () => {
|
|
157
168
|
await oxyServices.unfollowTarget(relationshipId);
|
|
@@ -161,23 +172,29 @@ export function useFollowTarget(
|
|
|
161
172
|
);
|
|
162
173
|
}, [targetId, current.relationshipId, mutate, oxyServices]);
|
|
163
174
|
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
[targetId, current, mutate, oxyServices]
|
|
177
|
-
);
|
|
175
|
+
const disableHere = useCallback(async () => {
|
|
176
|
+
const relationshipId = current.relationshipId;
|
|
177
|
+
if (!targetId || !relationshipId) return false;
|
|
178
|
+
return mutate(
|
|
179
|
+
withApplicationMode(current, 'disabled'),
|
|
180
|
+
async () => {
|
|
181
|
+
await oxyServices.setFollowApplicationMode(relationshipId, 'disabled');
|
|
182
|
+
},
|
|
183
|
+
'Could not change this app’s setting for this follow'
|
|
184
|
+
);
|
|
185
|
+
}, [targetId, current, mutate, oxyServices]);
|
|
178
186
|
|
|
179
|
-
const
|
|
180
|
-
|
|
187
|
+
const enableHere = useCallback(async () => {
|
|
188
|
+
const relationshipId = current.relationshipId;
|
|
189
|
+
if (!targetId || !relationshipId) return false;
|
|
190
|
+
return mutate(
|
|
191
|
+
withApplicationMode(current, 'inherit'),
|
|
192
|
+
async () => {
|
|
193
|
+
await oxyServices.restoreFollowInheritance(relationshipId);
|
|
194
|
+
},
|
|
195
|
+
'Could not change this app’s setting for this follow'
|
|
196
|
+
);
|
|
197
|
+
}, [targetId, current, mutate, oxyServices]);
|
|
181
198
|
|
|
182
199
|
return {
|
|
183
200
|
status: current,
|