@oxyhq/services 5.16.26 → 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,137 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCheckTransferCompletion = exports.useCheckPendingTransfers = exports.transferQueryKeys = void 0;
7
+ var _reactQuery = require("@tanstack/react-query");
8
+ var _OxyContext = require("../context/OxyContext");
9
+ var _transferStore = require("../stores/transferStore");
10
+ /**
11
+ * Query keys for transfer-related queries
12
+ */
13
+ const transferQueryKeys = exports.transferQueryKeys = {
14
+ all: ['transfers'],
15
+ completion: transferId => ['transfers', 'completion', transferId],
16
+ pending: () => ['transfers', 'pending']
17
+ };
18
+
19
+ /**
20
+ * Hook to check if a transfer was completed
21
+ * Only runs when authenticated and transferId is provided
22
+ */
23
+ const useCheckTransferCompletion = (transferId, enabled = true) => {
24
+ const {
25
+ oxyServices,
26
+ isAuthenticated
27
+ } = (0, _OxyContext.useOxy)();
28
+ return (0, _reactQuery.useQuery)({
29
+ queryKey: transferId ? transferQueryKeys.completion(transferId) : ['transfers', 'completion', 'null'],
30
+ queryFn: async () => {
31
+ if (!transferId || !oxyServices) {
32
+ return null;
33
+ }
34
+ try {
35
+ const response = await oxyServices.makeRequest('GET', `/api/identity/check-transfer/${transferId}`, undefined, {
36
+ cache: false
37
+ });
38
+ return response;
39
+ } catch (error) {
40
+ // Handle 401 errors gracefully - don't throw, just return null
41
+ if (error?.status === 401 || error?.message?.includes('401') || error?.message?.includes('authentication')) {
42
+ if (__DEV__) {
43
+ console.warn('[useCheckTransferCompletion] Authentication required, skipping check');
44
+ }
45
+ return null;
46
+ }
47
+ throw error;
48
+ }
49
+ },
50
+ enabled: enabled && !!transferId && isAuthenticated && !!oxyServices,
51
+ staleTime: 30 * 1000,
52
+ // 30 seconds - completion status doesn't change frequently
53
+ gcTime: 5 * 60 * 1000,
54
+ // 5 minutes
55
+ retry: (failureCount, error) => {
56
+ // Don't retry on 401 errors
57
+ if (error?.status === 401 || error?.message?.includes('401')) {
58
+ return false;
59
+ }
60
+ return failureCount < 2;
61
+ },
62
+ retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 5000)
63
+ });
64
+ };
65
+
66
+ /**
67
+ * Hook to check all pending transfers for completion
68
+ * Used when app comes back online
69
+ */
70
+ exports.useCheckTransferCompletion = useCheckTransferCompletion;
71
+ const useCheckPendingTransfers = () => {
72
+ const {
73
+ oxyServices,
74
+ isAuthenticated
75
+ } = (0, _OxyContext.useOxy)();
76
+ const getAllPendingTransfers = (0, _transferStore.useTransferStore)(state => state.getAllPendingTransfers);
77
+ const pendingTransfers = getAllPendingTransfers();
78
+ return (0, _reactQuery.useQuery)({
79
+ queryKey: [...transferQueryKeys.pending(), pendingTransfers.map(t => t.transferId).join(',')],
80
+ queryFn: async () => {
81
+ if (!oxyServices || pendingTransfers.length === 0) {
82
+ return [];
83
+ }
84
+ const results = [];
85
+
86
+ // Check each pending transfer
87
+ for (const {
88
+ transferId,
89
+ data
90
+ } of pendingTransfers) {
91
+ try {
92
+ const response = await oxyServices.makeRequest('GET', `/api/identity/check-transfer/${transferId}`, undefined, {
93
+ cache: false
94
+ });
95
+ if (response.completed && response.publicKey === data.publicKey) {
96
+ results.push({
97
+ transferId,
98
+ completed: true,
99
+ data: response
100
+ });
101
+ } else {
102
+ results.push({
103
+ transferId,
104
+ completed: false
105
+ });
106
+ }
107
+ } catch (error) {
108
+ // Handle 401 errors gracefully - skip this transfer
109
+ if (error?.status === 401 || error?.message?.includes('401') || error?.message?.includes('authentication')) {
110
+ if (__DEV__) {
111
+ console.warn(`[useCheckPendingTransfers] Authentication required for transfer ${transferId}, skipping`);
112
+ }
113
+ results.push({
114
+ transferId,
115
+ completed: false
116
+ });
117
+ continue;
118
+ }
119
+ // For other errors, mark as not completed
120
+ results.push({
121
+ transferId,
122
+ completed: false
123
+ });
124
+ }
125
+ }
126
+ return results;
127
+ },
128
+ enabled: isAuthenticated && !!oxyServices && pendingTransfers.length > 0,
129
+ staleTime: 30 * 1000,
130
+ // 30 seconds
131
+ gcTime: 5 * 60 * 1000,
132
+ // 5 minutes
133
+ retry: false // Don't retry - we'll check again on next reconnect
134
+ });
135
+ };
136
+ exports.useCheckPendingTransfers = useCheckPendingTransfers;
137
+ //# sourceMappingURL=useTransferQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactQuery","require","_OxyContext","_transferStore","transferQueryKeys","exports","all","completion","transferId","pending","useCheckTransferCompletion","enabled","oxyServices","isAuthenticated","useOxy","useQuery","queryKey","queryFn","response","makeRequest","undefined","cache","error","status","message","includes","__DEV__","console","warn","staleTime","gcTime","retry","failureCount","retryDelay","attemptIndex","Math","min","useCheckPendingTransfers","getAllPendingTransfers","useTransferStore","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,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTransferStoreRestored = exports.useTransferStore = exports.useTransferCodesForPersistence = void 0;
7
+ var _zustand = require("zustand");
8
+ var _shallow = require("zustand/react/shallow");
9
+ const FIFTEEN_MINUTES = 15 * 60 * 1000;
10
+ const initialState = {
11
+ transferCodes: {},
12
+ activeTransferId: null,
13
+ isRestored: false
14
+ };
15
+ const useTransferStore = exports.useTransferStore = (0, _zustand.create)((set, get) => ({
16
+ ...initialState,
17
+ storeTransferCode: (transferId, code, sourceDeviceId, publicKey) => {
18
+ set(state => ({
19
+ transferCodes: {
20
+ ...state.transferCodes,
21
+ [transferId]: {
22
+ code,
23
+ sourceDeviceId,
24
+ publicKey,
25
+ timestamp: Date.now(),
26
+ state: 'pending'
27
+ }
28
+ },
29
+ activeTransferId: transferId
30
+ }));
31
+ },
32
+ getTransferCode: transferId => {
33
+ const state = get();
34
+ return state.transferCodes[transferId] || null;
35
+ },
36
+ clearTransferCode: transferId => {
37
+ set(state => {
38
+ const {
39
+ [transferId]: removed,
40
+ ...rest
41
+ } = state.transferCodes;
42
+ const newActiveTransferId = state.activeTransferId === transferId ? null : state.activeTransferId;
43
+ return {
44
+ transferCodes: rest,
45
+ activeTransferId: newActiveTransferId
46
+ };
47
+ });
48
+ },
49
+ updateTransferState: (transferId, newState) => {
50
+ set(state => {
51
+ const existing = state.transferCodes[transferId];
52
+ if (!existing) {
53
+ return state;
54
+ }
55
+ const updated = {
56
+ ...existing,
57
+ state: newState
58
+ };
59
+
60
+ // Clear active transfer if completed or failed
61
+ const newActiveTransferId = (newState === 'completed' || newState === 'failed') && state.activeTransferId === transferId ? null : state.activeTransferId;
62
+ return {
63
+ transferCodes: {
64
+ ...state.transferCodes,
65
+ [transferId]: updated
66
+ },
67
+ activeTransferId: newActiveTransferId
68
+ };
69
+ });
70
+ },
71
+ getAllPendingTransfers: () => {
72
+ const state = get();
73
+ const pending = [];
74
+ Object.entries(state.transferCodes).forEach(([transferId, data]) => {
75
+ if (data.state === 'pending') {
76
+ pending.push({
77
+ transferId,
78
+ data
79
+ });
80
+ }
81
+ });
82
+ return pending;
83
+ },
84
+ getActiveTransferId: () => {
85
+ return get().activeTransferId;
86
+ },
87
+ setActiveTransferId: transferId => {
88
+ set({
89
+ activeTransferId: transferId
90
+ });
91
+ },
92
+ restoreFromStorage: (codes, activeTransferId) => {
93
+ const now = Date.now();
94
+ const validCodes = {};
95
+
96
+ // Only restore non-expired pending transfers
97
+ Object.entries(codes).forEach(([transferId, data]) => {
98
+ if (data.state === 'pending' && now - data.timestamp < FIFTEEN_MINUTES) {
99
+ validCodes[transferId] = data;
100
+ }
101
+ });
102
+
103
+ // Verify active transfer is still valid
104
+ let validActiveTransferId = activeTransferId;
105
+ if (activeTransferId && (!validCodes[activeTransferId] || validCodes[activeTransferId].state !== 'pending')) {
106
+ validActiveTransferId = null;
107
+ }
108
+ set({
109
+ transferCodes: validCodes,
110
+ activeTransferId: validActiveTransferId,
111
+ isRestored: true
112
+ });
113
+ },
114
+ markRestored: () => {
115
+ set({
116
+ isRestored: true
117
+ });
118
+ },
119
+ cleanupExpired: () => {
120
+ const now = Date.now();
121
+ set(state => {
122
+ const validCodes = {};
123
+ let newActiveTransferId = state.activeTransferId;
124
+ Object.entries(state.transferCodes).forEach(([transferId, data]) => {
125
+ const age = now - data.timestamp;
126
+ if (age < FIFTEEN_MINUTES) {
127
+ validCodes[transferId] = data;
128
+ } else if (transferId === state.activeTransferId) {
129
+ newActiveTransferId = null;
130
+ }
131
+ });
132
+ return {
133
+ transferCodes: validCodes,
134
+ activeTransferId: newActiveTransferId
135
+ };
136
+ });
137
+ },
138
+ reset: () => {
139
+ set(initialState);
140
+ }
141
+ }));
142
+
143
+ /**
144
+ * Hook to get transfer codes for persistence
145
+ */
146
+ const useTransferCodesForPersistence = () => {
147
+ return useTransferStore((0, _shallow.useShallow)(state => ({
148
+ transferCodes: state.transferCodes,
149
+ activeTransferId: state.activeTransferId
150
+ })));
151
+ };
152
+
153
+ /**
154
+ * Hook to check if store has been restored
155
+ */
156
+ exports.useTransferCodesForPersistence = useTransferCodesForPersistence;
157
+ const useTransferStoreRestored = () => {
158
+ return useTransferStore(state => state.isRestored);
159
+ };
160
+ exports.useTransferStoreRestored = useTransferStoreRestored;
161
+ //# sourceMappingURL=transferStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_zustand","require","_shallow","FIFTEEN_MINUTES","initialState","transferCodes","activeTransferId","isRestored","useTransferStore","exports","create","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","useShallow","useTransferStoreRestored"],"sourceRoot":"../../../../src","sources":["ui/stores/transferStore.ts"],"mappings":"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","ignoreList":[]}