@oxyhq/services 5.13.22 → 5.13.24
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/core/mixins/OxyServices.assets.js +1 -1
- package/lib/commonjs/ui/components/ErrorBoundary.js +145 -0
- package/lib/commonjs/ui/components/ErrorBoundary.js.map +1 -0
- package/lib/commonjs/ui/navigation/OxyRouter.js +83 -30
- package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +19 -14
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +90 -77
- package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SignInScreen.js +1 -1
- package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.assets.js +1 -1
- package/lib/module/ui/components/ErrorBoundary.js +139 -0
- package/lib/module/ui/components/ErrorBoundary.js.map +1 -0
- package/lib/module/ui/navigation/OxyRouter.js +83 -31
- package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +19 -14
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +91 -78
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/SignInScreen.js +1 -1
- package/lib/module/ui/screens/SignInScreen.js.map +1 -1
- package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
- package/lib/typescript/ui/components/ErrorBoundary.d.ts +31 -0
- package/lib/typescript/ui/components/ErrorBoundary.d.ts.map +1 -0
- package/lib/typescript/ui/navigation/OxyRouter.d.ts +3 -1
- package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/mixins/OxyServices.assets.ts +1 -1
- package/src/ui/components/ErrorBoundary.tsx +154 -0
- package/src/ui/navigation/OxyRouter.tsx +90 -29
- package/src/ui/screens/AccountCenterScreen.tsx +17 -14
- package/src/ui/screens/SessionManagementScreen.tsx +81 -69
- package/src/ui/screens/SignInScreen.tsx +1 -1
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
+
import { useState, useEffect, useCallback, memo } from 'react';
|
|
4
4
|
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import ErrorBoundary from '../components/ErrorBoundary';
|
|
5
6
|
|
|
6
7
|
// Import types and route registry
|
|
7
8
|
|
|
8
|
-
import { routes } from './routes';
|
|
9
|
+
import { routes, routeNames } from './routes';
|
|
9
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
// Helper function to validate route names at runtime
|
|
12
|
+
const isValidRouteName = screen => {
|
|
13
|
+
return routeNames.includes(screen);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// Helper function for safe navigation with validation
|
|
17
|
+
const validateAndNavigate = (screen, props, setCurrentScreen, setScreenHistory, setScreenPropsMap) => {
|
|
18
|
+
if (!isValidRouteName(screen)) {
|
|
19
|
+
const errorMsg = `Invalid route name: "${screen}". Valid routes are: ${routeNames.join(', ')}`;
|
|
20
|
+
console.error('OxyRouter:', errorMsg);
|
|
21
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
22
|
+
console.error('Navigation error:', errorMsg);
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (!routes[screen]) {
|
|
27
|
+
const errorMsg = `Route "${screen}" is registered but component is missing`;
|
|
28
|
+
console.error('OxyRouter:', errorMsg);
|
|
29
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
30
|
+
console.error('Navigation error:', errorMsg);
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
};
|
|
10
36
|
const OxyRouter = ({
|
|
11
37
|
oxyServices,
|
|
12
38
|
initialScreen,
|
|
@@ -31,23 +57,22 @@ const OxyRouter = ({
|
|
|
31
57
|
}
|
|
32
58
|
}, [currentScreen, adjustSnapPoints]);
|
|
33
59
|
|
|
34
|
-
// Memoized navigation methods
|
|
60
|
+
// Memoized navigation methods with validation
|
|
35
61
|
const navigate = useCallback((screen, props = {}) => {
|
|
36
62
|
if (__DEV__) console.log('OxyRouter: navigate called', screen, props);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
setScreenPropsMap(prev => ({
|
|
42
|
-
...prev,
|
|
43
|
-
[screen]: props
|
|
44
|
-
}));
|
|
45
|
-
} else {
|
|
46
|
-
console.error(`OxyRouter: Screen "${screen}" not found in routes:`, Object.keys(routes));
|
|
47
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
48
|
-
console.error(`Screen "${screen}" not found`);
|
|
49
|
-
}
|
|
63
|
+
|
|
64
|
+
// Validate route before navigating
|
|
65
|
+
if (!validateAndNavigate(screen, props, setCurrentScreen, setScreenHistory, setScreenPropsMap)) {
|
|
66
|
+
return; // Early return if validation fails
|
|
50
67
|
}
|
|
68
|
+
|
|
69
|
+
// All validations passed, proceed with navigation
|
|
70
|
+
setCurrentScreen(screen);
|
|
71
|
+
setScreenHistory(prev => [...prev, screen]);
|
|
72
|
+
setScreenPropsMap(prev => ({
|
|
73
|
+
...prev,
|
|
74
|
+
[screen]: props
|
|
75
|
+
}));
|
|
51
76
|
}, []);
|
|
52
77
|
const goBack = useCallback(() => {
|
|
53
78
|
setScreenHistory(prev => {
|
|
@@ -83,13 +108,23 @@ const OxyRouter = ({
|
|
|
83
108
|
const handleNavigationEvent = event => {
|
|
84
109
|
if (event && event.detail) {
|
|
85
110
|
if (typeof event.detail === 'string') {
|
|
86
|
-
|
|
111
|
+
// Validate string route name before navigating
|
|
112
|
+
if (isValidRouteName(event.detail)) {
|
|
113
|
+
navigate(event.detail);
|
|
114
|
+
} else {
|
|
115
|
+
console.error('OxyRouter: Invalid route name in event:', event.detail);
|
|
116
|
+
}
|
|
87
117
|
} else if (typeof event.detail === 'object' && event.detail.screen) {
|
|
88
118
|
const {
|
|
89
119
|
screen,
|
|
90
120
|
props
|
|
91
121
|
} = event.detail;
|
|
92
|
-
|
|
122
|
+
// Validate route name before navigating
|
|
123
|
+
if (isValidRouteName(screen)) {
|
|
124
|
+
navigate(screen, props || {});
|
|
125
|
+
} else {
|
|
126
|
+
console.error('OxyRouter: Invalid route name in event:', screen);
|
|
127
|
+
}
|
|
93
128
|
}
|
|
94
129
|
}
|
|
95
130
|
};
|
|
@@ -100,8 +135,14 @@ const OxyRouter = ({
|
|
|
100
135
|
intervalId = setInterval(() => {
|
|
101
136
|
const globalNav = globalThis.oxyNavigateEvent;
|
|
102
137
|
if (globalNav && globalNav.screen) {
|
|
103
|
-
|
|
104
|
-
|
|
138
|
+
// Validate route name before navigating
|
|
139
|
+
if (isValidRouteName(globalNav.screen)) {
|
|
140
|
+
navigate(globalNav.screen, globalNav.props || {});
|
|
141
|
+
globalThis.oxyNavigateEvent = null;
|
|
142
|
+
} else {
|
|
143
|
+
console.error('OxyRouter: Invalid route name in global event:', globalNav.screen);
|
|
144
|
+
globalThis.oxyNavigateEvent = null; // Clear invalid event
|
|
145
|
+
}
|
|
105
146
|
}
|
|
106
147
|
}, 100);
|
|
107
148
|
}
|
|
@@ -115,7 +156,7 @@ const OxyRouter = ({
|
|
|
115
156
|
};
|
|
116
157
|
}, [navigate]);
|
|
117
158
|
|
|
118
|
-
// Render the current screen component
|
|
159
|
+
// Render the current screen component with error boundary
|
|
119
160
|
const renderScreen = () => {
|
|
120
161
|
const CurrentScreen = routes[currentScreen]?.component;
|
|
121
162
|
if (!CurrentScreen) {
|
|
@@ -126,15 +167,20 @@ const OxyRouter = ({
|
|
|
126
167
|
style: styles.errorContainer
|
|
127
168
|
});
|
|
128
169
|
}
|
|
129
|
-
return /*#__PURE__*/_jsx(
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
170
|
+
return /*#__PURE__*/_jsx(ErrorBoundary, {
|
|
171
|
+
onError: (error, errorInfo) => {
|
|
172
|
+
console.error(`Error in screen "${currentScreen}":`, error, errorInfo);
|
|
173
|
+
},
|
|
174
|
+
children: /*#__PURE__*/_jsx(CurrentScreen, {
|
|
175
|
+
oxyServices: oxyServices,
|
|
176
|
+
navigate: navigate,
|
|
177
|
+
goBack: goBack,
|
|
178
|
+
onClose: onClose,
|
|
179
|
+
onAuthenticated: onAuthenticated,
|
|
180
|
+
theme: theme,
|
|
181
|
+
containerWidth: containerWidth,
|
|
182
|
+
...(screenPropsMap[currentScreen] || {})
|
|
183
|
+
})
|
|
138
184
|
});
|
|
139
185
|
};
|
|
140
186
|
return /*#__PURE__*/_jsx(View, {
|
|
@@ -142,6 +188,9 @@ const OxyRouter = ({
|
|
|
142
188
|
children: renderScreen()
|
|
143
189
|
});
|
|
144
190
|
};
|
|
191
|
+
|
|
192
|
+
// Memoize the router component to prevent unnecessary re-renders
|
|
193
|
+
const MemoizedOxyRouter = /*#__PURE__*/memo(OxyRouter);
|
|
145
194
|
const styles = StyleSheet.create({
|
|
146
195
|
container: {
|
|
147
196
|
flex: 1
|
|
@@ -153,5 +202,8 @@ const styles = StyleSheet.create({
|
|
|
153
202
|
minHeight: 100
|
|
154
203
|
}
|
|
155
204
|
});
|
|
156
|
-
|
|
205
|
+
|
|
206
|
+
// Export both the memoized version (default) and the original for testing
|
|
207
|
+
export { OxyRouter };
|
|
208
|
+
export default MemoizedOxyRouter;
|
|
157
209
|
//# sourceMappingURL=OxyRouter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useEffect","useCallback","View","StyleSheet","routes","jsx","_jsx","
|
|
1
|
+
{"version":3,"names":["useState","useEffect","useCallback","memo","View","StyleSheet","ErrorBoundary","routes","routeNames","jsx","_jsx","isValidRouteName","screen","includes","validateAndNavigate","props","setCurrentScreen","setScreenHistory","setScreenPropsMap","errorMsg","join","console","error","process","env","NODE_ENV","OxyRouter","oxyServices","initialScreen","onClose","onAuthenticated","theme","adjustSnapPoints","navigationRef","containerWidth","currentScreen","screenHistory","screenPropsMap","snapPoints","navigate","__DEV__","log","prev","goBack","length","newHistory","pop","previousScreen","current","handleNavigationEvent","event","detail","intervalId","document","addEventListener","setInterval","globalNav","globalThis","oxyNavigateEvent","removeEventListener","clearInterval","renderScreen","CurrentScreen","component","style","styles","errorContainer","onError","errorInfo","children","container","MemoizedOxyRouter","create","flex","justifyContent","alignItems","minHeight"],"sourceRoot":"../../../../src","sources":["ui/navigation/OxyRouter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { View, Text, StyleSheet, ActivityIndicator, ScrollView, Platform } from 'react-native';
|
|
4
|
+
import { useCallback, useMemo } from 'react';
|
|
4
5
|
import { useOxy } from '../context/OxyContext';
|
|
5
6
|
import { packageInfo } from '../../constants/version';
|
|
6
7
|
import { toast } from '../../lib/sonner';
|
|
@@ -35,7 +36,9 @@ const AccountCenterScreen = ({
|
|
|
35
36
|
const borderColor = isDarkTheme ? '#444444' : '#E0E0E0';
|
|
36
37
|
const primaryColor = '#0066CC';
|
|
37
38
|
const dangerColor = '#D32F2F';
|
|
38
|
-
|
|
39
|
+
|
|
40
|
+
// Memoized logout handler - prevents unnecessary re-renders
|
|
41
|
+
const handleLogout = useCallback(async () => {
|
|
39
42
|
try {
|
|
40
43
|
await logout();
|
|
41
44
|
if (onClose) {
|
|
@@ -45,10 +48,12 @@ const AccountCenterScreen = ({
|
|
|
45
48
|
console.error('Logout failed:', error);
|
|
46
49
|
toast.error(t('common.errors.signOutFailed') || 'There was a problem signing you out. Please try again.');
|
|
47
50
|
}
|
|
48
|
-
};
|
|
49
|
-
|
|
51
|
+
}, [logout, onClose, t]);
|
|
52
|
+
|
|
53
|
+
// Memoized confirm logout handler - prevents unnecessary re-renders
|
|
54
|
+
const confirmLogout = useCallback(() => {
|
|
50
55
|
confirmAction(t('common.confirms.signOut') || 'Are you sure you want to sign out?', handleLogout);
|
|
51
|
-
};
|
|
56
|
+
}, [handleLogout, t]);
|
|
52
57
|
if (!isAuthenticated) {
|
|
53
58
|
return /*#__PURE__*/_jsx(View, {
|
|
54
59
|
style: [styles.container, {
|
|
@@ -95,7 +100,7 @@ const AccountCenterScreen = ({
|
|
|
95
100
|
theme: theme,
|
|
96
101
|
isFirst: true,
|
|
97
102
|
children: /*#__PURE__*/_jsx(QuickActions, {
|
|
98
|
-
actions: [{
|
|
103
|
+
actions: useMemo(() => [{
|
|
99
104
|
id: 'overview',
|
|
100
105
|
icon: 'person-circle',
|
|
101
106
|
iconColor: '#007AFF',
|
|
@@ -131,14 +136,14 @@ const AccountCenterScreen = ({
|
|
|
131
136
|
iconColor: '#FF9500',
|
|
132
137
|
title: t('accountCenter.quickActions.switch') || 'Switch',
|
|
133
138
|
onPress: () => navigate('AccountSwitcher')
|
|
134
|
-
}] : [])],
|
|
139
|
+
}] : [])], [user?.isPremium, sessions, navigate, t]),
|
|
135
140
|
theme: theme
|
|
136
141
|
})
|
|
137
142
|
}), /*#__PURE__*/_jsx(Section, {
|
|
138
143
|
title: t('accountCenter.sections.accountManagement') || 'Account Management',
|
|
139
144
|
theme: theme,
|
|
140
145
|
children: /*#__PURE__*/_jsx(GroupedSection, {
|
|
141
|
-
items: [{
|
|
146
|
+
items: useMemo(() => [{
|
|
142
147
|
id: 'overview',
|
|
143
148
|
icon: 'person-circle',
|
|
144
149
|
iconColor: '#007AFF',
|
|
@@ -180,14 +185,14 @@ const AccountCenterScreen = ({
|
|
|
180
185
|
title: t('accountCenter.items.billing.title') || 'Billing Management',
|
|
181
186
|
subtitle: t('accountCenter.items.billing.subtitle') || 'Payment methods and invoices',
|
|
182
187
|
onPress: () => navigate('PaymentGateway')
|
|
183
|
-
}] : [])],
|
|
188
|
+
}] : [])], [user?.isPremium, navigate, t]),
|
|
184
189
|
theme: theme
|
|
185
190
|
})
|
|
186
191
|
}), sessions && sessions.length > 1 && /*#__PURE__*/_jsx(Section, {
|
|
187
192
|
title: t('accountCenter.sections.multiAccount') || 'Multi-Account',
|
|
188
193
|
theme: theme,
|
|
189
194
|
children: /*#__PURE__*/_jsx(GroupedSection, {
|
|
190
|
-
items: [{
|
|
195
|
+
items: useMemo(() => [{
|
|
191
196
|
id: 'switch',
|
|
192
197
|
icon: 'people',
|
|
193
198
|
iconColor: '#FF9500',
|
|
@@ -203,28 +208,28 @@ const AccountCenterScreen = ({
|
|
|
203
208
|
title: t('accountCenter.items.addAccount.title') || 'Add Another Account',
|
|
204
209
|
subtitle: t('accountCenter.items.addAccount.subtitle') || 'Sign in with a different account',
|
|
205
210
|
onPress: () => navigate('SignIn')
|
|
206
|
-
}],
|
|
211
|
+
}], [sessions.length, navigate, t]),
|
|
207
212
|
theme: theme
|
|
208
213
|
})
|
|
209
214
|
}), (!sessions || sessions.length <= 1) && /*#__PURE__*/_jsx(Section, {
|
|
210
215
|
title: t('accountCenter.sections.addAccount') || 'Add Account',
|
|
211
216
|
theme: theme,
|
|
212
217
|
children: /*#__PURE__*/_jsx(GroupedSection, {
|
|
213
|
-
items: [{
|
|
218
|
+
items: useMemo(() => [{
|
|
214
219
|
id: 'add',
|
|
215
220
|
icon: 'person-add',
|
|
216
221
|
iconColor: '#30D158',
|
|
217
222
|
title: t('accountCenter.items.addAccount.title') || 'Add Another Account',
|
|
218
223
|
subtitle: t('accountCenter.items.addAccount.subtitle') || 'Sign in with a different account',
|
|
219
224
|
onPress: () => navigate('SignIn')
|
|
220
|
-
}],
|
|
225
|
+
}], [navigate, t]),
|
|
221
226
|
theme: theme
|
|
222
227
|
})
|
|
223
228
|
}), /*#__PURE__*/_jsx(Section, {
|
|
224
229
|
title: t('accountCenter.sections.moreOptions') || 'More Options',
|
|
225
230
|
theme: theme,
|
|
226
231
|
children: /*#__PURE__*/_jsx(GroupedSection, {
|
|
227
|
-
items: [...(Platform.OS !== 'web' ? [{
|
|
232
|
+
items: useMemo(() => [...(Platform.OS !== 'web' ? [{
|
|
228
233
|
id: 'notifications',
|
|
229
234
|
icon: 'notifications',
|
|
230
235
|
iconColor: '#FF9500',
|
|
@@ -252,7 +257,7 @@ const AccountCenterScreen = ({
|
|
|
252
257
|
title: t('accountCenter.items.appInfo.title') || 'App Information',
|
|
253
258
|
subtitle: t('accountCenter.items.appInfo.subtitle') || 'Version and system details',
|
|
254
259
|
onPress: () => navigate('AppInfo')
|
|
255
|
-
}],
|
|
260
|
+
}], [navigate, t]),
|
|
256
261
|
theme: theme
|
|
257
262
|
})
|
|
258
263
|
}), /*#__PURE__*/_jsx(Section, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","Text","StyleSheet","ActivityIndicator","ScrollView","Platform","useOxy","packageInfo","toast","confirmAction","fontFamilies","ProfileCard","Section","QuickActions","GroupedSection","GroupedItem","useI18n","jsx","_jsx","jsxs","_jsxs","AccountCenterScreen","onClose","theme","navigate","user","logout","isLoading","sessions","isAuthenticated","t","isDarkTheme","textColor","backgroundColor","secondaryBackgroundColor","borderColor","primaryColor","dangerColor","handleLogout","error","console","confirmLogout","style","styles","container","children","message","color","justifyContent","size","onEditPress","activeTab","onClosePress","showCloseButton","scrollView","contentContainerStyle","scrollContainer","showsVerticalScrollIndicator","title","isFirst","actions","id","icon","iconColor","onPress","isPremium","length","items","subtitle","count","OS","info","isLast","showChevron","disabled","customContent","marginRight","versionContainer","versionText","version","create","flex","padding","paddingBottom","alignItems","marginTop","marginBottom","fontSize","fontFamily","phudu","textAlign"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountCenterScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["View","Text","StyleSheet","ActivityIndicator","ScrollView","Platform","useCallback","useMemo","useOxy","packageInfo","toast","confirmAction","fontFamilies","ProfileCard","Section","QuickActions","GroupedSection","GroupedItem","useI18n","jsx","_jsx","jsxs","_jsxs","AccountCenterScreen","onClose","theme","navigate","user","logout","isLoading","sessions","isAuthenticated","t","isDarkTheme","textColor","backgroundColor","secondaryBackgroundColor","borderColor","primaryColor","dangerColor","handleLogout","error","console","confirmLogout","style","styles","container","children","message","color","justifyContent","size","onEditPress","activeTab","onClosePress","showCloseButton","scrollView","contentContainerStyle","scrollContainer","showsVerticalScrollIndicator","title","isFirst","actions","id","icon","iconColor","onPress","isPremium","length","items","subtitle","count","OS","info","isLast","showChevron","disabled","customContent","marginRight","versionContainer","versionText","version","create","flex","padding","paddingBottom","alignItems","marginTop","marginBottom","fontSize","fontFamily","phudu","textAlign"],"sourceRoot":"../../../../src","sources":["ui/screens/AccountCenterScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useState, useEffect } from 'react';
|
|
3
|
+
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
4
4
|
import { View, Text, TouchableOpacity, StyleSheet, ScrollView, ActivityIndicator, Alert, Platform, RefreshControl } from 'react-native';
|
|
5
5
|
import { useOxy } from '../context/OxyContext';
|
|
6
6
|
import { toast } from '../../lib/sonner';
|
|
@@ -33,7 +33,9 @@ const SessionManagementScreen = ({
|
|
|
33
33
|
const primaryColor = '#0066CC';
|
|
34
34
|
const dangerColor = '#D32F2F';
|
|
35
35
|
const successColor = '#2E7D32';
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
// Memoized load sessions function - prevents unnecessary re-renders
|
|
38
|
+
const loadSessions = useCallback(async (isRefresh = false) => {
|
|
37
39
|
try {
|
|
38
40
|
if (isRefresh) {
|
|
39
41
|
setRefreshing(true);
|
|
@@ -55,8 +57,10 @@ const SessionManagementScreen = ({
|
|
|
55
57
|
setLoading(false);
|
|
56
58
|
setRefreshing(false);
|
|
57
59
|
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
+
}, [refreshSessions]);
|
|
61
|
+
|
|
62
|
+
// Memoized logout session handler - prevents unnecessary re-renders
|
|
63
|
+
const handleLogoutSession = useCallback(async sessionId => {
|
|
60
64
|
confirmAction('Are you sure you want to logout this session?', async () => {
|
|
61
65
|
try {
|
|
62
66
|
setActionLoading(sessionId);
|
|
@@ -70,8 +74,10 @@ const SessionManagementScreen = ({
|
|
|
70
74
|
setActionLoading(null);
|
|
71
75
|
}
|
|
72
76
|
});
|
|
73
|
-
};
|
|
74
|
-
|
|
77
|
+
}, [logout, refreshSessions]);
|
|
78
|
+
|
|
79
|
+
// Memoized logout other sessions handler - prevents unnecessary re-renders
|
|
80
|
+
const handleLogoutOtherSessions = useCallback(async () => {
|
|
75
81
|
const otherSessionsCount = userSessions.filter(s => s.sessionId !== activeSessionId).length;
|
|
76
82
|
if (otherSessionsCount === 0) {
|
|
77
83
|
toast.info('No other sessions to logout.');
|
|
@@ -94,8 +100,10 @@ const SessionManagementScreen = ({
|
|
|
94
100
|
setActionLoading(null);
|
|
95
101
|
}
|
|
96
102
|
});
|
|
97
|
-
};
|
|
98
|
-
|
|
103
|
+
}, [userSessions, activeSessionId, logout, refreshSessions]);
|
|
104
|
+
|
|
105
|
+
// Memoized logout all sessions handler - prevents unnecessary re-renders
|
|
106
|
+
const handleLogoutAllSessions = useCallback(async () => {
|
|
99
107
|
confirmAction('This will logout all sessions including this one and you will need to sign in again. Continue?', async () => {
|
|
100
108
|
try {
|
|
101
109
|
setActionLoading('all');
|
|
@@ -106,10 +114,10 @@ const SessionManagementScreen = ({
|
|
|
106
114
|
setActionLoading(null);
|
|
107
115
|
}
|
|
108
116
|
});
|
|
109
|
-
};
|
|
117
|
+
}, [logoutAll]);
|
|
110
118
|
|
|
111
|
-
//
|
|
112
|
-
const formatRelative = dateString => {
|
|
119
|
+
// Memoized relative time formatter - prevents function recreation on every render
|
|
120
|
+
const formatRelative = useCallback(dateString => {
|
|
113
121
|
if (!dateString) return 'Unknown';
|
|
114
122
|
const date = new Date(dateString);
|
|
115
123
|
const now = new Date();
|
|
@@ -124,8 +132,10 @@ const SessionManagementScreen = ({
|
|
|
124
132
|
const days = hrs / 24;
|
|
125
133
|
if (days < 7) return isFuture ? `in ${fmt(days)}d` : `${fmt(days)}d ago`;
|
|
126
134
|
return date.toLocaleDateString();
|
|
127
|
-
};
|
|
128
|
-
|
|
135
|
+
}, []);
|
|
136
|
+
|
|
137
|
+
// Memoized switch session handler - prevents unnecessary re-renders
|
|
138
|
+
const handleSwitchSession = useCallback(async sessionId => {
|
|
129
139
|
if (sessionId === activeSessionId) return;
|
|
130
140
|
setSwitchLoading(sessionId);
|
|
131
141
|
try {
|
|
@@ -137,10 +147,10 @@ const SessionManagementScreen = ({
|
|
|
137
147
|
} finally {
|
|
138
148
|
setSwitchLoading(null);
|
|
139
149
|
}
|
|
140
|
-
};
|
|
150
|
+
}, [activeSessionId, switchSession]);
|
|
141
151
|
useEffect(() => {
|
|
142
152
|
loadSessions();
|
|
143
|
-
}, []);
|
|
153
|
+
}, [loadSessions]);
|
|
144
154
|
if (loading) {
|
|
145
155
|
return /*#__PURE__*/_jsxs(View, {
|
|
146
156
|
style: [styles.container, styles.centerContent, {
|
|
@@ -158,84 +168,87 @@ const SessionManagementScreen = ({
|
|
|
158
168
|
});
|
|
159
169
|
}
|
|
160
170
|
|
|
161
|
-
//
|
|
162
|
-
const sessionItems =
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}) : /*#__PURE__*/_jsx(Text, {
|
|
189
|
-
style: [styles.sessionPillText, {
|
|
171
|
+
// Memoized session items - prevents unnecessary re-renders when dependencies haven't changed
|
|
172
|
+
const sessionItems = useMemo(() => {
|
|
173
|
+
return userSessions.map(session => {
|
|
174
|
+
const isCurrent = session.sessionId === activeSessionId;
|
|
175
|
+
const subtitleParts = [];
|
|
176
|
+
if (session.deviceId) subtitleParts.push(`Device ${session.deviceId.substring(0, 10)}...`);
|
|
177
|
+
subtitleParts.push(`Last ${formatRelative(session.lastActive)}`);
|
|
178
|
+
subtitleParts.push(`Expires ${formatRelative(session.expiresAt)}`);
|
|
179
|
+
return {
|
|
180
|
+
id: session.sessionId,
|
|
181
|
+
icon: isCurrent ? 'shield-checkmark' : 'laptop-outline',
|
|
182
|
+
iconColor: isCurrent ? successColor : primaryColor,
|
|
183
|
+
title: isCurrent ? 'Current Session' : `Session ${session.sessionId.substring(0, 8)}...`,
|
|
184
|
+
subtitle: subtitleParts.join(' \u2022 '),
|
|
185
|
+
showChevron: false,
|
|
186
|
+
multiRow: true,
|
|
187
|
+
customContentBelow: !isCurrent ? /*#__PURE__*/_jsxs(View, {
|
|
188
|
+
style: styles.sessionActionsRow,
|
|
189
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
190
|
+
onPress: () => handleSwitchSession(session.sessionId),
|
|
191
|
+
style: [styles.sessionPillButton, {
|
|
192
|
+
backgroundColor: isDarkTheme ? '#1E2A38' : '#E6F2FF',
|
|
193
|
+
borderColor: primaryColor
|
|
194
|
+
}],
|
|
195
|
+
disabled: switchLoading === session.sessionId || actionLoading === session.sessionId,
|
|
196
|
+
children: switchLoading === session.sessionId ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
197
|
+
size: "small",
|
|
190
198
|
color: primaryColor
|
|
199
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
200
|
+
style: [styles.sessionPillText, {
|
|
201
|
+
color: primaryColor
|
|
202
|
+
}],
|
|
203
|
+
children: "Switch"
|
|
204
|
+
})
|
|
205
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
206
|
+
onPress: () => handleLogoutSession(session.sessionId),
|
|
207
|
+
style: [styles.sessionPillButton, {
|
|
208
|
+
backgroundColor: isDarkTheme ? '#3A1E1E' : '#FFEBEE',
|
|
209
|
+
borderColor: dangerColor
|
|
191
210
|
}],
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
onPress: () => handleLogoutSession(session.sessionId),
|
|
196
|
-
style: [styles.sessionPillButton, {
|
|
197
|
-
backgroundColor: isDarkTheme ? '#3A1E1E' : '#FFEBEE',
|
|
198
|
-
borderColor: dangerColor
|
|
199
|
-
}],
|
|
200
|
-
disabled: actionLoading === session.sessionId || switchLoading === session.sessionId,
|
|
201
|
-
children: actionLoading === session.sessionId ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
202
|
-
size: "small",
|
|
203
|
-
color: dangerColor
|
|
204
|
-
}) : /*#__PURE__*/_jsx(Text, {
|
|
205
|
-
style: [styles.sessionPillText, {
|
|
211
|
+
disabled: actionLoading === session.sessionId || switchLoading === session.sessionId,
|
|
212
|
+
children: actionLoading === session.sessionId ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
213
|
+
size: "small",
|
|
206
214
|
color: dangerColor
|
|
215
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
216
|
+
style: [styles.sessionPillText, {
|
|
217
|
+
color: dangerColor
|
|
218
|
+
}],
|
|
219
|
+
children: "Logout"
|
|
220
|
+
})
|
|
221
|
+
})]
|
|
222
|
+
}) : /*#__PURE__*/_jsx(View, {
|
|
223
|
+
style: styles.sessionActionsRow,
|
|
224
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
225
|
+
style: [styles.currentBadgeText, {
|
|
226
|
+
color: successColor
|
|
207
227
|
}],
|
|
208
|
-
children: "
|
|
228
|
+
children: "Active"
|
|
209
229
|
})
|
|
210
|
-
})
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}],
|
|
217
|
-
children: "Active"
|
|
218
|
-
})
|
|
219
|
-
}),
|
|
220
|
-
selected: isCurrent,
|
|
221
|
-
dense: true
|
|
222
|
-
};
|
|
223
|
-
});
|
|
230
|
+
}),
|
|
231
|
+
selected: isCurrent,
|
|
232
|
+
dense: true
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
}, [userSessions, activeSessionId, formatRelative, successColor, primaryColor, isDarkTheme, switchLoading, actionLoading, handleSwitchSession, handleLogoutSession, dangerColor]);
|
|
224
236
|
|
|
225
|
-
//
|
|
226
|
-
const
|
|
237
|
+
// Memoized bulk action items - prevents unnecessary re-renders when dependencies haven't changed
|
|
238
|
+
const otherSessionsCount = useMemo(() => userSessions.filter(s => s.sessionId !== activeSessionId).length, [userSessions, activeSessionId]);
|
|
239
|
+
const bulkItems = useMemo(() => [{
|
|
227
240
|
id: 'logout-others',
|
|
228
241
|
icon: 'exit-outline',
|
|
229
242
|
iconColor: primaryColor,
|
|
230
243
|
title: 'Logout Other Sessions',
|
|
231
|
-
subtitle:
|
|
244
|
+
subtitle: otherSessionsCount === 0 ? 'No other sessions' : 'End all sessions except this one',
|
|
232
245
|
onPress: handleLogoutOtherSessions,
|
|
233
246
|
showChevron: false,
|
|
234
247
|
customContent: actionLoading === 'others' ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
235
248
|
size: "small",
|
|
236
249
|
color: primaryColor
|
|
237
250
|
}) : undefined,
|
|
238
|
-
disabled: actionLoading === 'others' ||
|
|
251
|
+
disabled: actionLoading === 'others' || otherSessionsCount === 0,
|
|
239
252
|
dense: true
|
|
240
253
|
}, {
|
|
241
254
|
id: 'logout-all',
|
|
@@ -251,7 +264,7 @@ const SessionManagementScreen = ({
|
|
|
251
264
|
}) : undefined,
|
|
252
265
|
disabled: actionLoading === 'all',
|
|
253
266
|
dense: true
|
|
254
|
-
}];
|
|
267
|
+
}], [otherSessionsCount, primaryColor, dangerColor, handleLogoutOtherSessions, handleLogoutAllSessions, actionLoading]);
|
|
255
268
|
return /*#__PURE__*/_jsxs(View, {
|
|
256
269
|
style: [styles.container, {
|
|
257
270
|
backgroundColor
|