@oxyhq/services 5.16.25 → 5.16.27

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.
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import { useOxy } from '../context/OxyContext';
5
+ import { useTransferStore } from '../stores/transferStore';
6
+
7
+ /**
8
+ * Query keys for transfer-related queries
9
+ */
10
+ export const transferQueryKeys = {
11
+ all: ['transfers'],
12
+ completion: transferId => ['transfers', 'completion', transferId],
13
+ pending: () => ['transfers', 'pending']
14
+ };
15
+
16
+ /**
17
+ * Hook to check if a transfer was completed
18
+ * Only runs when authenticated and transferId is provided
19
+ */
20
+ export const useCheckTransferCompletion = (transferId, enabled = true) => {
21
+ const {
22
+ oxyServices,
23
+ isAuthenticated
24
+ } = useOxy();
25
+ return useQuery({
26
+ queryKey: transferId ? transferQueryKeys.completion(transferId) : ['transfers', 'completion', 'null'],
27
+ queryFn: async () => {
28
+ if (!transferId || !oxyServices) {
29
+ return null;
30
+ }
31
+ try {
32
+ const response = await oxyServices.makeRequest('GET', `/api/identity/check-transfer/${transferId}`, undefined, {
33
+ cache: false
34
+ });
35
+ return response;
36
+ } catch (error) {
37
+ // Handle 401 errors gracefully - don't throw, just return null
38
+ if (error?.status === 401 || error?.message?.includes('401') || error?.message?.includes('authentication')) {
39
+ if (__DEV__) {
40
+ console.warn('[useCheckTransferCompletion] Authentication required, skipping check');
41
+ }
42
+ return null;
43
+ }
44
+ throw error;
45
+ }
46
+ },
47
+ enabled: enabled && !!transferId && isAuthenticated && !!oxyServices,
48
+ staleTime: 30 * 1000,
49
+ // 30 seconds - completion status doesn't change frequently
50
+ gcTime: 5 * 60 * 1000,
51
+ // 5 minutes
52
+ retry: (failureCount, error) => {
53
+ // Don't retry on 401 errors
54
+ if (error?.status === 401 || error?.message?.includes('401')) {
55
+ return false;
56
+ }
57
+ return failureCount < 2;
58
+ },
59
+ retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 5000)
60
+ });
61
+ };
62
+
63
+ /**
64
+ * Hook to check all pending transfers for completion
65
+ * Used when app comes back online
66
+ */
67
+ export const useCheckPendingTransfers = () => {
68
+ const {
69
+ oxyServices,
70
+ isAuthenticated
71
+ } = useOxy();
72
+ const getAllPendingTransfers = useTransferStore(state => state.getAllPendingTransfers);
73
+ const pendingTransfers = getAllPendingTransfers();
74
+ return useQuery({
75
+ queryKey: [...transferQueryKeys.pending(), pendingTransfers.map(t => t.transferId).join(',')],
76
+ queryFn: async () => {
77
+ if (!oxyServices || pendingTransfers.length === 0) {
78
+ return [];
79
+ }
80
+ const results = [];
81
+
82
+ // Check each pending transfer
83
+ for (const {
84
+ transferId,
85
+ data
86
+ } of pendingTransfers) {
87
+ try {
88
+ const response = await oxyServices.makeRequest('GET', `/api/identity/check-transfer/${transferId}`, undefined, {
89
+ cache: false
90
+ });
91
+ if (response.completed && response.publicKey === data.publicKey) {
92
+ results.push({
93
+ transferId,
94
+ completed: true,
95
+ data: response
96
+ });
97
+ } else {
98
+ results.push({
99
+ transferId,
100
+ completed: false
101
+ });
102
+ }
103
+ } catch (error) {
104
+ // Handle 401 errors gracefully - skip this transfer
105
+ if (error?.status === 401 || error?.message?.includes('401') || error?.message?.includes('authentication')) {
106
+ if (__DEV__) {
107
+ console.warn(`[useCheckPendingTransfers] Authentication required for transfer ${transferId}, skipping`);
108
+ }
109
+ results.push({
110
+ transferId,
111
+ completed: false
112
+ });
113
+ continue;
114
+ }
115
+ // For other errors, mark as not completed
116
+ results.push({
117
+ transferId,
118
+ completed: false
119
+ });
120
+ }
121
+ }
122
+ return results;
123
+ },
124
+ enabled: isAuthenticated && !!oxyServices && pendingTransfers.length > 0,
125
+ staleTime: 30 * 1000,
126
+ // 30 seconds
127
+ gcTime: 5 * 60 * 1000,
128
+ // 5 minutes
129
+ retry: false // Don't retry - we'll check again on next reconnect
130
+ });
131
+ };
132
+ //# sourceMappingURL=useTransferQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useQuery","useOxy","useTransferStore","transferQueryKeys","all","completion","transferId","pending","useCheckTransferCompletion","enabled","oxyServices","isAuthenticated","queryKey","queryFn","response","makeRequest","undefined","cache","error","status","message","includes","__DEV__","console","warn","staleTime","gcTime","retry","failureCount","retryDelay","attemptIndex","Math","min","useCheckPendingTransfers","getAllPendingTransfers","state","pendingTransfers","map","t","join","length","results","data","completed","publicKey","push"],"sourceRoot":"../../../../src","sources":["ui/hooks/useTransferQueries.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ import { create } from 'zustand';
4
+ import { useShallow } from 'zustand/react/shallow';
5
+ const FIFTEEN_MINUTES = 15 * 60 * 1000;
6
+ const initialState = {
7
+ transferCodes: {},
8
+ activeTransferId: null,
9
+ isRestored: false
10
+ };
11
+ export const useTransferStore = create((set, get) => ({
12
+ ...initialState,
13
+ storeTransferCode: (transferId, code, sourceDeviceId, publicKey) => {
14
+ set(state => ({
15
+ transferCodes: {
16
+ ...state.transferCodes,
17
+ [transferId]: {
18
+ code,
19
+ sourceDeviceId,
20
+ publicKey,
21
+ timestamp: Date.now(),
22
+ state: 'pending'
23
+ }
24
+ },
25
+ activeTransferId: transferId
26
+ }));
27
+ },
28
+ getTransferCode: transferId => {
29
+ const state = get();
30
+ return state.transferCodes[transferId] || null;
31
+ },
32
+ clearTransferCode: transferId => {
33
+ set(state => {
34
+ const {
35
+ [transferId]: removed,
36
+ ...rest
37
+ } = state.transferCodes;
38
+ const newActiveTransferId = state.activeTransferId === transferId ? null : state.activeTransferId;
39
+ return {
40
+ transferCodes: rest,
41
+ activeTransferId: newActiveTransferId
42
+ };
43
+ });
44
+ },
45
+ updateTransferState: (transferId, newState) => {
46
+ set(state => {
47
+ const existing = state.transferCodes[transferId];
48
+ if (!existing) {
49
+ return state;
50
+ }
51
+ const updated = {
52
+ ...existing,
53
+ state: newState
54
+ };
55
+
56
+ // Clear active transfer if completed or failed
57
+ const newActiveTransferId = (newState === 'completed' || newState === 'failed') && state.activeTransferId === transferId ? null : state.activeTransferId;
58
+ return {
59
+ transferCodes: {
60
+ ...state.transferCodes,
61
+ [transferId]: updated
62
+ },
63
+ activeTransferId: newActiveTransferId
64
+ };
65
+ });
66
+ },
67
+ getAllPendingTransfers: () => {
68
+ const state = get();
69
+ const pending = [];
70
+ Object.entries(state.transferCodes).forEach(([transferId, data]) => {
71
+ if (data.state === 'pending') {
72
+ pending.push({
73
+ transferId,
74
+ data
75
+ });
76
+ }
77
+ });
78
+ return pending;
79
+ },
80
+ getActiveTransferId: () => {
81
+ return get().activeTransferId;
82
+ },
83
+ setActiveTransferId: transferId => {
84
+ set({
85
+ activeTransferId: transferId
86
+ });
87
+ },
88
+ restoreFromStorage: (codes, activeTransferId) => {
89
+ const now = Date.now();
90
+ const validCodes = {};
91
+
92
+ // Only restore non-expired pending transfers
93
+ Object.entries(codes).forEach(([transferId, data]) => {
94
+ if (data.state === 'pending' && now - data.timestamp < FIFTEEN_MINUTES) {
95
+ validCodes[transferId] = data;
96
+ }
97
+ });
98
+
99
+ // Verify active transfer is still valid
100
+ let validActiveTransferId = activeTransferId;
101
+ if (activeTransferId && (!validCodes[activeTransferId] || validCodes[activeTransferId].state !== 'pending')) {
102
+ validActiveTransferId = null;
103
+ }
104
+ set({
105
+ transferCodes: validCodes,
106
+ activeTransferId: validActiveTransferId,
107
+ isRestored: true
108
+ });
109
+ },
110
+ markRestored: () => {
111
+ set({
112
+ isRestored: true
113
+ });
114
+ },
115
+ cleanupExpired: () => {
116
+ const now = Date.now();
117
+ set(state => {
118
+ const validCodes = {};
119
+ let newActiveTransferId = state.activeTransferId;
120
+ Object.entries(state.transferCodes).forEach(([transferId, data]) => {
121
+ const age = now - data.timestamp;
122
+ if (age < FIFTEEN_MINUTES) {
123
+ validCodes[transferId] = data;
124
+ } else if (transferId === state.activeTransferId) {
125
+ newActiveTransferId = null;
126
+ }
127
+ });
128
+ return {
129
+ transferCodes: validCodes,
130
+ activeTransferId: newActiveTransferId
131
+ };
132
+ });
133
+ },
134
+ reset: () => {
135
+ set(initialState);
136
+ }
137
+ }));
138
+
139
+ /**
140
+ * Hook to get transfer codes for persistence
141
+ */
142
+ export const useTransferCodesForPersistence = () => {
143
+ return useTransferStore(useShallow(state => ({
144
+ transferCodes: state.transferCodes,
145
+ activeTransferId: state.activeTransferId
146
+ })));
147
+ };
148
+
149
+ /**
150
+ * Hook to check if store has been restored
151
+ */
152
+ export const useTransferStoreRestored = () => {
153
+ return useTransferStore(state => state.isRestored);
154
+ };
155
+ //# sourceMappingURL=transferStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","useShallow","FIFTEEN_MINUTES","initialState","transferCodes","activeTransferId","isRestored","useTransferStore","set","get","storeTransferCode","transferId","code","sourceDeviceId","publicKey","state","timestamp","Date","now","getTransferCode","clearTransferCode","removed","rest","newActiveTransferId","updateTransferState","newState","existing","updated","getAllPendingTransfers","pending","Object","entries","forEach","data","push","getActiveTransferId","setActiveTransferId","restoreFromStorage","codes","validCodes","validActiveTransferId","markRestored","cleanupExpired","age","reset","useTransferCodesForPersistence","useTransferStoreRestored"],"sourceRoot":"../../../../src","sources":["ui/stores/transferStore.ts"],"mappings":"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","ignoreList":[]}
@@ -33,14 +33,27 @@ export interface OxyContextState {
33
33
  isIdentitySynced: () => Promise<boolean>;
34
34
  syncIdentity: () => Promise<User>;
35
35
  deleteIdentityAndClearAccount: (skipBackup?: boolean, force?: boolean, userConfirmed?: boolean) => Promise<void>;
36
- storeTransferCode: (transferId: string, code: string, sourceDeviceId: string | null, publicKey: string) => void;
36
+ storeTransferCode: (transferId: string, code: string, sourceDeviceId: string | null, publicKey: string) => Promise<void>;
37
37
  getTransferCode: (transferId: string) => {
38
38
  code: string;
39
39
  sourceDeviceId: string | null;
40
40
  publicKey: string;
41
41
  timestamp: number;
42
+ state: 'pending' | 'completed' | 'failed';
42
43
  } | null;
43
- clearTransferCode: (transferId: string) => void;
44
+ clearTransferCode: (transferId: string) => Promise<void>;
45
+ getAllPendingTransfers: () => Array<{
46
+ transferId: string;
47
+ data: {
48
+ code: string;
49
+ sourceDeviceId: string | null;
50
+ publicKey: string;
51
+ timestamp: number;
52
+ state: 'pending' | 'completed' | 'failed';
53
+ };
54
+ }>;
55
+ getActiveTransferId: () => string | null;
56
+ updateTransferState: (transferId: string, state: 'pending' | 'completed' | 'failed') => Promise<void>;
44
57
  identitySyncState: {
45
58
  isSynced: boolean;
46
59
  isSyncing: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Query keys for transfer-related queries
3
+ */
4
+ export declare const transferQueryKeys: {
5
+ all: readonly ["transfers"];
6
+ completion: (transferId: string) => readonly ["transfers", "completion", string];
7
+ pending: () => readonly ["transfers", "pending"];
8
+ };
9
+ /**
10
+ * Hook to check if a transfer was completed
11
+ * Only runs when authenticated and transferId is provided
12
+ */
13
+ export declare const useCheckTransferCompletion: (transferId: string | null, enabled?: boolean) => import("@tanstack/react-query").UseQueryResult<{
14
+ completed: boolean;
15
+ transferId?: string;
16
+ sourceDeviceId?: string;
17
+ publicKey?: string;
18
+ transferCode?: string;
19
+ completedAt?: string;
20
+ } | null, any>;
21
+ /**
22
+ * Hook to check all pending transfers for completion
23
+ * Used when app comes back online
24
+ */
25
+ export declare const useCheckPendingTransfers: () => import("@tanstack/react-query").UseQueryResult<{
26
+ transferId: string;
27
+ completed: boolean;
28
+ data?: {
29
+ transferId?: string;
30
+ sourceDeviceId?: string;
31
+ publicKey?: string;
32
+ transferCode?: string;
33
+ completedAt?: string;
34
+ };
35
+ }[], Error>;
36
+ //# sourceMappingURL=useTransferQueries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTransferQueries.d.ts","sourceRoot":"","sources":["../../../../src/ui/hooks/useTransferQueries.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,iBAAiB;;6BAEH,MAAM;;CAEhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,YAAY,MAAM,GAAG,IAAI,EAAE,UAAS,OAAc;eAYxE,OAAO;iBACL,MAAM;qBACF,MAAM;gBACX,MAAM;mBACH,MAAM;kBACP,MAAM;cAgC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB;gBAajB,MAAM;eACP,OAAO;WACX;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;WA2DR,CAAC"}
@@ -0,0 +1,39 @@
1
+ export interface TransferCodeData {
2
+ code: string;
3
+ sourceDeviceId: string | null;
4
+ publicKey: string;
5
+ timestamp: number;
6
+ state: 'pending' | 'completed' | 'failed';
7
+ }
8
+ export interface TransferState {
9
+ transferCodes: Record<string, TransferCodeData>;
10
+ activeTransferId: string | null;
11
+ isRestored: boolean;
12
+ storeTransferCode: (transferId: string, code: string, sourceDeviceId: string | null, publicKey: string) => void;
13
+ getTransferCode: (transferId: string) => TransferCodeData | null;
14
+ clearTransferCode: (transferId: string) => void;
15
+ updateTransferState: (transferId: string, state: 'pending' | 'completed' | 'failed') => void;
16
+ getAllPendingTransfers: () => Array<{
17
+ transferId: string;
18
+ data: TransferCodeData;
19
+ }>;
20
+ getActiveTransferId: () => string | null;
21
+ setActiveTransferId: (transferId: string | null) => void;
22
+ restoreFromStorage: (codes: Record<string, TransferCodeData>, activeTransferId: string | null) => void;
23
+ markRestored: () => void;
24
+ cleanupExpired: () => void;
25
+ reset: () => void;
26
+ }
27
+ export declare const useTransferStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TransferState>>;
28
+ /**
29
+ * Hook to get transfer codes for persistence
30
+ */
31
+ export declare const useTransferCodesForPersistence: () => {
32
+ transferCodes: Record<string, TransferCodeData>;
33
+ activeTransferId: string | null;
34
+ };
35
+ /**
36
+ * Hook to check if store has been restored
37
+ */
38
+ export declare const useTransferStoreRestored: () => boolean;
39
+ //# sourceMappingURL=transferStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/stores/transferStore.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAE5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAGhD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,UAAU,EAAE,OAAO,CAAC;IAGpB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChH,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC7F,sBAAsB,EAAE,MAAM,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IACpF,mBAAmB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvG,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAUD,eAAO,MAAM,gBAAgB,4EAyI1B,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;CAO1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,eAEpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/services",
3
- "version": "5.16.25",
3
+ "version": "5.16.27",
4
4
  "description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",