@umituz/react-native-localization 3.7.23 → 3.7.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/package.json
CHANGED
|
@@ -18,6 +18,8 @@ let initializeInProgress = false;
|
|
|
18
18
|
// Debounce timer for language switching
|
|
19
19
|
let languageSwitchTimer: ReturnType<typeof setTimeout> | null = null;
|
|
20
20
|
const LANGUAGE_SWITCH_DEBOUNCE_MS = 300;
|
|
21
|
+
// Track pending promise resolvers to ensure all get resolved
|
|
22
|
+
let pendingResolvers: Array<() => void> = [];
|
|
21
23
|
|
|
22
24
|
export const useLocalizationStore = create<LocalizationStoreType>((set, get) => ({
|
|
23
25
|
// State
|
|
@@ -65,6 +67,9 @@ export const useLocalizationStore = create<LocalizationStoreType>((set, get) =>
|
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
return new Promise<void>((resolve) => {
|
|
70
|
+
// Add this resolver to pending list
|
|
71
|
+
pendingResolvers.push(resolve);
|
|
72
|
+
|
|
68
73
|
languageSwitchTimer = setTimeout(async () => {
|
|
69
74
|
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
70
75
|
console.log('[LocalizationStore] setLanguage called:', languageCode);
|
|
@@ -92,12 +97,28 @@ export const useLocalizationStore = create<LocalizationStoreType>((set, get) =>
|
|
|
92
97
|
}
|
|
93
98
|
|
|
94
99
|
languageSwitchTimer = null;
|
|
95
|
-
|
|
100
|
+
|
|
101
|
+
// Resolve ALL pending promises (not just the latest)
|
|
102
|
+
const resolvers = [...pendingResolvers];
|
|
103
|
+
pendingResolvers = [];
|
|
104
|
+
resolvers.forEach(r => r());
|
|
96
105
|
}, LANGUAGE_SWITCH_DEBOUNCE_MS);
|
|
97
106
|
});
|
|
98
107
|
},
|
|
99
108
|
|
|
100
109
|
reset: () => {
|
|
110
|
+
// Clear any pending language switch
|
|
111
|
+
if (languageSwitchTimer) {
|
|
112
|
+
clearTimeout(languageSwitchTimer);
|
|
113
|
+
languageSwitchTimer = null;
|
|
114
|
+
}
|
|
115
|
+
// Resolve any pending promises to prevent hanging
|
|
116
|
+
const resolvers = [...pendingResolvers];
|
|
117
|
+
pendingResolvers = [];
|
|
118
|
+
resolvers.forEach(r => r());
|
|
119
|
+
// Reset mutex
|
|
120
|
+
initializeInProgress = false;
|
|
121
|
+
|
|
101
122
|
set({
|
|
102
123
|
currentLanguage: 'en-US',
|
|
103
124
|
isRTL: false,
|