@oxyhq/services 19.2.0 → 20.0.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/ui/components/FollowButton.js +1 -2
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/SettingsIcon.js +1 -2
- package/lib/commonjs/ui/components/SettingsIcon.js.map +1 -1
- package/lib/commonjs/ui/components/logo/LogoIcon.js +0 -2
- package/lib/commonjs/ui/components/logo/LogoIcon.js.map +1 -1
- package/lib/commonjs/ui/components/logo/LogoText.js +0 -2
- package/lib/commonjs/ui/components/logo/LogoText.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +9 -8
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/commitSessionFlow.js +10 -0
- package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +1 -3
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/hooks/useLanguageManagement.js +109 -28
- package/lib/commonjs/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +1 -3
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +151 -88
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PreferencesScreen.js +5 -6
- package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +1 -1
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/SettingsIcon.js +1 -1
- package/lib/module/ui/components/SettingsIcon.js.map +1 -1
- package/lib/module/ui/components/logo/LogoIcon.js +0 -1
- package/lib/module/ui/components/logo/LogoIcon.js.map +1 -1
- package/lib/module/ui/components/logo/LogoText.js +0 -1
- package/lib/module/ui/components/logo/LogoText.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +9 -8
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/commitSessionFlow.js +10 -0
- package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +1 -3
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/hooks/useLanguageManagement.js +107 -29
- package/lib/module/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +1 -3
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +153 -91
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/PreferencesScreen.js +5 -6
- package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/FollowButton.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyPayButton.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/OxyPayButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +1 -2
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +3 -0
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +5 -3
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts +52 -8
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +1 -2
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FollowButton.d.ts +2 -2
- package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyPayButton.d.ts +1 -1
- package/lib/typescript/module/ui/components/OxyPayButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SettingsIcon.d.ts +1 -1
- package/lib/typescript/module/ui/components/SettingsIcon.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts +1 -1
- package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/logo/LogoText.d.ts +1 -1
- package/lib/typescript/module/ui/components/logo/LogoText.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +1 -2
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +3 -0
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +5 -3
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFollow.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useFollow.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts +52 -8
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +1 -2
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/package.json +18 -17
- package/src/ui/components/FollowButton.tsx +6 -5
- package/src/ui/components/OxyPayButton.tsx +1 -1
- package/src/ui/components/SettingsIcon.tsx +2 -1
- package/src/ui/components/logo/LogoIcon.tsx +2 -1
- package/src/ui/components/logo/LogoText.tsx +2 -1
- package/src/ui/context/OxyContext.tsx +13 -11
- package/src/ui/context/__tests__/commitSessionFlow.test.ts +27 -0
- package/src/ui/context/commitSessionFlow.ts +10 -0
- package/src/ui/context/hooks/useAuthOperations.ts +1 -5
- package/src/ui/context/oxyContextTypes.ts +3 -0
- package/src/ui/hooks/useFollow.ts +1 -1
- package/src/ui/hooks/useLanguageManagement.ts +144 -42
- package/src/ui/hooks/useSessionManagement.ts +1 -4
- package/src/ui/screens/FeedbackScreen.tsx +1 -1
- package/src/ui/screens/LanguageSelectorScreen.tsx +195 -104
- package/src/ui/screens/PreferencesScreen.tsx +4 -6
- package/src/ui/screens/fileManagement/FileListSection.tsx +1 -1
- package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +1 -1
|
@@ -9,7 +9,6 @@ export interface UseSessionManagementOptions {
|
|
|
9
9
|
storageKeyPrefix?: string;
|
|
10
10
|
loginSuccess: (user: User) => void;
|
|
11
11
|
logoutStore: () => void;
|
|
12
|
-
applyLanguagePreference: (user: User) => Promise<void>;
|
|
13
12
|
onAuthStateChange?: (user: User | null) => void;
|
|
14
13
|
onError?: (error: ApiError) => void;
|
|
15
14
|
setAuthError?: (message: string | null) => void;
|
|
@@ -38,5 +37,5 @@ export interface UseSessionManagementResult {
|
|
|
38
37
|
*
|
|
39
38
|
* @param options - Session management configuration
|
|
40
39
|
*/
|
|
41
|
-
export declare const useSessionManagement: ({ oxyServices, storage, storageKeyPrefix, loginSuccess, logoutStore,
|
|
40
|
+
export declare const useSessionManagement: ({ oxyServices, storage, storageKeyPrefix, loginSuccess, logoutStore, onAuthStateChange, onError, setAuthError, logger, setTokenReady, queryClient, }: UseSessionManagementOptions) => UseSessionManagementResult;
|
|
42
41
|
//# sourceMappingURL=useSessionManagement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSessionManagement.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useSessionManagement.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,
|
|
1
|
+
{"version":3,"file":"useSessionManagement.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useSessionManagement.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAClH,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,eAAe,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IAC/C,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAKD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,sJAYlC,2BAA2B,KAAG,0BA2ThC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageSelectorScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/LanguageSelectorScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"LanguageSelectorScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/LanguageSelectorScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAqB,CAAC;AAkB3D,UAAU,2BAA4B,SAAQ,eAAe;CAAI;;AAqRjE,wBAAkD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreferencesScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/PreferencesScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PreferencesScreen.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/PreferencesScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAOzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAqB,CAAC;;AAyO3D,wBAA6C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { ScrollView } from 'react-native';
|
|
3
3
|
import type { FileMetadata } from '@oxyhq/core';
|
|
4
|
-
import { useTheme } from '@oxyhq/bloom/theme';
|
|
4
|
+
import type { useTheme } from '@oxyhq/bloom/theme';
|
|
5
5
|
type ThemeColors = ReturnType<typeof useTheme>['colors'];
|
|
6
6
|
/** A pre-built list row descriptor (produced by the orchestrator's memo). */
|
|
7
7
|
export interface FileListItem {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileListSection.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/screens/fileManagement/FileListSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAIH,UAAU,EAGb,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"FileListSection.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/screens/fileManagement/FileListSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAIH,UAAU,EAGb,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEzD,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACjC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAClD,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnD,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC;IACnE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;CAC3C;AAED;;;;GAIG;AACH,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2EnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { FileMetadata } from '@oxyhq/core';
|
|
3
|
-
import { useUploadFile } from '../../../hooks/mutations/useAccountMutations.js';
|
|
3
|
+
import type { useUploadFile } from '../../../hooks/mutations/useAccountMutations.js';
|
|
4
4
|
import { type PendingUploadFile } from '../shared.js';
|
|
5
5
|
/** Dependencies threaded into the upload-state hook from the orchestrator. */
|
|
6
6
|
export interface UseFileUploadStateParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFileUploadState.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/screens/fileManagement/hooks/useFileUploadState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"useFileUploadState.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/screens/fileManagement/hooks/useFileUploadState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iDAA8C,CAAC;AAElF,OAAO,EACH,KAAK,iBAAiB,EAQzB,MAAM,cAAW,CAAC;AAEnB,8EAA8E;AAC9E,MAAM,WAAW,wBAAwB;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IACrD,iBAAiB,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtF,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC;CACtE;AAED,mDAAmD;AACnD,MAAM,WAAW,wBAAwB;IACrC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,sKAchC,wBAAwB,KAAG,wBA4a7B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.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",
|
|
@@ -126,24 +126,16 @@
|
|
|
126
126
|
}
|
|
127
127
|
},
|
|
128
128
|
"dependencies": {
|
|
129
|
-
"@oxyhq/contracts": "0.
|
|
129
|
+
"@oxyhq/contracts": "0.14.0",
|
|
130
|
+
"@oxyhq/core": "^10.1.3",
|
|
130
131
|
"color": "^4.2.3"
|
|
131
132
|
},
|
|
132
133
|
"devDependencies": {
|
|
133
|
-
"@oxyhq/core": "9.2.4",
|
|
134
|
-
"nativewind": "5.0.0-preview.3",
|
|
135
|
-
"react-native-css": "^3.0.0",
|
|
136
|
-
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
137
|
-
"@types/react": "*",
|
|
138
|
-
"copyfiles": "^2.4.1",
|
|
139
|
-
"react-native-keyboard-controller": "1.21.13",
|
|
140
|
-
"react-native-qrcode-svg": "^6.3.0",
|
|
141
|
-
"socket.io-client": "^4.8.1",
|
|
142
|
-
"typescript": "^5.9.2",
|
|
143
|
-
"zustand": "^5.0.14",
|
|
144
134
|
"@biomejs/biome": "^1.9.4",
|
|
145
135
|
"@commitlint/cli": "^17.6.5",
|
|
146
136
|
"@commitlint/config-conventional": "^17.6.5",
|
|
137
|
+
"@oxyhq/core": "10.1.3",
|
|
138
|
+
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
147
139
|
"@react-native-community/netinfo": "^11.4.1",
|
|
148
140
|
"@react-native/babel-preset": "^0.86.0",
|
|
149
141
|
"@release-it/conventional-changelog": "^10.0.2",
|
|
@@ -155,6 +147,8 @@
|
|
|
155
147
|
"@types/color": "^4.2.1",
|
|
156
148
|
"@types/jest": "^29.5.14",
|
|
157
149
|
"@types/node": "^20.19.9",
|
|
150
|
+
"@types/react": "*",
|
|
151
|
+
"copyfiles": "^2.4.1",
|
|
158
152
|
"expo-file-system": "~57.0.0",
|
|
159
153
|
"expo-font": "~57.0.0",
|
|
160
154
|
"expo-haptics": "~57.0.0",
|
|
@@ -163,18 +157,25 @@
|
|
|
163
157
|
"husky": "^4.3.8",
|
|
164
158
|
"jest": "~29.7.0",
|
|
165
159
|
"lint-staged": "^15.2.4",
|
|
160
|
+
"nativewind": "5.0.0-preview.3",
|
|
166
161
|
"react-native-builder-bob": "^0.43.0",
|
|
162
|
+
"react-native-css": "^3.0.0",
|
|
167
163
|
"react-native-gesture-handler": "~2.32.0",
|
|
164
|
+
"react-native-keyboard-controller": "1.21.13",
|
|
165
|
+
"react-native-qrcode-svg": "^6.3.0",
|
|
168
166
|
"react-native-reanimated": "4.5.0",
|
|
169
167
|
"react-native-safe-area-context": "~5.8.0",
|
|
170
168
|
"react-native-svg": "15.15.5",
|
|
171
169
|
"release-it": "^19.0.6",
|
|
172
|
-
"
|
|
170
|
+
"socket.io-client": "^4.8.1",
|
|
171
|
+
"ts-jest": "^29.4.0",
|
|
172
|
+
"typescript": "^5.9.2",
|
|
173
|
+
"zustand": "^5.0.14"
|
|
173
174
|
},
|
|
174
175
|
"peerDependencies": {
|
|
175
176
|
"@expo/vector-icons": "^15.0.3",
|
|
176
177
|
"@oxyhq/bloom": ">=0.16.0",
|
|
177
|
-
"@oxyhq/core": "^
|
|
178
|
+
"@oxyhq/core": "^10.1.3",
|
|
178
179
|
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
179
180
|
"@react-native-community/netinfo": "^11.4.1",
|
|
180
181
|
"@tanstack/query-async-storage-persister": "^5.101",
|
|
@@ -192,6 +193,7 @@
|
|
|
192
193
|
"expo-image": ">=2.0.0",
|
|
193
194
|
"expo-image-manipulator": ">=56.0.0",
|
|
194
195
|
"expo-linear-gradient": ">=56.0.0",
|
|
196
|
+
"nativewind": ">=5.0.0",
|
|
195
197
|
"react": ">=18.0.0",
|
|
196
198
|
"react-native": ">=0.85.0",
|
|
197
199
|
"react-native-gesture-handler": "~2.32.0",
|
|
@@ -201,8 +203,7 @@
|
|
|
201
203
|
"react-native-safe-area-context": "~5.8.0",
|
|
202
204
|
"react-native-svg": ">=15.15.0",
|
|
203
205
|
"socket.io-client": "^4.8.0",
|
|
204
|
-
"zustand": "^5.0.0"
|
|
205
|
-
"nativewind": ">=5.0.0"
|
|
206
|
+
"zustand": "^5.0.0"
|
|
206
207
|
},
|
|
207
208
|
"peerDependenciesMeta": {
|
|
208
209
|
"nativewind": {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import { useEffect, useCallback, useMemo, useState, memo } from 'react';
|
|
3
|
+
import type {
|
|
4
|
+
ViewStyle,
|
|
5
|
+
TextStyle,
|
|
6
|
+
StyleProp,
|
|
6
7
|
} from 'react-native';
|
|
7
8
|
import { useOxy } from '../context/OxyContext';
|
|
8
9
|
import { toast } from '@oxyhq/bloom';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { ViewStyle, TextStyle, StyleProp } from 'react-native';
|
|
3
3
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
4
4
|
import { Button } from '@oxyhq/bloom/button';
|
|
5
5
|
import type { PaymentItem, PaymentGatewayResult } from '../screens/PaymentGatewayScreen';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { ReactElement } from 'react';
|
|
2
3
|
import Svg, { ClipPath, Defs, G, Path } from 'react-native-svg';
|
|
3
4
|
import type { ViewStyle } from 'react-native';
|
|
4
5
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { ReactElement } from 'react';
|
|
2
3
|
import Svg, { G, Path } from 'react-native-svg';
|
|
3
4
|
import type { ViewStyle } from 'react-native';
|
|
4
5
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
@@ -56,11 +56,11 @@ import {
|
|
|
56
56
|
activeUserOf,
|
|
57
57
|
accountIdsOf,
|
|
58
58
|
} from '../session';
|
|
59
|
-
import {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
import type {
|
|
60
|
+
OxyContextState,
|
|
61
|
+
PasswordSignInResult,
|
|
62
|
+
OxyContextProviderProps,
|
|
63
|
+
CommitInput,
|
|
64
64
|
} from './oxyContextTypes';
|
|
65
65
|
import { DEFAULT_SESSION_VALIDITY_MS, loadUseFollowHook } from './oxyContextHelpers';
|
|
66
66
|
import { commitDeviceSetAndResolve } from './commitSessionFlow';
|
|
@@ -210,14 +210,15 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
210
210
|
|
|
211
211
|
const {
|
|
212
212
|
currentLanguage,
|
|
213
|
+
languages: currentLanguages,
|
|
213
214
|
metadata: currentLanguageMetadata,
|
|
214
215
|
languageName: currentLanguageName,
|
|
215
216
|
nativeLanguageName: currentNativeLanguageName,
|
|
216
217
|
setLanguage,
|
|
217
|
-
applyLanguagePreference,
|
|
218
218
|
} = useLanguageManagement({
|
|
219
219
|
storage,
|
|
220
220
|
languageKey: storageKeys.language,
|
|
221
|
+
user,
|
|
221
222
|
onError,
|
|
222
223
|
logger,
|
|
223
224
|
});
|
|
@@ -238,7 +239,6 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
238
239
|
storageKeyPrefix,
|
|
239
240
|
loginSuccess,
|
|
240
241
|
logoutStore,
|
|
241
|
-
applyLanguagePreference,
|
|
242
242
|
onAuthStateChange,
|
|
243
243
|
onError,
|
|
244
244
|
setAuthError: (message) => setAuthState({ error: message }),
|
|
@@ -376,7 +376,6 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
376
376
|
switchSession,
|
|
377
377
|
sessionClient,
|
|
378
378
|
syncFromClient,
|
|
379
|
-
applyLanguagePreference,
|
|
380
379
|
onAuthStateChange,
|
|
381
380
|
onError,
|
|
382
381
|
loginSuccess,
|
|
@@ -873,6 +872,7 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
873
872
|
isStorageReady: storage !== null,
|
|
874
873
|
error,
|
|
875
874
|
currentLanguage,
|
|
875
|
+
currentLanguages,
|
|
876
876
|
currentLanguageMetadata,
|
|
877
877
|
currentLanguageName,
|
|
878
878
|
currentNativeLanguageName,
|
|
@@ -924,6 +924,7 @@ export const OxyProvider: React.FC<OxyContextProviderProps> = ({
|
|
|
924
924
|
storage,
|
|
925
925
|
error,
|
|
926
926
|
currentLanguage,
|
|
927
|
+
currentLanguages,
|
|
927
928
|
currentLanguageMetadata,
|
|
928
929
|
currentLanguageName,
|
|
929
930
|
currentNativeLanguageName,
|
|
@@ -992,10 +993,11 @@ const LOADING_STATE: OxyContextState = {
|
|
|
992
993
|
isAuthResolved: false,
|
|
993
994
|
isStorageReady: false,
|
|
994
995
|
error: null,
|
|
995
|
-
currentLanguage: 'en',
|
|
996
|
+
currentLanguage: 'en-US',
|
|
997
|
+
currentLanguages: [],
|
|
996
998
|
currentLanguageMetadata: null,
|
|
997
|
-
currentLanguageName: 'English',
|
|
998
|
-
currentNativeLanguageName: 'English',
|
|
999
|
+
currentLanguageName: 'English (United States)',
|
|
1000
|
+
currentNativeLanguageName: 'English (United States)',
|
|
999
1001
|
hasIdentity: () => Promise.resolve(false),
|
|
1000
1002
|
getPublicKey: () => Promise.resolve(null),
|
|
1001
1003
|
signIn: () => rejectMissingProvider<User>(),
|
|
@@ -149,6 +149,33 @@ describe('commitDeviceSetAndResolve — cold boot (activate: false)', () => {
|
|
|
149
149
|
failure,
|
|
150
150
|
);
|
|
151
151
|
});
|
|
152
|
+
|
|
153
|
+
it('downgrades a 401 reconcile (signed-out edge) to debug — never warns', async () => {
|
|
154
|
+
const warnSpy = jest.spyOn(logger, 'warn').mockImplementation(() => undefined);
|
|
155
|
+
const debugSpy = jest.spyOn(logger, 'debug').mockImplementation(() => undefined);
|
|
156
|
+
const order: string[] = [];
|
|
157
|
+
// A stale/cleared bearer 401s `POST /session/device/add`: the EXPECTED
|
|
158
|
+
// signed-out outcome, not a failure the user should see warned in the console.
|
|
159
|
+
const unauthorized = Object.assign(new Error('Invalid or missing authorization header'), {
|
|
160
|
+
status: 401,
|
|
161
|
+
});
|
|
162
|
+
const deps = buildDeps(order, {
|
|
163
|
+
addCurrentAccount: jest.fn(async () => {
|
|
164
|
+
throw unauthorized;
|
|
165
|
+
}),
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
await commitDeviceSetAndResolve(deps);
|
|
169
|
+
await flush();
|
|
170
|
+
|
|
171
|
+
expect(deps.markAuthResolved).toHaveBeenCalledTimes(1);
|
|
172
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
173
|
+
expect(debugSpy).toHaveBeenCalledWith(
|
|
174
|
+
'commitSession: device-set registration skipped (signed out)',
|
|
175
|
+
{ component: 'OxyContext', method: 'commitSession' },
|
|
176
|
+
unauthorized,
|
|
177
|
+
);
|
|
178
|
+
});
|
|
152
179
|
});
|
|
153
180
|
|
|
154
181
|
describe('commitDeviceSetAndResolve — deliberate sign-in (activate: true)', () => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { User } from '@oxyhq/core';
|
|
2
2
|
import { logger as loggerUtil } from '@oxyhq/core';
|
|
3
|
+
import { isUnauthorizedStatus } from './oxyContextHelpers';
|
|
3
4
|
|
|
4
5
|
const LOG_CONTEXT = { component: 'OxyContext', method: 'commitSession' } as const;
|
|
5
6
|
|
|
@@ -72,6 +73,15 @@ export async function commitDeviceSetAndResolve(
|
|
|
72
73
|
};
|
|
73
74
|
|
|
74
75
|
const logReconcileError = (registrationError: unknown): void => {
|
|
76
|
+
// A 401 here is the EXPECTED signed-out edge: the bearer was stale/cleared, so
|
|
77
|
+
// the device-set registration (`POST /session/device/add`) cannot carry auth.
|
|
78
|
+
// This is not a failure — the cold boot re-registers on the next load once a
|
|
79
|
+
// valid session is minted. Log at debug; warn only on genuine unexpected
|
|
80
|
+
// failures (network, 5xx, malformed).
|
|
81
|
+
if (isUnauthorizedStatus(registrationError)) {
|
|
82
|
+
loggerUtil.debug('commitSession: device-set registration skipped (signed out)', LOG_CONTEXT, registrationError);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
75
85
|
loggerUtil.warn('commitSession: device-set registration failed', LOG_CONTEXT, registrationError);
|
|
76
86
|
};
|
|
77
87
|
|
|
@@ -36,7 +36,6 @@ export interface UseAuthOperationsOptions {
|
|
|
36
36
|
sessionClient: SessionClient;
|
|
37
37
|
/** Reprojects `sessionClient.getState()` onto sessions/activeSessionId/user (Task 1's callback). Awaited after a partial `signOut` so the exposed state reflects the server truth before the call resolves. */
|
|
38
38
|
syncFromClient: () => Promise<void>;
|
|
39
|
-
applyLanguagePreference: (user: User) => Promise<void>;
|
|
40
39
|
onAuthStateChange?: (user: User | null) => void;
|
|
41
40
|
onError?: (error: ApiError) => void;
|
|
42
41
|
loginSuccess: (user: User) => void;
|
|
@@ -91,7 +90,6 @@ export const useAuthOperations = ({
|
|
|
91
90
|
switchSession,
|
|
92
91
|
sessionClient,
|
|
93
92
|
syncFromClient,
|
|
94
|
-
applyLanguagePreference,
|
|
95
93
|
onAuthStateChange,
|
|
96
94
|
onError,
|
|
97
95
|
loginSuccess,
|
|
@@ -219,14 +217,12 @@ export const useAuthOperations = ({
|
|
|
219
217
|
await saveActiveSessionId(sessionResponse.sessionId);
|
|
220
218
|
updateSessions(allDeviceSessions, { merge: true });
|
|
221
219
|
|
|
222
|
-
await applyLanguagePreference(fullUser);
|
|
223
220
|
loginSuccess(fullUser);
|
|
224
221
|
onAuthStateChange?.(fullUser);
|
|
225
|
-
|
|
222
|
+
|
|
226
223
|
return fullUser;
|
|
227
224
|
},
|
|
228
225
|
[
|
|
229
|
-
applyLanguagePreference,
|
|
230
226
|
logger,
|
|
231
227
|
loginSuccess,
|
|
232
228
|
onAuthStateChange,
|
|
@@ -28,7 +28,10 @@ export interface OxyContextState {
|
|
|
28
28
|
isAuthResolved: boolean;
|
|
29
29
|
isStorageReady: boolean;
|
|
30
30
|
error: string | null;
|
|
31
|
+
/** Active UI locale (`language-REGION`): the account's primary locale when signed in, else the guest/device locale. */
|
|
31
32
|
currentLanguage: string;
|
|
33
|
+
/** Ordered account locales (primary first) when signed in, or the single guest override when signed out. */
|
|
34
|
+
currentLanguages: string[];
|
|
32
35
|
currentLanguageMetadata: ReturnType<typeof useLanguageManagement>['metadata'];
|
|
33
36
|
currentLanguageName: string;
|
|
34
37
|
currentNativeLanguageName: string;
|
|
@@ -2,7 +2,7 @@ import { useCallback, useMemo } from 'react';
|
|
|
2
2
|
import { useQuery } from '@tanstack/react-query';
|
|
3
3
|
import { useFollowStore } from '../stores/followStore';
|
|
4
4
|
import { useOxy } from '../context/OxyContext';
|
|
5
|
-
import {
|
|
5
|
+
import type { OxyServices, BulkFollowResult, BulkUnfollowResult } from '@oxyhq/core';
|
|
6
6
|
import { useShallow } from 'zustand/react/shallow';
|
|
7
7
|
import { queryKeys } from './queries/queryKeys';
|
|
8
8
|
|