@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-localization",
3
- "version": "3.7.23",
3
+ "version": "3.7.24",
4
4
  "type": "module",
5
5
  "description": "Generic localization system for React Native apps with i18n support",
6
6
  "main": "./src/index.ts",
@@ -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
- resolve();
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,