@oxyhq/services 22.5.0 → 22.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/ui/client.js +1 -1
- package/lib/commonjs/ui/components/FontLoader.js +18 -145
- package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
- package/lib/commonjs/ui/components/FontLoader.native.js +88 -0
- package/lib/commonjs/ui/components/FontLoader.native.js.map +1 -0
- package/lib/commonjs/ui/components/OxyProvider.js +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +16 -27
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/styles.js +1 -225
- package/lib/commonjs/ui/components/fileManagement/styles.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +5 -2
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/context/useOxyAccountGraph.js +7 -0
- package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +10 -4
- package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/userCache.js +33 -9
- package/lib/commonjs/ui/hooks/queries/userCache.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAvatarPicker.js +23 -8
- package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/commonjs/ui/hooks/useFileDownloadUrl.js +7 -21
- package/lib/commonjs/ui/hooks/useFileDownloadUrl.js.map +1 -1
- package/lib/commonjs/ui/hooks/useResolvedFileUrls.js +163 -0
- package/lib/commonjs/ui/hooks/useResolvedFileUrls.js.map +1 -0
- package/lib/commonjs/ui/index.js +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +51 -22
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +216 -203
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js +26 -9
- package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/photoGridLayout.js +44 -0
- package/lib/commonjs/ui/screens/fileManagement/photoGridLayout.js.map +1 -0
- package/lib/commonjs/ui/session/tokenTransport.js +21 -10
- package/lib/commonjs/ui/session/tokenTransport.js.map +1 -1
- package/lib/commonjs/ui/utils/fileManagement.js +0 -40
- package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/client.js +1 -1
- package/lib/module/ui/client.js.map +1 -1
- package/lib/module/ui/components/FontLoader.js +18 -146
- package/lib/module/ui/components/FontLoader.js.map +1 -1
- package/lib/module/ui/components/FontLoader.native.js +83 -0
- package/lib/module/ui/components/FontLoader.native.js.map +1 -0
- package/lib/module/ui/components/OxyProvider.js +1 -1
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js +16 -27
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/fileManagement/styles.js +0 -224
- package/lib/module/ui/components/fileManagement/styles.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +5 -2
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/context/useOxyAccountGraph.js +7 -0
- package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/module/ui/hooks/queries/useAccountQueries.js +10 -4
- package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
- package/lib/module/ui/hooks/queries/userCache.js +33 -9
- package/lib/module/ui/hooks/queries/userCache.js.map +1 -1
- package/lib/module/ui/hooks/useAvatarPicker.js +23 -8
- package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
- package/lib/module/ui/hooks/useFileDownloadUrl.js +7 -21
- package/lib/module/ui/hooks/useFileDownloadUrl.js.map +1 -1
- package/lib/module/ui/hooks/useResolvedFileUrls.js +157 -0
- package/lib/module/ui/hooks/useResolvedFileUrls.js.map +1 -0
- package/lib/module/ui/index.js +1 -1
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +52 -23
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +218 -205
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js +26 -9
- package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/photoGridLayout.js +39 -0
- package/lib/module/ui/screens/fileManagement/photoGridLayout.js.map +1 -0
- package/lib/module/ui/session/tokenTransport.js +21 -10
- package/lib/module/ui/session/tokenTransport.js.map +1 -1
- package/lib/module/ui/utils/fileManagement.js +0 -39
- package/lib/module/ui/utils/fileManagement.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/FontLoader.d.ts +14 -5
- package/lib/typescript/commonjs/ui/components/FontLoader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/FontLoader.native.d.ts +13 -0
- package/lib/typescript/commonjs/ui/components/FontLoader.native.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts +0 -218
- package/lib/typescript/commonjs/ui/components/fileManagement/styles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useAccountQueries.d.ts +9 -0
- package/lib/typescript/commonjs/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts +3 -0
- package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts +3 -2
- package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useResolvedFileUrls.d.ts +48 -0
- package/lib/typescript/commonjs/ui/hooks/useResolvedFileUrls.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/photoGridLayout.d.ts +37 -0
- package/lib/typescript/commonjs/ui/screens/fileManagement/photoGridLayout.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts +15 -8
- package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +4 -11
- package/lib/typescript/commonjs/ui/utils/fileManagement.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/client.d.ts +1 -1
- package/lib/typescript/module/ui/client.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FontLoader.d.ts +14 -5
- package/lib/typescript/module/ui/components/FontLoader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FontLoader.native.d.ts +13 -0
- package/lib/typescript/module/ui/components/FontLoader.native.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/styles.d.ts +0 -218
- package/lib/typescript/module/ui/components/fileManagement/styles.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useAccountQueries.d.ts +9 -0
- package/lib/typescript/module/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/userCache.d.ts +3 -0
- package/lib/typescript/module/ui/hooks/queries/userCache.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts +3 -2
- package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useResolvedFileUrls.d.ts +48 -0
- package/lib/typescript/module/ui/hooks/useResolvedFileUrls.d.ts.map +1 -0
- package/lib/typescript/module/ui/index.d.ts +1 -1
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/photoGridLayout.d.ts +37 -0
- package/lib/typescript/module/ui/screens/fileManagement/photoGridLayout.d.ts.map +1 -0
- package/lib/typescript/module/ui/session/tokenTransport.d.ts +15 -8
- package/lib/typescript/module/ui/session/tokenTransport.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/fileManagement.d.ts +4 -11
- package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
- package/package.json +5 -10
- package/src/ui/components/FontLoader.native.tsx +88 -0
- package/src/ui/components/FontLoader.tsx +16 -151
- package/src/ui/components/fileManagement/FileDetailsModal.tsx +17 -18
- package/src/ui/components/fileManagement/UploadPreview.tsx +1 -1
- package/src/ui/components/fileManagement/styles.ts +0 -225
- package/src/ui/context/hooks/useAuthOperations.ts +5 -2
- package/src/ui/context/useOxyAccountGraph.ts +5 -0
- package/src/ui/hooks/queries/__tests__/userCache.test.ts +29 -0
- package/src/ui/hooks/queries/useAccountQueries.ts +10 -4
- package/src/ui/hooks/queries/userCache.ts +31 -8
- package/src/ui/hooks/useAvatarPicker.ts +27 -7
- package/src/ui/hooks/useFileDownloadUrl.ts +7 -23
- package/src/ui/hooks/useResolvedFileUrls.ts +170 -0
- package/src/ui/screens/FileManagementScreen.tsx +55 -27
- package/src/ui/screens/__tests__/photoGridLayout.test.ts +57 -0
- package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +215 -213
- package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +27 -3
- package/src/ui/screens/fileManagement/photoGridLayout.ts +45 -0
- package/src/ui/session/__tests__/tokenTransport.test.ts +25 -10
- package/src/ui/session/tokenTransport.ts +21 -10
- package/src/ui/utils/fileManagement.ts +3 -46
- package/lib/typescript/types/expo-vector-icons.d.ts +0 -22
- package/src/types/expo-vector-icons.d.ts +0 -22
|
@@ -115,8 +115,11 @@ export const useAuthOperations = ({
|
|
|
115
115
|
logger?.('Failed to register sign-in into device session set', registrationError);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
//
|
|
119
|
-
|
|
118
|
+
// Hydrate the full user from the bearer (`GET /users/me`) — `verifyChallenge`
|
|
119
|
+
// has already planted the access token for this session, so the bearer IS
|
|
120
|
+
// the session identity. Avoids a second, session-id-keyed source of truth
|
|
121
|
+
// (`GET /session/user/:sessionId`) that can disagree with the bearer.
|
|
122
|
+
fullUser = await oxyServices.getCurrentUser();
|
|
120
123
|
|
|
121
124
|
// Fetch device sessions
|
|
122
125
|
let allDeviceSessions = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","DeviceManager","fetchSessionsWithFallback","handleAuthError","isInvalidSessionError","SignatureService","LOGIN_ERROR_CODE","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","clearPersistedAuthSafe","store","logger","clear","catch","clearError","useAuthOperations","oxyServices","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","sessionClient","syncFromClient","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","performSignIn","publicKey","deviceFingerprintObj","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","challengeResponse","requestChallenge","challenge","signature","timestamp","signChallenge","fullUser","sessionResponse","verifyChallenge","deviceSecret","deviceId","save","sessionId","userId","user","id","accessToken","expiresAt","persistError","registerAndActivate","registrationError","
|
|
1
|
+
{"version":3,"names":["useCallback","DeviceManager","fetchSessionsWithFallback","handleAuthError","isInvalidSessionError","SignatureService","LOGIN_ERROR_CODE","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","clearPersistedAuthSafe","store","logger","clear","catch","clearError","useAuthOperations","oxyServices","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","sessionClient","syncFromClient","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","performSignIn","publicKey","deviceFingerprintObj","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","challengeResponse","requestChallenge","challenge","signature","timestamp","signChallenge","fullUser","sessionResponse","verifyChallenge","deviceSecret","deviceId","save","sessionId","userId","user","id","accessToken","expiresAt","persistError","registerAndActivate","registrationError","getCurrentUser","allDeviceSessions","fallbackDeviceId","fallbackUserId","error","__DEV__","existingSession","find","session","toString","logoutSession","logoutError","filter","merge","signIn","isLoading","message","defaultMessage","code","setAuthError","msg","logout","targetSessionId","sessionToLogout","targetAccountId","getState","accounts","account","accountId","Error","signOut","remainingAccounts","length","isInvalid","status","undefined","logoutAll","all"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useAuthOperations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import { useCallback, useEffect, useState } from 'react';
|
|
|
4
4
|
import { logger as loggerUtil } from '@oxyhq/core';
|
|
5
5
|
import { isUnauthorizedStatus } from "./oxyContextHelpers.js";
|
|
6
6
|
import { resetSessionScopedStores } from "../stores/resetSessionScopedStores.js";
|
|
7
|
+
import { ASSET_DOWNLOAD_URLS_QUERY_KEY } from "../hooks/useResolvedFileUrls.js";
|
|
7
8
|
export function useOxyAccountGraph({
|
|
8
9
|
isAuthenticated,
|
|
9
10
|
tokenReady,
|
|
@@ -46,6 +47,12 @@ export function useOxyAccountGraph({
|
|
|
46
47
|
}, [isAuthenticated, initialized, tokenReady, refreshAccounts, accountDialogControllerRef]);
|
|
47
48
|
const runPostAccountSwitchSideEffects = useCallback(async () => {
|
|
48
49
|
resetSessionScopedStores();
|
|
50
|
+
// Scoped media tokens are per-viewer — drop any cached URLs immediately so
|
|
51
|
+
// `keepPreviousData`-style placeholders cannot flash the prior account's
|
|
52
|
+
// private thumbnails while the new bearer mint lands.
|
|
53
|
+
queryClient.removeQueries({
|
|
54
|
+
queryKey: [ASSET_DOWNLOAD_URLS_QUERY_KEY]
|
|
55
|
+
});
|
|
49
56
|
await refreshAccounts();
|
|
50
57
|
queryClient.invalidateQueries();
|
|
51
58
|
}, [refreshAccounts, queryClient]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","logger","loggerUtil","isUnauthorizedStatus","resetSessionScopedStores","useOxyAccountGraph","isAuthenticated","tokenReady","initialized","oxyServices","sessionClient","syncFromClient","commitSession","queryClient","accountDialogControllerRef","clearSessionStateRef","accounts","setAccounts","refreshAccounts","getAccessToken","list","listAccounts","err","current","__DEV__","debug","component","refresh","runPostAccountSwitchSideEffects","invalidateQueries","switchToAccount","accountId","deviceState","getState","some","account","switchAccount","result","user","sessionId","Error","accessToken","deviceSecret","deviceId","expiresAt","userId","id","activate","hubSync","createAccount","data"],"sourceRoot":"../../../../src","sources":["ui/context/useOxyAccountGraph.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAwB,OAAO;AAGxE,SAASC,MAAM,IAAIC,UAAU,QAAQ,aAAa;AAElD,SAASC,oBAAoB,QAAQ,wBAAqB;AAC1D,SAASC,wBAAwB,QAAQ,uCAAoC;
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useState","logger","loggerUtil","isUnauthorizedStatus","resetSessionScopedStores","ASSET_DOWNLOAD_URLS_QUERY_KEY","useOxyAccountGraph","isAuthenticated","tokenReady","initialized","oxyServices","sessionClient","syncFromClient","commitSession","queryClient","accountDialogControllerRef","clearSessionStateRef","accounts","setAccounts","refreshAccounts","getAccessToken","list","listAccounts","err","current","__DEV__","debug","component","refresh","runPostAccountSwitchSideEffects","removeQueries","queryKey","invalidateQueries","switchToAccount","accountId","deviceState","getState","some","account","switchAccount","result","user","sessionId","Error","accessToken","deviceSecret","deviceId","expiresAt","userId","id","activate","hubSync","createAccount","data"],"sourceRoot":"../../../../src","sources":["ui/context/useOxyAccountGraph.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -54,6 +54,15 @@ export const useUserProfiles = (sessionIds, options) => {
|
|
|
54
54
|
/**
|
|
55
55
|
* Get current authenticated user.
|
|
56
56
|
*
|
|
57
|
+
* Hydrates from `GET /users/me` (the bearer identifies the session) rather than
|
|
58
|
+
* `GET /session/user/:activeSessionId`. Post zero-cookie cutover the bearer is
|
|
59
|
+
* the single source of session truth, so keying the CURRENT user off a session
|
|
60
|
+
* id in the URL was a second, independently-updated source that could disagree
|
|
61
|
+
* with the bearer during an account switch — the request fired under the
|
|
62
|
+
* previous account's token against the new account's session id and 404'd. The
|
|
63
|
+
* query KEY stays scoped to the active account so the cache re-scopes (and
|
|
64
|
+
* refetches) on a switch; only the URL stopped carrying a session id.
|
|
65
|
+
*
|
|
57
66
|
* The store-mirror effect must NOT overwrite the in-memory user while a
|
|
58
67
|
* write mutation is in flight — otherwise a stale background refetch
|
|
59
68
|
* landing between optimistic update and server-confirmed update would
|
|
@@ -74,10 +83,7 @@ export const useCurrentUser = options => {
|
|
|
74
83
|
const query = useQuery({
|
|
75
84
|
queryKey: queryKeys.accounts.current(activeSessionId),
|
|
76
85
|
queryFn: async () => {
|
|
77
|
-
|
|
78
|
-
throw new Error('No active session');
|
|
79
|
-
}
|
|
80
|
-
return await oxyServices.getUserBySession(activeSessionId);
|
|
86
|
+
return await oxyServices.getCurrentUser();
|
|
81
87
|
},
|
|
82
88
|
enabled: options?.enabled !== false && isAuthenticated && !!activeSessionId,
|
|
83
89
|
staleTime: 1 * 60 * 1000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useQuery","useQueries","useQueryClient","authenticatedApiCall","queryKeys","mutationKeys","useOxy","useAuthStore","useUserProfile","sessionId","options","oxyServices","queryKey","users","profile","queryFn","Error","getUserBySession","enabled","staleTime","gcTime","useUserProfiles","sessionIds","queries","map","results","getUsersBySessions","user","useCurrentUser","activeSessionId","isAuthenticated","queryClient","query","accounts","current","data","userWriteMutationsInFlight","isMutating","mutationKey","account","updateProfile","uploadAvatar","updateSettings","updatePrivacySettings","storedUser","getState","incomingUpdatedAt","parseUpdatedAt","updatedAt","storedUpdatedAt","setUser","value","Number","isFinite","Date","t","getTime","parse","useUserById","userId","detail","getUserById","useUserByUsername","username","viewerId","id","byUsername","normalizedUsername","trim","toLowerCase","getProfileByUsername","useUsersBySessions","list","length","useConnectedApps","connectedApps","listConnectedApps","usePrivacySettings","targetUserId","privacy","settings","getPrivacySettings"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/useAccountQueries.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,QAAQ,EAAEC,UAAU,EAAEC,cAAc,QAAQ,uBAAuB;AAC5E,SAASC,oBAAoB,QAAQ,aAAa;AAElD,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,YAAY,QAAQ,8BAA2B;AACxD,SAASC,MAAM,QAAQ,6BAA0B;AACjD,SAASC,YAAY,QAAQ,2BAAwB;;AAErD;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAACC,SAAwB,EAAEC,OAA+B,KAAK;EAC3F,MAAM;IAAEC;EAAY,CAAC,GAAGL,MAAM,CAAC,CAAC;EAEhC,OAAON,QAAQ,CAAC;IACdY,QAAQ,EAAER,SAAS,CAACS,KAAK,CAACC,OAAO,CAACL,SAAS,IAAI,EAAE,CAAC;IAClDM,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,IAAI,CAACN,SAAS,EAAE;QACd,MAAM,IAAIO,KAAK,CAAC,wBAAwB,CAAC;MAC3C;MACA,OAAO,MAAML,WAAW,CAACM,gBAAgB,CAACR,SAAS,CAAC;IACtD,CAAC;IACDS,OAAO,EAAGR,OAAO,EAAEQ,OAAO,KAAK,KAAK,IAAK,CAAC,CAACT,SAAS;IACpDU,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IAAE;IAC1BC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAE;EAC1B,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAGA,CAACC,UAAoB,EAAEZ,OAA+B,KAAK;EACxF,MAAM;IAAEC;EAAY,CAAC,GAAGL,MAAM,CAAC,CAAC;EAEhC,OAAOL,UAAU,CAAC;IAChBsB,OAAO,EAAED,UAAU,CAACE,GAAG,CAAEf,SAAS,KAAM;MACtCG,QAAQ,EAAER,SAAS,CAACS,KAAK,CAACC,OAAO,CAACL,SAAS,CAAC;MAC5CM,OAAO,EAAE,MAAAA,CAAA,KAAY;QACnB,MAAMU,OAAO,GAAG,MAAMd,WAAW,CAACe,kBAAkB,CAAC,CAACjB,SAAS,CAAC,CAAC;QACjE,OAAOgB,OAAO,CAAC,CAAC,CAAC,EAAEE,IAAI,IAAI,IAAI;MACjC,CAAC;MACDT,OAAO,EAAGR,OAAO,EAAEQ,OAAO,KAAK,KAAK,IAAK,CAAC,CAACT,SAAS;MACpDU,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;MACxBC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMQ,cAAc,GAAIlB,OAA+B,IAAK;EACjE,MAAM;IAAEC,WAAW;IAAEkB,eAAe;IAAEC;EAAgB,CAAC,GAAGxB,MAAM,CAAC,CAAC;EAClE,MAAMyB,WAAW,GAAG7B,cAAc,CAAC,CAAC;EAEpC,MAAM8B,KAAK,GAAGhC,QAAQ,CAAC;IACrBY,QAAQ,EAAER,SAAS,CAAC6B,QAAQ,CAACC,OAAO,CAACL,eAAe,CAAC;IACrDd,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,
|
|
1
|
+
{"version":3,"names":["useEffect","useQuery","useQueries","useQueryClient","authenticatedApiCall","queryKeys","mutationKeys","useOxy","useAuthStore","useUserProfile","sessionId","options","oxyServices","queryKey","users","profile","queryFn","Error","getUserBySession","enabled","staleTime","gcTime","useUserProfiles","sessionIds","queries","map","results","getUsersBySessions","user","useCurrentUser","activeSessionId","isAuthenticated","queryClient","query","accounts","current","getCurrentUser","data","userWriteMutationsInFlight","isMutating","mutationKey","account","updateProfile","uploadAvatar","updateSettings","updatePrivacySettings","storedUser","getState","incomingUpdatedAt","parseUpdatedAt","updatedAt","storedUpdatedAt","setUser","value","Number","isFinite","Date","t","getTime","parse","useUserById","userId","detail","getUserById","useUserByUsername","username","viewerId","id","byUsername","normalizedUsername","trim","toLowerCase","getProfileByUsername","useUsersBySessions","list","length","useConnectedApps","connectedApps","listConnectedApps","usePrivacySettings","targetUserId","privacy","settings","getPrivacySettings"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/useAccountQueries.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
* marked stale — it is already managed).
|
|
32
32
|
* - Nested objects (`name`, `_count`, `relationship`) merge field-by-field, so
|
|
33
33
|
* a partial `name`/`_count`/`relationship` never replaces a fuller one.
|
|
34
|
+
* - `relationship` is written ONLY under the viewer-scoped by-username key —
|
|
35
|
+
* the viewer-independent by-id key never stores it (prevents one viewer's
|
|
36
|
+
* follow state from leaking into every other viewer's identity cache).
|
|
34
37
|
* - Anti-degradation: a good `username` / `name.displayName` / `avatar` is
|
|
35
38
|
* never overwritten by a degraded/empty one (empty username, the
|
|
36
39
|
* `'Unknown user'` ghost-author sentinel, `null` avatar).
|
|
@@ -163,8 +166,13 @@ function mergeRelationship(existing, incoming) {
|
|
|
163
166
|
/**
|
|
164
167
|
* Merge a (normalized) incoming user over an existing cache entry: keep every
|
|
165
168
|
* existing field, override only with the meaningful fields of `incoming`.
|
|
169
|
+
*
|
|
170
|
+
* When `includeRelationship` is false (the viewer-independent by-id key), the
|
|
171
|
+
* viewer-relative `relationship` field is never read, written, or preserved —
|
|
172
|
+
* only the by-username key carries it (`useUserByUsername`).
|
|
166
173
|
*/
|
|
167
|
-
function mergeUsers(existing, incoming) {
|
|
174
|
+
function mergeUsers(existing, incoming, options) {
|
|
175
|
+
const includeRelationship = options?.includeRelationship ?? true;
|
|
168
176
|
const merged = {
|
|
169
177
|
...existing
|
|
170
178
|
};
|
|
@@ -180,25 +188,35 @@ function mergeUsers(existing, incoming) {
|
|
|
180
188
|
if (name !== undefined) merged.name = name;
|
|
181
189
|
const count = mergeCount(existing._count, incoming._count);
|
|
182
190
|
if (count !== undefined) merged._count = count;
|
|
183
|
-
|
|
184
|
-
|
|
191
|
+
if (includeRelationship) {
|
|
192
|
+
const relationship = mergeRelationship(existing.relationship, incoming.relationship);
|
|
193
|
+
if (relationship !== undefined) merged.relationship = relationship;
|
|
194
|
+
} else {
|
|
195
|
+
delete merged.relationship;
|
|
196
|
+
}
|
|
185
197
|
return merged;
|
|
186
198
|
}
|
|
187
199
|
|
|
188
200
|
/** Merge-upsert a normalized user into one cache key (see module docs for semantics). */
|
|
189
|
-
function upsertOneKey(queryClient, key, incoming) {
|
|
201
|
+
function upsertOneKey(queryClient, key, incoming, options) {
|
|
202
|
+
const mergeOpts = {
|
|
203
|
+
includeRelationship: options.includeRelationship
|
|
204
|
+
};
|
|
190
205
|
const existing = queryClient.getQueryData(key);
|
|
191
206
|
if (existing === undefined) {
|
|
192
207
|
// Cold slot: seed the full incoming object, STALE, so react-query refetches
|
|
193
208
|
// the full authoritative profile (relationship, counts, createdAt, …).
|
|
194
|
-
|
|
209
|
+
const seeded = mergeUsers({
|
|
210
|
+
id: incoming.id
|
|
211
|
+
}, incoming, mergeOpts);
|
|
212
|
+
queryClient.setQueryData(key, seeded, {
|
|
195
213
|
updatedAt: 0
|
|
196
214
|
});
|
|
197
215
|
return;
|
|
198
216
|
}
|
|
199
217
|
// Existing entry: merge and leave its freshness lifecycle untouched. The
|
|
200
218
|
// existing entry is keyed by `incoming.id`, so use it as the fallback id.
|
|
201
|
-
const merged = mergeUsers(toCachedUser(existing, incoming.id), incoming);
|
|
219
|
+
const merged = mergeUsers(toCachedUser(existing, incoming.id), incoming, mergeOpts);
|
|
202
220
|
const dataUpdatedAt = queryClient.getQueryState(key)?.dataUpdatedAt ?? 0;
|
|
203
221
|
queryClient.setQueryData(key, merged, {
|
|
204
222
|
updatedAt: dataUpdatedAt
|
|
@@ -230,8 +248,12 @@ export function upsertCachedUser(queryClient, user, viewerId) {
|
|
|
230
248
|
const incoming = normalizeIncoming(user);
|
|
231
249
|
if (!incoming) return;
|
|
232
250
|
|
|
233
|
-
// By-id identity entry (read by `useUserById`). Not viewer-scoped
|
|
234
|
-
|
|
251
|
+
// By-id identity entry (read by `useUserById`). Not viewer-scoped — never store
|
|
252
|
+
// the viewer-relative `relationship` here or one viewer's follow state leaks
|
|
253
|
+
// into every other viewer's by-id cache entry.
|
|
254
|
+
upsertOneKey(queryClient, queryKeys.users.detail(incoming.id), incoming, {
|
|
255
|
+
includeRelationship: false
|
|
256
|
+
});
|
|
235
257
|
const username = incoming.username;
|
|
236
258
|
if (typeof username === 'string' && username.trim() !== '') {
|
|
237
259
|
// By-username entry (read by `useUserByUsername`). Viewer-scoped because the
|
|
@@ -239,7 +261,9 @@ export function upsertCachedUser(queryClient, user, viewerId) {
|
|
|
239
261
|
// the key through the SAME helper the hook uses so username normalization
|
|
240
262
|
// (`trim().toLowerCase()`) matches byte-for-byte.
|
|
241
263
|
const key = queryKeys.users.byUsername(username, resolveViewerId(viewerId));
|
|
242
|
-
upsertOneKey(queryClient, key, incoming
|
|
264
|
+
upsertOneKey(queryClient, key, incoming, {
|
|
265
|
+
includeRelationship: true
|
|
266
|
+
});
|
|
243
267
|
}
|
|
244
268
|
}
|
|
245
269
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["queryKeys","useAuthStore","DEGRADED_DISPLAY_NAME","isMeaningful","value","undefined","trim","isMeaningfulDisplayName","isPlainObject","Array","isArray","normalizeName","name","trimmed","displayName","toCachedUser","user","fallbackId","rawName","rest","id","String","_id","normalized","normalizeIncoming","cached","mergeName","existing","incoming","merged","key","Object","entries","mergeCount","followers","following","mergeRelationship","isFollowing","followsYou","mergeUsers","count","_count","relationship","upsertOneKey","queryClient","getQueryData","setQueryData","updatedAt","dataUpdatedAt","getQueryState","resolveViewerId","viewerId","getState","upsertCachedUser","users","detail","username","byUsername","upsertCachedUsers","length","resolvedViewerId"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/userCache.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["queryKeys","useAuthStore","DEGRADED_DISPLAY_NAME","isMeaningful","value","undefined","trim","isMeaningfulDisplayName","isPlainObject","Array","isArray","normalizeName","name","trimmed","displayName","toCachedUser","user","fallbackId","rawName","rest","id","String","_id","normalized","normalizeIncoming","cached","mergeName","existing","incoming","merged","key","Object","entries","mergeCount","followers","following","mergeRelationship","isFollowing","followsYou","mergeUsers","options","includeRelationship","count","_count","relationship","upsertOneKey","queryClient","mergeOpts","getQueryData","seeded","setQueryData","updatedAt","dataUpdatedAt","getQueryState","resolveViewerId","viewerId","getState","upsertCachedUser","users","detail","username","byUsername","upsertCachedUsers","length","resolvedViewerId"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/userCache.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,SAAS,QAAQ,gBAAa;AACvC,SAASC,YAAY,QAAQ,2BAAwB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA;AACA,MAAMC,qBAAqB,GAAG,cAAc;;AAE5C;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACC,KAAc,EAAW;EAC7C,IAAIA,KAAK,KAAKC,SAAS,IAAID,KAAK,KAAK,IAAI,EAAE,OAAO,KAAK;EACvD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAOA,KAAK,CAACE,IAAI,CAAC,CAAC,KAAK,EAAE;EACzD,OAAO,IAAI;AACb;;AAEA;AACA,SAASC,uBAAuBA,CAACH,KAAc,EAAmB;EAChE,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACE,IAAI,CAAC,CAAC,KAAK,EAAE,IAAIF,KAAK,KAAKF,qBAAqB;AAC5F;AAEA,SAASM,aAAaA,CAACJ,KAAc,EAAoC;EACvE,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,CAACK,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC;AAC7E;;AAEA;AACA,SAASO,aAAaA,CAACC,IAA2B,EAAgC;EAChF,IAAIA,IAAI,KAAKP,SAAS,IAAIO,IAAI,KAAK,IAAI,EAAE,OAAOP,SAAS;EACzD,IAAI,OAAOO,IAAI,KAAK,QAAQ,EAAE;IAC5B,MAAMC,OAAO,GAAGD,IAAI,CAACN,IAAI,CAAC,CAAC;IAC3B,OAAOO,OAAO,GAAG;MAAEC,WAAW,EAAED;IAAQ,CAAC,GAAGR,SAAS;EACvD;EACA,OAAOO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,YAAYA,CAACC,IAAmB,EAAEC,UAAkB,EAAc;EACzE,MAAM;IAAEL,IAAI,EAAEM,OAAO;IAAE,GAAGC;EAAK,CAAC,GAAGH,IAAI;EACvC,MAAMI,EAAE,GAAGC,MAAM,CAACL,IAAI,CAACI,EAAE,IAAIJ,IAAI,CAACM,GAAG,IAAIL,UAAU,CAAC;EACpD,MAAML,IAAI,GAAGD,aAAa,CAACO,OAAO,CAAC;EACnC,MAAMK,UAAsB,GAAG;IAAE,GAAGJ,IAAI;IAAEC;EAAG,CAAC;EAC9C,IAAIR,IAAI,KAAKP,SAAS,EAAEkB,UAAU,CAACX,IAAI,GAAGA,IAAI;EAC9C,OAAOW,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACR,IAAmB,EAAqB;EACjE,MAAMS,MAAM,GAAGV,YAAY,CAACC,IAAI,EAAE,EAAE,CAAC;EACrC,OAAOS,MAAM,CAACL,EAAE,GAAGK,MAAM,GAAG,IAAI;AAClC;;AAEA;AACA,SAASC,SAASA,CAChBC,QAAsC,EACtCC,QAAsC,EACR;EAC9B,IAAIA,QAAQ,KAAKvB,SAAS,EAAE,OAAOsB,QAAQ;EAC3C,IAAIA,QAAQ,KAAKtB,SAAS,EAAE,OAAOuB,QAAQ;EAC3C,MAAMC,MAAwB,GAAG;IAAE,GAAGF;EAAS,CAAC;EAChD,KAAK,MAAM,CAACG,GAAG,EAAE1B,KAAK,CAAC,IAAI2B,MAAM,CAACC,OAAO,CAACJ,QAAQ,CAAC,EAAE;IACnD,IAAIE,GAAG,KAAK,aAAa,EAAE;IAC3B,IAAI3B,YAAY,CAACC,KAAK,CAAC,EAAEyB,MAAM,CAACC,GAAG,CAAC,GAAG1B,KAAK;EAC9C;EACA;EACA,IAAIG,uBAAuB,CAACqB,QAAQ,CAACd,WAAW,CAAC,EAAE;IACjDe,MAAM,CAACf,WAAW,GAAGc,QAAQ,CAACd,WAAW;EAC3C;EACA,OAAOe,MAAM;AACf;;AAEA;AACA,SAASI,UAAUA,CACjBN,QAAiC,EACjCC,QAAiC,EACR;EACzB,IAAI,CAACpB,aAAa,CAACoB,QAAQ,CAAC,EAAE,OAAOD,QAAQ;EAC7C,MAAME,MAAkD,GAAG;IAAE,IAAIrB,aAAa,CAACmB,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAAC,CAAC;EAAE,CAAC;EAC3G,IAAI,OAAOC,QAAQ,CAACM,SAAS,KAAK,QAAQ,EAAEL,MAAM,CAACK,SAAS,GAAGN,QAAQ,CAACM,SAAS;EACjF,IAAI,OAAON,QAAQ,CAACO,SAAS,KAAK,QAAQ,EAAEN,MAAM,CAACM,SAAS,GAAGP,QAAQ,CAACO,SAAS;EACjF,OAAON,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA,SAASO,iBAAiBA,CACxBT,QAAuC,EACvCC,QAAuC,EACR;EAC/B,IAAI,CAACpB,aAAa,CAACoB,QAAQ,CAAC,EAAE,OAAOD,QAAQ;EAC7C,MAAME,MAAuD,GAAG;IAC9D,IAAIrB,aAAa,CAACmB,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAAC,CAAC;EAC7C,CAAC;EACD,IAAI,OAAOC,QAAQ,CAACS,WAAW,KAAK,SAAS,EAAER,MAAM,CAACQ,WAAW,GAAGT,QAAQ,CAACS,WAAW;EACxF,IAAI,OAAOT,QAAQ,CAACU,UAAU,KAAK,SAAS,EAAET,MAAM,CAACS,UAAU,GAAGV,QAAQ,CAACU,UAAU;EACrF,OAAOT,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASU,UAAUA,CACjBZ,QAAoB,EACpBC,QAAoB,EACpBY,OAA2C,EAC/B;EACZ,MAAMC,mBAAmB,GAAGD,OAAO,EAAEC,mBAAmB,IAAI,IAAI;EAChE,MAAMZ,MAAkB,GAAG;IAAE,GAAGF;EAAS,CAAC;EAC1C,KAAK,MAAM,CAACG,GAAG,EAAE1B,KAAK,CAAC,IAAI2B,MAAM,CAACC,OAAO,CAACJ,QAAQ,CAAC,EAAE;IACnD,IAAIE,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,cAAc,EAAE;IAClE,IAAIA,GAAG,KAAK,IAAI,EAAE;MAChBD,MAAM,CAACT,EAAE,GAAGQ,QAAQ,CAACR,EAAE;MACvB;IACF;IACA,IAAIjB,YAAY,CAACC,KAAK,CAAC,EAAEyB,MAAM,CAACC,GAAG,CAAC,GAAG1B,KAAK;EAC9C;EACA,MAAMQ,IAAI,GAAGc,SAAS,CAACC,QAAQ,CAACf,IAAI,EAAEgB,QAAQ,CAAChB,IAAI,CAAC;EACpD,IAAIA,IAAI,KAAKP,SAAS,EAAEwB,MAAM,CAACjB,IAAI,GAAGA,IAAI;EAC1C,MAAM8B,KAAK,GAAGT,UAAU,CAACN,QAAQ,CAACgB,MAAM,EAAEf,QAAQ,CAACe,MAAM,CAAC;EAC1D,IAAID,KAAK,KAAKrC,SAAS,EAAEwB,MAAM,CAACc,MAAM,GAAGD,KAAK;EAC9C,IAAID,mBAAmB,EAAE;IACvB,MAAMG,YAAY,GAAGR,iBAAiB,CAACT,QAAQ,CAACiB,YAAY,EAAEhB,QAAQ,CAACgB,YAAY,CAAC;IACpF,IAAIA,YAAY,KAAKvC,SAAS,EAAEwB,MAAM,CAACe,YAAY,GAAGA,YAAY;EACpE,CAAC,MAAM;IACL,OAAOf,MAAM,CAACe,YAAY;EAC5B;EACA,OAAOf,MAAM;AACf;;AAEA;AACA,SAASgB,YAAYA,CACnBC,WAAwB,EACxBhB,GAAuB,EACvBF,QAAoB,EACpBY,OAAyC,EACnC;EACN,MAAMO,SAAS,GAAG;IAAEN,mBAAmB,EAAED,OAAO,CAACC;EAAoB,CAAC;EACtE,MAAMd,QAAQ,GAAGmB,WAAW,CAACE,YAAY,CAAgBlB,GAAG,CAAC;EAC7D,IAAIH,QAAQ,KAAKtB,SAAS,EAAE;IAC1B;IACA;IACA,MAAM4C,MAAM,GAAGV,UAAU,CAAC;MAAEnB,EAAE,EAAEQ,QAAQ,CAACR;IAAG,CAAC,EAAEQ,QAAQ,EAAEmB,SAAS,CAAC;IACnED,WAAW,CAACI,YAAY,CAAapB,GAAG,EAAEmB,MAAM,EAAE;MAAEE,SAAS,EAAE;IAAE,CAAC,CAAC;IACnE;EACF;EACA;EACA;EACA,MAAMtB,MAAM,GAAGU,UAAU,CAACxB,YAAY,CAACY,QAAQ,EAAEC,QAAQ,CAACR,EAAE,CAAC,EAAEQ,QAAQ,EAAEmB,SAAS,CAAC;EACnF,MAAMK,aAAa,GAAGN,WAAW,CAACO,aAAa,CAACvB,GAAG,CAAC,EAAEsB,aAAa,IAAI,CAAC;EACxEN,WAAW,CAACI,YAAY,CAAapB,GAAG,EAAED,MAAM,EAAE;IAAEsB,SAAS,EAAEC;EAAc,CAAC,CAAC;AACjF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,eAAeA,CAACC,QAAiB,EAAU;EAClD,OAAOA,QAAQ,IAAItD,YAAY,CAACuD,QAAQ,CAAC,CAAC,CAACxC,IAAI,EAAEI,EAAE,IAAI,EAAE;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASqC,gBAAgBA,CAC9BX,WAAwB,EACxB9B,IAAmB,EACnBuC,QAAiB,EACX;EACN,MAAM3B,QAAQ,GAAGJ,iBAAiB,CAACR,IAAI,CAAC;EACxC,IAAI,CAACY,QAAQ,EAAE;;EAEf;EACA;EACA;EACAiB,YAAY,CAACC,WAAW,EAAE9C,SAAS,CAAC0D,KAAK,CAACC,MAAM,CAAC/B,QAAQ,CAACR,EAAE,CAAC,EAAEQ,QAAQ,EAAE;IACvEa,mBAAmB,EAAE;EACvB,CAAC,CAAC;EAEF,MAAMmB,QAAQ,GAAGhC,QAAQ,CAACgC,QAAQ;EAClC,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,CAACtD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;IAC1D;IACA;IACA;IACA;IACA,MAAMwB,GAAG,GAAG9B,SAAS,CAAC0D,KAAK,CAACG,UAAU,CAACD,QAAQ,EAAEN,eAAe,CAACC,QAAQ,CAAC,CAAC;IAC3EV,YAAY,CAACC,WAAW,EAAEhB,GAAG,EAAEF,QAAQ,EAAE;MAAEa,mBAAmB,EAAE;IAAK,CAAC,CAAC;EACzE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASqB,iBAAiBA,CAC/BhB,WAAwB,EACxBY,KAAkD,EAClDH,QAAiB,EACX;EACN,IAAI,CAAC9C,KAAK,CAACC,OAAO,CAACgD,KAAK,CAAC,IAAIA,KAAK,CAACK,MAAM,KAAK,CAAC,EAAE;EACjD,MAAMC,gBAAgB,GAAGV,eAAe,CAACC,QAAQ,CAAC;EAClD,KAAK,MAAMvC,IAAI,IAAI0C,KAAK,EAAE;IACxB,IAAI1C,IAAI,EAAEyC,gBAAgB,CAACX,WAAW,EAAE9B,IAAI,EAAEgD,gBAAgB,CAAC;EACjE;AACF","ignoreList":[]}
|
|
@@ -65,19 +65,34 @@ export function useAvatarPicker({
|
|
|
65
65
|
}, [activeSessionId, currentLanguage, oxyServices, queryClient]);
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* After the user picks a file in the FileManagement sheet,
|
|
69
|
-
*
|
|
68
|
+
* After the user picks a file in the FileManagement sheet, resolve a working
|
|
69
|
+
* source URL and route to the crop screen.
|
|
70
|
+
*
|
|
71
|
+
* The picked file is usually PRIVATE, so the synchronous
|
|
72
|
+
* `getFileDownloadUrl` (public CDN origin) would 404 and the crop screen's
|
|
73
|
+
* `Image.getSize` would fail silently. We resolve the authenticated URL via
|
|
74
|
+
* `assetGetUrl` (which throws on failure — unlike `getFileDownloadUrlAsync`,
|
|
75
|
+
* which swallows errors and falls back to the broken public URL) so a
|
|
76
|
+
* failure surfaces a real user-facing error instead of a blank crop canvas.
|
|
77
|
+
* No variant is requested — cropping needs the original.
|
|
70
78
|
*/
|
|
71
|
-
const handleFilePicked = useCallback(file => {
|
|
79
|
+
const handleFilePicked = useCallback(async file => {
|
|
72
80
|
if (!file.contentType?.startsWith('image/')) {
|
|
73
81
|
toast.error(translate(currentLanguage ?? undefined, 'editProfile.toasts.selectImage') || 'Please select an image file');
|
|
74
82
|
return;
|
|
75
83
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
84
|
+
let sourceUri;
|
|
85
|
+
try {
|
|
86
|
+
const resolved = await oxyServices.assetGetUrl(file.id);
|
|
87
|
+
if (!resolved?.url) {
|
|
88
|
+
throw new Error('No download URL returned for the selected image');
|
|
89
|
+
}
|
|
90
|
+
sourceUri = resolved.url;
|
|
91
|
+
} catch (e) {
|
|
92
|
+
const message = e instanceof Error ? e.message : undefined;
|
|
93
|
+
toast.error(message || translate(currentLanguage ?? undefined, 'editProfile.toasts.cropMeasureFailed') || 'Could not load the selected image');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
81
96
|
showBottomSheet({
|
|
82
97
|
screen: 'AvatarCrop',
|
|
83
98
|
props: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","translate","updateAvatarVisibility","toast","updateProfileWithAvatar","extractUploadedFileId","result","undefined","id","file","first","files","useAvatarPicker","oxyServices","currentLanguage","activeSessionId","queryClient","showBottomSheet","finalizeCroppedAvatar","cropped","uploadResult","assetUpload","uri","type","mime","name","Date","now","newFileId","Error","avatar","success","e","message","error","handleFilePicked","contentType","startsWith","sourceUri","
|
|
1
|
+
{"version":3,"names":["useCallback","translate","updateAvatarVisibility","toast","updateProfileWithAvatar","extractUploadedFileId","result","undefined","id","file","first","files","useAvatarPicker","oxyServices","currentLanguage","activeSessionId","queryClient","showBottomSheet","finalizeCroppedAvatar","cropped","uploadResult","assetUpload","uri","type","mime","name","Date","now","newFileId","Error","avatar","success","e","message","error","handleFilePicked","contentType","startsWith","sourceUri","resolved","assetGetUrl","url","screen","props","imageUri","onConfirm","openAvatarPicker","selectMode","multiSelect","disabledMimeTypes","afterSelect","onSelect"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAvatarPicker.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,8 +4,9 @@ import { useEffect, useState } from 'react';
|
|
|
4
4
|
/**
|
|
5
5
|
* Hook to resolve a file's download URL asynchronously.
|
|
6
6
|
*
|
|
7
|
-
* Uses `getFileDownloadUrlAsync
|
|
8
|
-
*
|
|
7
|
+
* Uses `getFileDownloadUrlAsync`, which returns a scoped media-token stream URL
|
|
8
|
+
* for private assets. There is no sync CDN fallback — the synchronous
|
|
9
|
+
* `getFileDownloadUrl` is public-CDN-only and 404s for private uploads.
|
|
9
10
|
*/
|
|
10
11
|
export const useFileDownloadUrl = (oxyServices, fileId, options) => {
|
|
11
12
|
const [url, setUrl] = useState(null);
|
|
@@ -33,31 +34,16 @@ export const useFileDownloadUrl = (oxyServices, fileId, options) => {
|
|
|
33
34
|
setLoading(true);
|
|
34
35
|
setError(null);
|
|
35
36
|
try {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
resolvedUrl = await instance.getFileDownloadUrlAsync(targetFileId, variant, expiresIn);
|
|
39
|
-
}
|
|
40
|
-
if (!resolvedUrl && typeof instance.getFileDownloadUrl === 'function') {
|
|
41
|
-
resolvedUrl = instance.getFileDownloadUrl(targetFileId, variant, expiresIn);
|
|
37
|
+
if (typeof instance.getFileDownloadUrlAsync !== 'function') {
|
|
38
|
+
throw new Error('getFileDownloadUrlAsync is not available on this OxyServices instance');
|
|
42
39
|
}
|
|
40
|
+
const resolvedUrl = await instance.getFileDownloadUrlAsync(targetFileId, variant, expiresIn);
|
|
43
41
|
if (!cancelled) {
|
|
44
42
|
setUrl(resolvedUrl || null);
|
|
45
43
|
}
|
|
46
44
|
} catch (err) {
|
|
47
|
-
// Fallback to sync URL on error where possible
|
|
48
|
-
try {
|
|
49
|
-
if (typeof instance.getFileDownloadUrl === 'function') {
|
|
50
|
-
const fallbackUrl = instance.getFileDownloadUrl(targetFileId, variant, expiresIn);
|
|
51
|
-
if (!cancelled) {
|
|
52
|
-
setUrl(fallbackUrl || null);
|
|
53
|
-
setError(err instanceof Error ? err : new Error(String(err)));
|
|
54
|
-
}
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
} catch {
|
|
58
|
-
// Secondary failure: surface the original error below.
|
|
59
|
-
}
|
|
60
45
|
if (!cancelled) {
|
|
46
|
+
setUrl(null);
|
|
61
47
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
62
48
|
}
|
|
63
49
|
} finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useState","useFileDownloadUrl","oxyServices","fileId","options","url","setUrl","loading","setLoading","error","setError","variant","expiresIn","Error","cancelled","instance","targetFileId","load","
|
|
1
|
+
{"version":3,"names":["useEffect","useState","useFileDownloadUrl","oxyServices","fileId","options","url","setUrl","loading","setLoading","error","setError","variant","expiresIn","Error","cancelled","instance","targetFileId","load","getFileDownloadUrlAsync","resolvedUrl","err","String"],"sourceRoot":"../../../../src","sources":["ui/hooks/useFileDownloadUrl.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAc3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,WAA2C,EAC3CC,MAAiC,EACjCC,OAAmC,KACN;EAC7B,MAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAGN,QAAQ,CAAgB,IAAI,CAAC;EACnD,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGR,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAACS,KAAK,EAAEC,QAAQ,CAAC,GAAGV,QAAQ,CAAe,IAAI,CAAC;EAEtD,MAAMW,OAAO,GAAGP,OAAO,EAAEO,OAAO;EAChC,MAAMC,SAAS,GAAGR,OAAO,EAAEQ,SAAS;EAEpCb,SAAS,CAAC,MAAM;IACd,IAAI,CAACI,MAAM,EAAE;MACXG,MAAM,CAAC,IAAI,CAAC;MACZE,UAAU,CAAC,KAAK,CAAC;MACjBE,QAAQ,CAAC,IAAI,CAAC;MACd;IACF;IAEA,IAAI,CAACR,WAAW,EAAE;MAChBI,MAAM,CAAC,IAAI,CAAC;MACZE,UAAU,CAAC,KAAK,CAAC;MACjBE,QAAQ,CAAC,IAAIG,KAAK,CAAC,4DAA4D,CAAC,CAAC;MACjF;IACF;IAEA,IAAIC,SAAS,GAAG,KAAK;IACrB,MAAMC,QAAQ,GAAGb,WAAW;IAC5B,MAAMc,YAAY,GAAGb,MAAM;IAE3B,MAAMc,IAAI,GAAG,MAAAA,CAAA,KAAY;MACvBT,UAAU,CAAC,IAAI,CAAC;MAChBE,QAAQ,CAAC,IAAI,CAAC;MAEd,IAAI;QACF,IAAI,OAAOK,QAAQ,CAACG,uBAAuB,KAAK,UAAU,EAAE;UAC1D,MAAM,IAAIL,KAAK,CAAC,uEAAuE,CAAC;QAC1F;QAEA,MAAMM,WAAW,GAAG,MAAMJ,QAAQ,CAACG,uBAAuB,CAACF,YAAY,EAAEL,OAAO,EAAEC,SAAS,CAAC;QAE5F,IAAI,CAACE,SAAS,EAAE;UACdR,MAAM,CAACa,WAAW,IAAI,IAAI,CAAC;QAC7B;MACF,CAAC,CAAC,OAAOC,GAAY,EAAE;QACrB,IAAI,CAACN,SAAS,EAAE;UACdR,MAAM,CAAC,IAAI,CAAC;UACZI,QAAQ,CAACU,GAAG,YAAYP,KAAK,GAAGO,GAAG,GAAG,IAAIP,KAAK,CAACQ,MAAM,CAACD,GAAG,CAAC,CAAC,CAAC;QAC/D;MACF,CAAC,SAAS;QACR,IAAI,CAACN,SAAS,EAAE;UACdN,UAAU,CAAC,KAAK,CAAC;QACnB;MACF;IACF,CAAC;IAEDS,IAAI,CAAC,CAAC;IAEN,OAAO,MAAM;MACXH,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACX,MAAM,EAAED,WAAW,EAAES,OAAO,EAAEC,SAAS,CAAC,CAAC;EAE7C,OAAO;IAAEP,GAAG;IAAEE,OAAO;IAAEE;EAAM,CAAC;AAChC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { useQuery } from '@tanstack/react-query';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The variant-aware batch resolver contract (`@oxyhq/core`).
|
|
8
|
+
*
|
|
9
|
+
* `getFileDownloadUrls` takes a per-file `{ fileId, variant }` list and returns
|
|
10
|
+
* a map keyed by `fileId`; ids that are denied or missing are OMITTED (never an
|
|
11
|
+
* empty string), and PRIVATE assets resolve to a working scoped-media-token
|
|
12
|
+
* stream URL. Typed here rather than `Pick<OxyServices, …>` so this file states
|
|
13
|
+
* the exact contract it depends on.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Private-safe grid/thumbnail URL resolution.
|
|
18
|
+
*
|
|
19
|
+
* The synchronous `oxyServices.getFileDownloadUrl(id, variant)` always yields
|
|
20
|
+
* the public CDN origin (`cloud.oxy.so/<id>`), which 404s for PRIVATE assets —
|
|
21
|
+
* and uploads default to private. Thumbnails and previews therefore have to be
|
|
22
|
+
* resolved through the authenticated batch endpoint, which returns a working
|
|
23
|
+
* `/assets/:id/stream?…&mt=<scoped media token>` URL for private files.
|
|
24
|
+
*
|
|
25
|
+
* This hook resolves an ENTIRE page of files in ONE (chunked) batch request
|
|
26
|
+
* rather than N per-tile calls, and caches the result in React Query keyed by
|
|
27
|
+
* the (fileId, variant) set. `staleTime` is deliberately shorter than the
|
|
28
|
+
* server media-token TTL so a tile never renders a URL whose token has already
|
|
29
|
+
* expired.
|
|
30
|
+
*
|
|
31
|
+
* Optimistic (`temp-…` / `uploading`) entries are NEVER resolved here — an
|
|
32
|
+
* asset URL must never be built from an id the server does not yet know. Their
|
|
33
|
+
* preview comes from the locally-picked uri (see {@link fileThumbSource}).
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/** Server media-token lifetime we request for each resolved URL (seconds). */
|
|
37
|
+
const ASSET_URL_TTL_SECONDS = 600; // 10 minutes
|
|
38
|
+
/**
|
|
39
|
+
* Refresh window. Kept below {@link ASSET_URL_TTL_SECONDS} so React Query
|
|
40
|
+
* re-resolves in the background before a rendered URL's token can die.
|
|
41
|
+
*/
|
|
42
|
+
const ASSET_URL_STALE_MS = 5 * 60 * 1000; // 5 minutes
|
|
43
|
+
const ASSET_URL_GC_MS = 30 * 60 * 1000;
|
|
44
|
+
/** Server-side batch cap for `POST /assets/batch-access` — chunk beyond this. */
|
|
45
|
+
const BATCH_CAP = 100;
|
|
46
|
+
|
|
47
|
+
/** React Query prefix — scoped media URLs must never leak across accounts. */
|
|
48
|
+
export const ASSET_DOWNLOAD_URLS_QUERY_KEY = 'assetDownloadUrls';
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* True when a file is an optimistic placeholder that has not been persisted by
|
|
52
|
+
* the server yet — either its id is still the client-minted `temp-…` id, or it
|
|
53
|
+
* carries the `uploading` flag. Mirrors the `temp-` id guard precedent in
|
|
54
|
+
* `@oxyhq/core`'s `avatarUtils.updateAvatarVisibility`.
|
|
55
|
+
*/
|
|
56
|
+
export function isOptimisticFile(file) {
|
|
57
|
+
if (typeof file.id === 'string' && file.id.startsWith('temp-')) return true;
|
|
58
|
+
return file.metadata?.uploading === true;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Grid thumbnail variant for a file, or `undefined` when it needs no URL. */
|
|
62
|
+
function thumbVariantFor(file) {
|
|
63
|
+
if (file.contentType.startsWith('video/')) return 'poster';
|
|
64
|
+
if (file.contentType.startsWith('image/')) return 'thumb';
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Locally-picked preview uri stashed on an optimistic entry's metadata by the
|
|
70
|
+
* upload flow, if present.
|
|
71
|
+
*/
|
|
72
|
+
function localPreviewUri(file) {
|
|
73
|
+
const uri = file.metadata?.localPreviewUri;
|
|
74
|
+
return typeof uri === 'string' && uri.length > 0 ? uri : undefined;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Resolve the image source for a grid tile.
|
|
79
|
+
*
|
|
80
|
+
* - Optimistic entry → its locally-picked preview uri (never an asset URL).
|
|
81
|
+
* - Persisted entry → the private-safe URL from {@link useResolvedFileUrls},
|
|
82
|
+
* or `undefined` while it is still resolving / was denied (tile shows a
|
|
83
|
+
* placeholder instead of a guaranteed-404 CDN URL).
|
|
84
|
+
*/
|
|
85
|
+
export function fileThumbSource(file, resolved) {
|
|
86
|
+
if (isOptimisticFile(file)) {
|
|
87
|
+
return localPreviewUri(file);
|
|
88
|
+
}
|
|
89
|
+
return resolved.get(file.id);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Batch-resolve private-safe thumbnail URLs for the given files.
|
|
94
|
+
*
|
|
95
|
+
* Only image/video, non-optimistic files are resolved (documents render an
|
|
96
|
+
* icon, optimistic entries render their local preview). Returns a stable
|
|
97
|
+
* `Map<fileId, url>`; missing entries mean "not resolved yet or access denied".
|
|
98
|
+
*/
|
|
99
|
+
export function useResolvedFileUrls(oxyServices, files, /** Active viewer account id — media tokens are minted per user; must be in the query key. */
|
|
100
|
+
viewerId) {
|
|
101
|
+
const viewerKey = viewerId ?? '';
|
|
102
|
+
const requests = useMemo(() => {
|
|
103
|
+
const list = [];
|
|
104
|
+
for (const file of files) {
|
|
105
|
+
if (isOptimisticFile(file)) continue;
|
|
106
|
+
const variant = thumbVariantFor(file);
|
|
107
|
+
if (!variant) continue;
|
|
108
|
+
list.push({
|
|
109
|
+
fileId: file.id,
|
|
110
|
+
variant
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return list;
|
|
114
|
+
}, [files]);
|
|
115
|
+
|
|
116
|
+
// A content signature so the query key is stable across renders while the
|
|
117
|
+
// resolvable set is unchanged (the `files` array is a fresh reference every
|
|
118
|
+
// render). Sorted so ordering churn does not force a refetch.
|
|
119
|
+
const signature = useMemo(() => requests.map(r => `${r.fileId}:${r.variant ?? ''}`).sort().join('|'), [requests]);
|
|
120
|
+
const query = useQuery({
|
|
121
|
+
queryKey: [ASSET_DOWNLOAD_URLS_QUERY_KEY, viewerKey, signature],
|
|
122
|
+
enabled: requests.length > 0 && viewerKey.length > 0,
|
|
123
|
+
staleTime: ASSET_URL_STALE_MS,
|
|
124
|
+
gcTime: ASSET_URL_GC_MS,
|
|
125
|
+
// Keep previously-resolved URLs on screen while the SAME viewer's file set
|
|
126
|
+
// grows (pagination), but never carry another account's scoped media tokens
|
|
127
|
+
// across a switch — `keepPreviousData` alone would do that.
|
|
128
|
+
placeholderData: (previousData, previousQuery) => {
|
|
129
|
+
if (!previousData || !previousQuery) return undefined;
|
|
130
|
+
const prevViewer = previousQuery.queryKey[1];
|
|
131
|
+
if (prevViewer !== viewerKey) return undefined;
|
|
132
|
+
return previousData;
|
|
133
|
+
},
|
|
134
|
+
queryFn: async () => {
|
|
135
|
+
const merged = {};
|
|
136
|
+
for (let i = 0; i < requests.length; i += BATCH_CAP) {
|
|
137
|
+
const chunk = requests.slice(i, i + BATCH_CAP);
|
|
138
|
+
const urls = await oxyServices.getFileDownloadUrls(chunk, {
|
|
139
|
+
expiresIn: ASSET_URL_TTL_SECONDS
|
|
140
|
+
});
|
|
141
|
+
Object.assign(merged, urls);
|
|
142
|
+
}
|
|
143
|
+
return merged;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
return useMemo(() => {
|
|
147
|
+
const map = new Map();
|
|
148
|
+
const data = query.data;
|
|
149
|
+
if (data) {
|
|
150
|
+
for (const [id, url] of Object.entries(data)) {
|
|
151
|
+
if (typeof url === 'string' && url.length > 0) map.set(id, url);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return map;
|
|
155
|
+
}, [query.data]);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=useResolvedFileUrls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","useQuery","ASSET_URL_TTL_SECONDS","ASSET_URL_STALE_MS","ASSET_URL_GC_MS","BATCH_CAP","ASSET_DOWNLOAD_URLS_QUERY_KEY","isOptimisticFile","file","id","startsWith","metadata","uploading","thumbVariantFor","contentType","undefined","localPreviewUri","uri","length","fileThumbSource","resolved","get","useResolvedFileUrls","oxyServices","files","viewerId","viewerKey","requests","list","variant","push","fileId","signature","map","r","sort","join","query","queryKey","enabled","staleTime","gcTime","placeholderData","previousData","previousQuery","prevViewer","queryFn","merged","i","chunk","slice","urls","getFileDownloadUrls","expiresIn","Object","assign","Map","data","url","entries","set"],"sourceRoot":"../../../../src","sources":["ui/hooks/useResolvedFileUrls.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/ui/index.js
CHANGED
|
@@ -26,7 +26,7 @@ export { LogoText } from "./components/logo/LogoText.js";
|
|
|
26
26
|
export { RequireOxyAuth } from "./components/RequireOxyAuth.js";
|
|
27
27
|
export { default as FollowButton } from "./components/FollowButton.js";
|
|
28
28
|
export { default as OxyPayButton } from "./components/OxyPayButton.js";
|
|
29
|
-
export { FontLoader, setupFonts } from
|
|
29
|
+
export { FontLoader, setupFonts } from './components/FontLoader';
|
|
30
30
|
export { default as ProfileButton } from "./components/ProfileButton.js";
|
|
31
31
|
|
|
32
32
|
// Context + hooks
|