@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.
Files changed (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +63 -571
  3. package/lib/commonjs/core/index.js +103 -34
  4. package/lib/commonjs/core/index.js.map +1 -1
  5. package/lib/commonjs/lib/sonner.js +17 -0
  6. package/lib/commonjs/lib/sonner.js.map +1 -0
  7. package/lib/commonjs/lib/sonner.web.js +17 -0
  8. package/lib/commonjs/lib/sonner.web.js.map +1 -0
  9. package/lib/commonjs/ui/components/FollowButton.js +54 -4
  10. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  11. package/lib/commonjs/ui/components/OxyProvider.js +22 -3
  12. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  13. package/lib/commonjs/ui/screens/AccountCenterScreen.js +4 -3
  14. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  15. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +15 -14
  16. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  17. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +10 -9
  18. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  19. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +17 -16
  20. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  21. package/lib/commonjs/ui/screens/AppInfoScreen.js +4 -5
  22. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  23. package/lib/commonjs/ui/screens/SessionManagementScreen.js +7 -6
  24. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  25. package/lib/commonjs/ui/screens/SignInScreen.js +821 -74
  26. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  27. package/lib/commonjs/ui/screens/SignUpScreen.js +7 -5
  28. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  29. package/lib/commonjs/ui/styles/theme.js +1 -1
  30. package/lib/module/core/index.js +103 -34
  31. package/lib/module/core/index.js.map +1 -1
  32. package/lib/module/lib/sonner.js +4 -0
  33. package/lib/module/lib/sonner.js.map +1 -0
  34. package/lib/module/lib/sonner.web.js +4 -0
  35. package/lib/module/lib/sonner.web.js.map +1 -0
  36. package/lib/module/ui/components/FollowButton.js +54 -4
  37. package/lib/module/ui/components/FollowButton.js.map +1 -1
  38. package/lib/module/ui/components/OxyProvider.js +22 -3
  39. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  40. package/lib/module/ui/screens/AccountCenterScreen.js +4 -3
  41. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  42. package/lib/module/ui/screens/AccountOverviewScreen.js +15 -14
  43. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  44. package/lib/module/ui/screens/AccountSettingsScreen.js +10 -9
  45. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  46. package/lib/module/ui/screens/AccountSwitcherScreen.js +17 -16
  47. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  48. package/lib/module/ui/screens/AppInfoScreen.js +5 -6
  49. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  50. package/lib/module/ui/screens/SessionManagementScreen.js +7 -6
  51. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  52. package/lib/module/ui/screens/SignInScreen.js +824 -77
  53. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  54. package/lib/module/ui/screens/SignUpScreen.js +7 -5
  55. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  56. package/lib/module/ui/styles/theme.js +1 -1
  57. package/lib/typescript/core/index.d.ts +44 -23
  58. package/lib/typescript/core/index.d.ts.map +1 -1
  59. package/lib/typescript/lib/sonner.d.ts +2 -0
  60. package/lib/typescript/lib/sonner.d.ts.map +1 -0
  61. package/lib/typescript/lib/sonner.web.d.ts +2 -0
  62. package/lib/typescript/lib/sonner.web.d.ts.map +1 -0
  63. package/lib/typescript/models/interfaces.d.ts +24 -0
  64. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  65. package/lib/typescript/ui/components/FollowButton.d.ts +32 -1
  66. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  67. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  68. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  69. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  70. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  71. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  72. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  73. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  74. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  75. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  76. package/package.json +5 -3
  77. package/src/core/index.ts +104 -36
  78. package/src/lib/sonner.ts +1 -0
  79. package/src/lib/sonner.web.ts +1 -0
  80. package/src/models/interfaces.ts +29 -0
  81. package/src/ui/components/FollowButton.tsx +67 -3
  82. package/src/ui/components/OxyProvider.tsx +15 -0
  83. package/src/ui/screens/AccountCenterScreen.tsx +4 -3
  84. package/src/ui/screens/AccountOverviewScreen.tsx +15 -14
  85. package/src/ui/screens/AccountSettingsScreen.tsx +10 -9
  86. package/src/ui/screens/AccountSwitcherScreen.tsx +17 -16
  87. package/src/ui/screens/AppInfoScreen.tsx +4 -7
  88. package/src/ui/screens/SessionManagementScreen.tsx +7 -15
  89. package/src/ui/screens/SignInScreen.tsx +729 -52
  90. package/src/ui/screens/SignUpScreen.tsx +7 -5
  91. package/src/ui/styles/theme.ts +1 -1
  92. package/CHANGELOG.md +0 -97
  93. 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
- Alert.alert('Success', 'Account switched successfully!');
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
- Alert.alert('Switch Failed', 'There was a problem switching accounts. Please try again.');
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
- Alert.alert('Success', 'Account removed successfully!');
164
+ toast.success('Account removed successfully!');
164
165
  } catch (error) {
165
166
  console.error('Remove session failed:', error);
166
- Alert.alert('Remove Failed', 'There was a problem removing the account. Please try again.');
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
- Alert.alert('Error', 'No active session found. You may already be logged out.');
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
- Alert.alert('Error', 'Logout function not available. Please try refreshing the app.');
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
- Alert.alert('Success', 'All accounts signed out successfully!');
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
- Alert.alert('Logout Failed', `There was a problem signing out: ${errorMessage}`);
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
- Alert.alert('Success', 'All accounts signed out successfully!');
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
- Alert.alert('Logout Failed', `There was a problem signing out: ${errorMessage}`);
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
- Alert.alert('Error', 'Failed to load device sessions. Please try again.');
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
- Alert.alert('Success', `Signed out from ${deviceName} successfully!`);
292
+ toast.success(`Signed out from ${deviceName} successfully!`);
292
293
  } catch (error) {
293
294
  console.error('Remote logout failed:', error);
294
- Alert.alert('Logout Failed', 'There was a problem signing out from the device. Please try again.');
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
- Alert.alert('No Other Devices', 'No other device sessions found to sign out from.');
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
- Alert.alert('Success', `Signed out from all other devices successfully!`);
331
+ toast.success('Signed out from all other devices successfully!');
331
332
  } catch (error) {
332
333
  console.error('Logout all devices failed:', error);
333
- Alert.alert('Logout Failed', 'There was a problem signing out from other devices. Please try again.');
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
- Alert.alert('Copied', `${label} copied to clipboard`);
62
+ toast.success(`${label} copied to clipboard`);
62
63
  } catch (error) {
63
- Alert.alert('Error', 'Failed to copy to clipboard');
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
- Alert.alert(
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
- Alert.alert('Success', 'Session logged out successfully');
88
+ toast.success('Session logged out successfully');
88
89
  } catch (error) {
89
90
  console.error('Logout session failed:', error);
90
- Alert.alert(
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
- Alert.alert('Info', 'No other sessions to logout.');
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
- Alert.alert('Success', 'Other sessions logged out successfully');
130
+ toast.success('Other sessions logged out successfully');
133
131
  } catch (error) {
134
132
  console.error('Logout other sessions failed:', error);
135
- Alert.alert(
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
- Alert.alert(
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
  },