@oxyhq/services 5.3.10 → 5.3.11
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/LICENSE +21 -0
- package/README.md +63 -571
- package/lib/commonjs/core/index.js +103 -34
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/lib/sonner.js +17 -0
- package/lib/commonjs/lib/sonner.js.map +1 -0
- package/lib/commonjs/lib/sonner.web.js +17 -0
- package/lib/commonjs/lib/sonner.web.js.map +1 -0
- package/lib/commonjs/ui/components/FollowButton.js +54 -4
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +22 -3
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +4 -3
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +15 -14
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +10 -9
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +17 -16
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +4 -5
- package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +7 -6
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SignInScreen.js +821 -74
- package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SignUpScreen.js +7 -5
- package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
- package/lib/commonjs/ui/styles/theme.js +1 -1
- package/lib/module/core/index.js +103 -34
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/lib/sonner.js +4 -0
- package/lib/module/lib/sonner.js.map +1 -0
- package/lib/module/lib/sonner.web.js +4 -0
- package/lib/module/lib/sonner.web.js.map +1 -0
- package/lib/module/ui/components/FollowButton.js +54 -4
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +22 -3
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +4 -3
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +15 -14
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +10 -9
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +17 -16
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +5 -6
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +7 -6
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/SignInScreen.js +824 -77
- package/lib/module/ui/screens/SignInScreen.js.map +1 -1
- package/lib/module/ui/screens/SignUpScreen.js +7 -5
- package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
- package/lib/module/ui/styles/theme.js +1 -1
- package/lib/typescript/core/index.d.ts +44 -23
- package/lib/typescript/core/index.d.ts.map +1 -1
- package/lib/typescript/lib/sonner.d.ts +2 -0
- package/lib/typescript/lib/sonner.d.ts.map +1 -0
- package/lib/typescript/lib/sonner.web.d.ts +2 -0
- package/lib/typescript/lib/sonner.web.d.ts.map +1 -0
- package/lib/typescript/models/interfaces.d.ts +24 -0
- package/lib/typescript/models/interfaces.d.ts.map +1 -1
- package/lib/typescript/ui/components/FollowButton.d.ts +32 -1
- package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/core/index.ts +104 -36
- package/src/lib/sonner.ts +1 -0
- package/src/lib/sonner.web.ts +1 -0
- package/src/models/interfaces.ts +29 -0
- package/src/ui/components/FollowButton.tsx +67 -3
- package/src/ui/components/OxyProvider.tsx +15 -0
- package/src/ui/screens/AccountCenterScreen.tsx +4 -3
- package/src/ui/screens/AccountOverviewScreen.tsx +15 -14
- package/src/ui/screens/AccountSettingsScreen.tsx +10 -9
- package/src/ui/screens/AccountSwitcherScreen.tsx +17 -16
- package/src/ui/screens/AppInfoScreen.tsx +4 -7
- package/src/ui/screens/SessionManagementScreen.tsx +7 -15
- package/src/ui/screens/SignInScreen.tsx +729 -52
- package/src/ui/screens/SignUpScreen.tsx +7 -5
- package/src/ui/styles/theme.ts +1 -1
- package/CHANGELOG.md +0 -97
- package/UI_COMPONENTS.md +0 -462
|
@@ -16,6 +16,7 @@ import { useOxy } from '../context/OxyContext';
|
|
|
16
16
|
import { SecureClientSession } from '../../models/secureSession';
|
|
17
17
|
import { fontFamilies } from '../styles/fonts';
|
|
18
18
|
import { User } from '../../models/interfaces';
|
|
19
|
+
import { toast } from '../../lib/sonner';
|
|
19
20
|
|
|
20
21
|
interface SessionWithUser extends SecureClientSession {
|
|
21
22
|
userProfile?: User;
|
|
@@ -125,13 +126,13 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
125
126
|
setSwitchingToUserId(sessionId);
|
|
126
127
|
try {
|
|
127
128
|
await switchSession(sessionId);
|
|
128
|
-
|
|
129
|
+
toast.success('Account switched successfully!');
|
|
129
130
|
if (onClose) {
|
|
130
131
|
onClose();
|
|
131
132
|
}
|
|
132
133
|
} catch (error) {
|
|
133
134
|
console.error('Switch session failed:', error);
|
|
134
|
-
|
|
135
|
+
toast.error('There was a problem switching accounts. Please try again.');
|
|
135
136
|
} finally {
|
|
136
137
|
setSwitchingToUserId(null);
|
|
137
138
|
}
|
|
@@ -160,10 +161,10 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
160
161
|
setRemovingUserId(sessionId);
|
|
161
162
|
try {
|
|
162
163
|
await removeSession(sessionId);
|
|
163
|
-
|
|
164
|
+
toast.success('Account removed successfully!');
|
|
164
165
|
} catch (error) {
|
|
165
166
|
console.error('Remove session failed:', error);
|
|
166
|
-
|
|
167
|
+
toast.error('There was a problem removing the account. Please try again.');
|
|
167
168
|
} finally {
|
|
168
169
|
setRemovingUserId(null);
|
|
169
170
|
}
|
|
@@ -187,13 +188,13 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
187
188
|
// Check if we have the required data
|
|
188
189
|
if (!activeSessionId) {
|
|
189
190
|
console.error('🔴 ERROR: No activeSessionId found!');
|
|
190
|
-
|
|
191
|
+
toast.error('No active session found. You may already be logged out.');
|
|
191
192
|
return;
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
if (typeof logoutAll !== 'function') {
|
|
195
196
|
console.error('🔴 ERROR: logoutAll is not a function!', typeof logoutAll);
|
|
196
|
-
|
|
197
|
+
toast.error('Logout function not available. Please try refreshing the app.');
|
|
197
198
|
return;
|
|
198
199
|
}
|
|
199
200
|
|
|
@@ -203,7 +204,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
203
204
|
console.log('🔴 TESTING: About to call logoutAll() directly');
|
|
204
205
|
await logoutAll();
|
|
205
206
|
console.log('🔴 TESTING: logoutAll() completed successfully');
|
|
206
|
-
|
|
207
|
+
toast.success('All accounts signed out successfully!');
|
|
207
208
|
if (onClose) {
|
|
208
209
|
console.log('🔴 TESTING: Calling onClose');
|
|
209
210
|
onClose();
|
|
@@ -211,7 +212,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
211
212
|
} catch (error) {
|
|
212
213
|
console.error('🔴 TESTING: Logout all failed:', error);
|
|
213
214
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
214
|
-
|
|
215
|
+
toast.error(`There was a problem signing out: ${errorMessage}`);
|
|
215
216
|
}
|
|
216
217
|
|
|
217
218
|
/* ORIGINAL CODE WITH CONFIRMATION - TEMPORARILY DISABLED
|
|
@@ -235,7 +236,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
235
236
|
console.log('🔴 CONFIRMATION: About to call logoutAll()');
|
|
236
237
|
await logoutAll();
|
|
237
238
|
console.log('🔴 CONFIRMATION: logoutAll() completed successfully');
|
|
238
|
-
|
|
239
|
+
toast.success('All accounts signed out successfully!');
|
|
239
240
|
if (onClose) {
|
|
240
241
|
console.log('🔴 CONFIRMATION: Calling onClose');
|
|
241
242
|
onClose();
|
|
@@ -243,7 +244,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
243
244
|
} catch (error) {
|
|
244
245
|
console.error('🔴 CONFIRMATION: Logout all failed:', error);
|
|
245
246
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
246
|
-
|
|
247
|
+
toast.error(`There was a problem signing out: ${errorMessage}`);
|
|
247
248
|
}
|
|
248
249
|
},
|
|
249
250
|
},
|
|
@@ -264,7 +265,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
264
265
|
setDeviceSessions(allSessions || []);
|
|
265
266
|
} catch (error) {
|
|
266
267
|
console.error('Failed to load device sessions:', error);
|
|
267
|
-
|
|
268
|
+
toast.error('Failed to load device sessions. Please try again.');
|
|
268
269
|
} finally {
|
|
269
270
|
setLoadingDeviceSessions(false);
|
|
270
271
|
}
|
|
@@ -288,10 +289,10 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
288
289
|
await oxyServices?.logoutSecureSession(user?.sessionId || '', sessionId);
|
|
289
290
|
// Refresh device sessions list
|
|
290
291
|
await loadAllDeviceSessions();
|
|
291
|
-
|
|
292
|
+
toast.success(`Signed out from ${deviceName} successfully!`);
|
|
292
293
|
} catch (error) {
|
|
293
294
|
console.error('Remote logout failed:', error);
|
|
294
|
-
|
|
295
|
+
toast.error('There was a problem signing out from the device. Please try again.');
|
|
295
296
|
} finally {
|
|
296
297
|
setRemoteLogoutSessionId(null);
|
|
297
298
|
}
|
|
@@ -306,7 +307,7 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
306
307
|
const otherDevicesCount = deviceSessions.filter(session => !session.isCurrent).length;
|
|
307
308
|
|
|
308
309
|
if (otherDevicesCount === 0) {
|
|
309
|
-
|
|
310
|
+
toast.info('No other device sessions found to sign out from.');
|
|
310
311
|
return;
|
|
311
312
|
}
|
|
312
313
|
|
|
@@ -327,10 +328,10 @@ const ModernAccountSwitcherScreen: React.FC<BaseScreenProps> = ({
|
|
|
327
328
|
await oxyServices?.logoutAllDeviceSessions(user?.sessionId || '', undefined, true);
|
|
328
329
|
// Refresh device sessions list
|
|
329
330
|
await loadAllDeviceSessions();
|
|
330
|
-
|
|
331
|
+
toast.success('Signed out from all other devices successfully!');
|
|
331
332
|
} catch (error) {
|
|
332
333
|
console.error('Logout all devices failed:', error);
|
|
333
|
-
|
|
334
|
+
toast.error('There was a problem signing out from other devices. Please try again.');
|
|
334
335
|
} finally {
|
|
335
336
|
setLoggingOutAllDevices(false);
|
|
336
337
|
}
|
|
@@ -15,6 +15,7 @@ import { BaseScreenProps } from '../navigation/types';
|
|
|
15
15
|
import { useOxy } from '../context/OxyContext';
|
|
16
16
|
import { fontFamilies } from '../styles/fonts';
|
|
17
17
|
import { packageInfo } from '../../constants/version';
|
|
18
|
+
import { toast } from '../../lib/sonner';
|
|
18
19
|
|
|
19
20
|
interface SystemInfo {
|
|
20
21
|
platform: string;
|
|
@@ -58,9 +59,9 @@ const AppInfoScreen: React.FC<BaseScreenProps> = ({
|
|
|
58
59
|
const copyToClipboard = async (text: string, label: string) => {
|
|
59
60
|
try {
|
|
60
61
|
await Clipboard.setString(text);
|
|
61
|
-
|
|
62
|
+
toast.success(`${label} copied to clipboard`);
|
|
62
63
|
} catch (error) {
|
|
63
|
-
|
|
64
|
+
toast.error('Failed to copy to clipboard');
|
|
64
65
|
}
|
|
65
66
|
};
|
|
66
67
|
|
|
@@ -195,11 +196,7 @@ const AppInfoScreen: React.FC<BaseScreenProps> = ({
|
|
|
195
196
|
<TouchableOpacity
|
|
196
197
|
style={[styles.actionButton, { backgroundColor: successColor }]}
|
|
197
198
|
onPress={() => {
|
|
198
|
-
|
|
199
|
-
'System Check',
|
|
200
|
-
'All systems operational',
|
|
201
|
-
[{ text: 'OK' }]
|
|
202
|
-
);
|
|
199
|
+
toast.success('All systems operational');
|
|
203
200
|
}}
|
|
204
201
|
>
|
|
205
202
|
<Text style={styles.actionButtonText}>Run System Check</Text>
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
import { BaseScreenProps } from '../navigation/types';
|
|
14
14
|
import { useOxy } from '../context/OxyContext';
|
|
15
15
|
import { fontFamilies } from '../styles/fonts';
|
|
16
|
+
import { toast } from '../../lib/sonner';
|
|
16
17
|
|
|
17
18
|
interface Session {
|
|
18
19
|
id: string;
|
|
@@ -84,13 +85,10 @@ const SessionManagementScreen: React.FC<BaseScreenProps> = ({
|
|
|
84
85
|
// Refresh sessions to update the list
|
|
85
86
|
await refreshSessions();
|
|
86
87
|
|
|
87
|
-
|
|
88
|
+
toast.success('Session logged out successfully');
|
|
88
89
|
} catch (error) {
|
|
89
90
|
console.error('Logout session failed:', error);
|
|
90
|
-
|
|
91
|
-
'Error',
|
|
92
|
-
'Failed to logout session. Please try again.'
|
|
93
|
-
);
|
|
91
|
+
toast.error('Failed to logout session. Please try again.');
|
|
94
92
|
} finally {
|
|
95
93
|
setActionLoading(null);
|
|
96
94
|
}
|
|
@@ -104,7 +102,7 @@ const SessionManagementScreen: React.FC<BaseScreenProps> = ({
|
|
|
104
102
|
const otherSessionsCount = userSessions.filter(s => s.sessionId !== activeSessionId).length;
|
|
105
103
|
|
|
106
104
|
if (otherSessionsCount === 0) {
|
|
107
|
-
|
|
105
|
+
toast.info('No other sessions to logout.');
|
|
108
106
|
return;
|
|
109
107
|
}
|
|
110
108
|
|
|
@@ -129,13 +127,10 @@ const SessionManagementScreen: React.FC<BaseScreenProps> = ({
|
|
|
129
127
|
// Refresh sessions to update the list
|
|
130
128
|
await refreshSessions();
|
|
131
129
|
|
|
132
|
-
|
|
130
|
+
toast.success('Other sessions logged out successfully');
|
|
133
131
|
} catch (error) {
|
|
134
132
|
console.error('Logout other sessions failed:', error);
|
|
135
|
-
|
|
136
|
-
'Error',
|
|
137
|
-
'Failed to logout other sessions. Please try again.'
|
|
138
|
-
);
|
|
133
|
+
toast.error('Failed to logout other sessions. Please try again.');
|
|
139
134
|
} finally {
|
|
140
135
|
setActionLoading(null);
|
|
141
136
|
}
|
|
@@ -161,10 +156,7 @@ const SessionManagementScreen: React.FC<BaseScreenProps> = ({
|
|
|
161
156
|
// No need to update local state as user will be logged out
|
|
162
157
|
} catch (error) {
|
|
163
158
|
console.error('Logout all sessions failed:', error);
|
|
164
|
-
|
|
165
|
-
'Error',
|
|
166
|
-
'Failed to logout all sessions. Please try again.'
|
|
167
|
-
);
|
|
159
|
+
toast.error('Failed to logout all sessions. Please try again.');
|
|
168
160
|
setActionLoading(null);
|
|
169
161
|
}
|
|
170
162
|
},
|