@react-pakistan/util-functions 1.25.48 → 1.25.50
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/api/stellar-solutions/app-user/index.d.ts +1 -1
- package/api/stellar-solutions/bank/index.d.ts +1 -1
- package/api/stellar-solutions/branch/index.d.ts +1 -1
- package/api/stellar-solutions/company/index.d.ts +1 -1
- package/api/stellar-solutions/company-report/index.d.ts +1 -1
- package/api/stellar-solutions/contact/index.d.ts +1 -1
- package/api/stellar-solutions/currency/index.d.ts +1 -1
- package/api/stellar-solutions/customer/index.d.ts +1 -1
- package/api/stellar-solutions/expense/index.d.ts +1 -1
- package/api/stellar-solutions/expense-category/index.d.ts +1 -1
- package/api/stellar-solutions/lead/index.d.ts +1 -1
- package/api/stellar-solutions/menu-order/index.d.ts +1 -1
- package/api/stellar-solutions/payment/index.d.ts +1 -1
- package/api/stellar-solutions/payment/index.js +2 -2
- package/api/stellar-solutions/payment-mode/index.d.ts +1 -1
- package/api/stellar-solutions/preference/index.d.ts +1 -1
- package/api/stellar-solutions/product/index.d.ts +1 -1
- package/api/stellar-solutions/product-category/index.d.ts +1 -1
- package/api/stellar-solutions/profile/index.d.ts +1 -1
- package/api/stellar-solutions/quote-invoice/index.d.ts +1 -1
- package/api/stellar-solutions/quote-invoice-report/index.d.ts +1 -1
- package/api/stellar-solutions/tax/index.d.ts +1 -1
- package/api/stellar-solutions/types/common.d.ts +24 -0
- package/api/stellar-solutions/types/common.js +22 -0
- package/api/stellar-solutions/{type.d.ts → types/erp.d.ts} +1 -199
- package/api/stellar-solutions/types/erp.js +68 -0
- package/api/stellar-solutions/types/index.d.ts +3 -0
- package/api/stellar-solutions/types/index.js +19 -0
- package/api/stellar-solutions/types/pos.d.ts +176 -0
- package/api/stellar-solutions/types/pos.js +61 -0
- package/general/index.d.ts +0 -1
- package/general/index.js +0 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/api/stellar-solutions/bank/cache.d.ts +0 -0
- package/api/stellar-solutions/bank/cache.js +0 -237
- package/api/stellar-solutions/branch/cache.d.ts +0 -0
- package/api/stellar-solutions/branch/cache.js +0 -241
- package/api/stellar-solutions/company/cache.d.ts +0 -0
- package/api/stellar-solutions/company/cache.js +0 -247
- package/api/stellar-solutions/contact/cache.d.ts +0 -0
- package/api/stellar-solutions/contact/cache.js +0 -247
- package/api/stellar-solutions/currency/cache.d.ts +0 -0
- package/api/stellar-solutions/currency/cache.js +0 -243
- package/api/stellar-solutions/customer/cache.d.ts +0 -0
- package/api/stellar-solutions/customer/cache.js +0 -249
- package/api/stellar-solutions/expense/cache.d.ts +0 -0
- package/api/stellar-solutions/expense/cache.js +0 -247
- package/api/stellar-solutions/expense-category/cache.d.ts +0 -0
- package/api/stellar-solutions/expense-category/cache.js +0 -224
- package/api/stellar-solutions/payment-mode/cache.d.ts +0 -0
- package/api/stellar-solutions/payment-mode/cache.js +0 -245
- package/api/stellar-solutions/preference/cache.d.ts +0 -0
- package/api/stellar-solutions/preference/cache.js +0 -218
- package/api/stellar-solutions/product/cache.d.ts +0 -0
- package/api/stellar-solutions/product/cache.js +0 -222
- package/api/stellar-solutions/product-category/cache.d.ts +0 -0
- package/api/stellar-solutions/product-category/cache.js +0 -224
- package/api/stellar-solutions/tax/cache.d.ts +0 -0
- package/api/stellar-solutions/tax/cache.js +0 -235
- package/api/stellar-solutions/type.js +0 -142
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
// import { API_ROUTES } from '../constants';
|
|
2
|
-
// import { ExpenseCategoryBE, LS_KEYS } from '../type';
|
|
3
|
-
// import { API_METHODS } from '../../../constants/api-methods';
|
|
4
|
-
// import { fetchData } from '../../../general/fetch-data';
|
|
5
|
-
// import { getStorageValue } from '../../../local-storage/get-storage-value';
|
|
6
|
-
// import { setStorageValue } from '../../../local-storage/set-storage-value';
|
|
7
|
-
// import { ONE_DAY_IN_MS } from '../../../constants';
|
|
8
|
-
// interface CachedExpenseCategories {
|
|
9
|
-
// expenseCategories: ExpenseCategoryBE[];
|
|
10
|
-
// cachedAt: string;
|
|
11
|
-
// }
|
|
12
|
-
// /**
|
|
13
|
-
// * Synchronous utility function to get expense categories from cache only
|
|
14
|
-
// * Returns cached data immediately if available and fresh, otherwise returns empty array
|
|
15
|
-
// * Does not trigger any API calls
|
|
16
|
-
// *
|
|
17
|
-
// * @returns ExpenseCategoryBE[] - Array of cached expense categories or empty array wrapper ({count, items})
|
|
18
|
-
// *
|
|
19
|
-
// * @example
|
|
20
|
-
// * const expenseCategories = getCachedExpenseCategoriesSync();
|
|
21
|
-
// * if (expenseCategories.items.length > 0) {
|
|
22
|
-
// * console.log(expenseCategories.items[0].name);
|
|
23
|
-
// * }
|
|
24
|
-
// */
|
|
25
|
-
// export const getCachedExpenseCategoriesSync = (): {
|
|
26
|
-
// count: number;
|
|
27
|
-
// items: ExpenseCategoryBE[];
|
|
28
|
-
// } => {
|
|
29
|
-
// try {
|
|
30
|
-
// const cachedData = getStorageValue(
|
|
31
|
-
// LS_KEYS.EXPENSE_CATEGORIES
|
|
32
|
-
// ) as CachedExpenseCategories | null;
|
|
33
|
-
// if (!cachedData) {
|
|
34
|
-
// return { count: 0, items: [] };
|
|
35
|
-
// }
|
|
36
|
-
// const currentTime = new Date().getTime();
|
|
37
|
-
// const cachedTime = new Date(cachedData.cachedAt).getTime();
|
|
38
|
-
// const ageInMs = currentTime - cachedTime;
|
|
39
|
-
// // If cached data is less than 1 day old, return it
|
|
40
|
-
// if (ageInMs < ONE_DAY_IN_MS) {
|
|
41
|
-
// return {
|
|
42
|
-
// count: cachedData.expenseCategories.length,
|
|
43
|
-
// items: cachedData.expenseCategories,
|
|
44
|
-
// };
|
|
45
|
-
// }
|
|
46
|
-
// return { count: 0, items: [] };
|
|
47
|
-
// } catch (error) {
|
|
48
|
-
// console.error('Error getting cached expense categories:', error);
|
|
49
|
-
// return { count: 0, items: [] };
|
|
50
|
-
// }
|
|
51
|
-
// };
|
|
52
|
-
// /**
|
|
53
|
-
// * Utility function to get expense categories from cache or fetch from API
|
|
54
|
-
// *
|
|
55
|
-
// * This function manages a localStorage cache of expense categories with the following logic:
|
|
56
|
-
// * - If expense categories exist in cache and are less than 1 day old, return cached version
|
|
57
|
-
// * - If expense categories exist but are older than 1 day, fetch fresh data and update cache
|
|
58
|
-
// * - If expense categories don't exist in cache, fetch from API and cache them
|
|
59
|
-
// *
|
|
60
|
-
// * @param searchQuery - Optional search query to filter expense categories
|
|
61
|
-
// * @param filters - Optional filters object to apply additional filtering (bypasses cache)
|
|
62
|
-
// * @param pageLimit - Number of expense categories to fetch (default: 100)
|
|
63
|
-
// * @returns Promise<{count:number, items: ExpenseCategoryBE[]}> - Paged expense categories
|
|
64
|
-
// *
|
|
65
|
-
// * @example
|
|
66
|
-
// * const expenseCategories = await getCachedExpenseCategories();
|
|
67
|
-
// * console.log(expenseCategories.items[0].name);
|
|
68
|
-
// *
|
|
69
|
-
// * // With search
|
|
70
|
-
// * const filtered = await getCachedExpenseCategories('Travel');
|
|
71
|
-
// *
|
|
72
|
-
// * // With filters
|
|
73
|
-
// * const filteredByColor = await getCachedExpenseCategories(undefined, { color: '#FF0000' });
|
|
74
|
-
// */
|
|
75
|
-
// export const getCachedExpenseCategories = async (
|
|
76
|
-
// searchQuery?: string,
|
|
77
|
-
// filters?: Record<string, unknown>,
|
|
78
|
-
// pageLimit: number = 100
|
|
79
|
-
// ): Promise<{ count: number; items: ExpenseCategoryBE[] }> => {
|
|
80
|
-
// try {
|
|
81
|
-
// // If there's a search query or filters, always fetch fresh data (don't use cache)
|
|
82
|
-
// if (
|
|
83
|
-
// (searchQuery && searchQuery.trim()) ||
|
|
84
|
-
// (filters && Object.keys(filters).length > 0)
|
|
85
|
-
// ) {
|
|
86
|
-
// const response = await fetchData({
|
|
87
|
-
// url: API_ROUTES.EXPENSE_CATEGORIES,
|
|
88
|
-
// body: JSON.stringify({
|
|
89
|
-
// searchQuery,
|
|
90
|
-
// ...filters,
|
|
91
|
-
// pageLimit,
|
|
92
|
-
// currentPage: 1,
|
|
93
|
-
// }),
|
|
94
|
-
// method: API_METHODS.POST,
|
|
95
|
-
// });
|
|
96
|
-
// return response?.data || { count: 0, items: [] };
|
|
97
|
-
// }
|
|
98
|
-
// // Get the cached data from localStorage
|
|
99
|
-
// const cachedData = getStorageValue(
|
|
100
|
-
// LS_KEYS.EXPENSE_CATEGORIES
|
|
101
|
-
// ) as CachedExpenseCategories | null;
|
|
102
|
-
// const currentTime = new Date().getTime();
|
|
103
|
-
// // Check if cached data exists and is still fresh
|
|
104
|
-
// if (cachedData) {
|
|
105
|
-
// const cachedTime = new Date(cachedData.cachedAt).getTime();
|
|
106
|
-
// const ageInMs = currentTime - cachedTime;
|
|
107
|
-
// // If cached data is less than 1 day old, return it
|
|
108
|
-
// if (ageInMs < ONE_DAY_IN_MS) {
|
|
109
|
-
// return {
|
|
110
|
-
// count: cachedData.expenseCategories.length,
|
|
111
|
-
// items: cachedData.expenseCategories,
|
|
112
|
-
// };
|
|
113
|
-
// }
|
|
114
|
-
// }
|
|
115
|
-
// // If no cached data or data is older than 1 day, fetch fresh data
|
|
116
|
-
// const response = await fetchData({
|
|
117
|
-
// url: API_ROUTES.EXPENSE_CATEGORIES,
|
|
118
|
-
// body: JSON.stringify({
|
|
119
|
-
// pageLimit,
|
|
120
|
-
// currentPage: 1,
|
|
121
|
-
// }),
|
|
122
|
-
// method: API_METHODS.POST,
|
|
123
|
-
// });
|
|
124
|
-
// if (response?.data?.items) {
|
|
125
|
-
// // Update the cache with fresh data
|
|
126
|
-
// const updatedCache: CachedExpenseCategories = {
|
|
127
|
-
// expenseCategories: response.data.items,
|
|
128
|
-
// cachedAt: new Date().toISOString(),
|
|
129
|
-
// };
|
|
130
|
-
// setStorageValue(LS_KEYS.EXPENSE_CATEGORIES, updatedCache);
|
|
131
|
-
// return response.data;
|
|
132
|
-
// }
|
|
133
|
-
// return { count: 0, items: [] };
|
|
134
|
-
// } catch (error) {
|
|
135
|
-
// console.error('Error fetching expense categories:', error);
|
|
136
|
-
// return { count: 0, items: [] };
|
|
137
|
-
// }
|
|
138
|
-
// };
|
|
139
|
-
// /**
|
|
140
|
-
// * Utility function to get a specific expense category by ID from cache
|
|
141
|
-
// * If not found in cache, returns null (does not trigger API call)
|
|
142
|
-
// *
|
|
143
|
-
// * @param categoryId - The ID of the expense category to retrieve
|
|
144
|
-
// * @returns ExpenseCategoryBE | null - The expense category or null if not found
|
|
145
|
-
// *
|
|
146
|
-
// * @example
|
|
147
|
-
// * const category = getCachedExpenseCategoryById('cat-123');
|
|
148
|
-
// * if (category) {
|
|
149
|
-
// * console.log(category.name);
|
|
150
|
-
// * }
|
|
151
|
-
// */
|
|
152
|
-
// export const getCachedExpenseCategoryById = (
|
|
153
|
-
// categoryId: string
|
|
154
|
-
// ): ExpenseCategoryBE | null => {
|
|
155
|
-
// if (!categoryId) {
|
|
156
|
-
// return null;
|
|
157
|
-
// }
|
|
158
|
-
// try {
|
|
159
|
-
// const categories = getCachedExpenseCategoriesSync().items;
|
|
160
|
-
// return categories.find((cat) => cat.id === categoryId) || null;
|
|
161
|
-
// } catch (error) {
|
|
162
|
-
// console.error('Error getting cached expense category by ID:', error);
|
|
163
|
-
// return null;
|
|
164
|
-
// }
|
|
165
|
-
// };
|
|
166
|
-
// /**
|
|
167
|
-
// * Utility function to invalidate (remove) expense categories from cache
|
|
168
|
-
// * Useful when expense categories have been updated and you want to force a refresh
|
|
169
|
-
// *
|
|
170
|
-
// * @example
|
|
171
|
-
// * invalidateExpenseCategoriesCache();
|
|
172
|
-
// * const freshCategories = await getCachedExpenseCategories();
|
|
173
|
-
// */
|
|
174
|
-
// export const invalidateExpenseCategoriesCache = (): void => {
|
|
175
|
-
// try {
|
|
176
|
-
// localStorage.removeItem(LS_KEYS.EXPENSE_CATEGORIES);
|
|
177
|
-
// } catch (error) {
|
|
178
|
-
// console.error('Error invalidating expense categories cache:', error);
|
|
179
|
-
// }
|
|
180
|
-
// };
|
|
181
|
-
// /**
|
|
182
|
-
// * Utility function to preload expense categories into cache
|
|
183
|
-
// * Useful to call on app initialization or login
|
|
184
|
-
// *
|
|
185
|
-
// * @returns Promise<{count:number, items: ExpenseCategoryBE[]}> - Array of preloaded expense categories
|
|
186
|
-
// *
|
|
187
|
-
// * @example
|
|
188
|
-
// * // On app initialization
|
|
189
|
-
// * await preloadExpenseCategories();
|
|
190
|
-
// */
|
|
191
|
-
// export const preloadExpenseCategories = async (): Promise<{
|
|
192
|
-
// count: number;
|
|
193
|
-
// items: ExpenseCategoryBE[];
|
|
194
|
-
// }> => {
|
|
195
|
-
// return getCachedExpenseCategories();
|
|
196
|
-
// };
|
|
197
|
-
// /**
|
|
198
|
-
// * Utility function to check if expense categories cache is stale
|
|
199
|
-
// * Returns true if cache is older than 1 day or doesn't exist
|
|
200
|
-
// *
|
|
201
|
-
// * @returns boolean - True if cache is stale or doesn't exist
|
|
202
|
-
// *
|
|
203
|
-
// * @example
|
|
204
|
-
// * if (isExpenseCategoriesCacheStale()) {
|
|
205
|
-
// * await getCachedExpenseCategories(); // This will fetch fresh data
|
|
206
|
-
// * }
|
|
207
|
-
// */
|
|
208
|
-
// export const isExpenseCategoriesCacheStale = (): boolean => {
|
|
209
|
-
// try {
|
|
210
|
-
// const cachedData = getStorageValue(
|
|
211
|
-
// LS_KEYS.EXPENSE_CATEGORIES
|
|
212
|
-
// ) as CachedExpenseCategories | null;
|
|
213
|
-
// if (!cachedData) {
|
|
214
|
-
// return true;
|
|
215
|
-
// }
|
|
216
|
-
// const currentTime = new Date().getTime();
|
|
217
|
-
// const cachedTime = new Date(cachedData.cachedAt).getTime();
|
|
218
|
-
// const ageInMs = currentTime - cachedTime;
|
|
219
|
-
// return ageInMs >= ONE_DAY_IN_MS;
|
|
220
|
-
// } catch (error) {
|
|
221
|
-
// console.error('Error checking expense categories cache staleness:', error);
|
|
222
|
-
// return true;
|
|
223
|
-
// }
|
|
224
|
-
// };
|
|
File without changes
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
// import { API_ROUTES } from '../constants';
|
|
2
|
-
// import { PaymentModeBE, LS_KEYS } from '../type';
|
|
3
|
-
// import { API_METHODS } from '../../../constants/api-methods';
|
|
4
|
-
// import { fetchData } from '../../../general/fetch-data';
|
|
5
|
-
// import { getStorageValue } from '../../../local-storage/get-storage-value';
|
|
6
|
-
// import { setStorageValue } from '../../../local-storage/set-storage-value';
|
|
7
|
-
// import { ONE_WEEK_IN_MS } from '../../../constants';
|
|
8
|
-
// interface CachedPaymentModes {
|
|
9
|
-
// paymentModes: PaymentModeBE[];
|
|
10
|
-
// cachedAt: string;
|
|
11
|
-
// }
|
|
12
|
-
// /**
|
|
13
|
-
// * Synchronous utility function to get payment modes from cache only
|
|
14
|
-
// * Returns cached data immediately if available and fresh, otherwise returns empty array
|
|
15
|
-
// * Does not trigger any API calls
|
|
16
|
-
// *
|
|
17
|
-
// * @returns PaymentModeBE[] - Array of cached payment modes or empty array wrapper ({count, items})
|
|
18
|
-
// *
|
|
19
|
-
// * @example
|
|
20
|
-
// * const paymentModes = getCachedPaymentModesSync();
|
|
21
|
-
// * if (paymentModes.items.length > 0) {
|
|
22
|
-
// * console.log(paymentModes.items[0].label);
|
|
23
|
-
// * }
|
|
24
|
-
// */
|
|
25
|
-
// export const getCachedPaymentModesSync = (): {
|
|
26
|
-
// count: number;
|
|
27
|
-
// items: PaymentModeBE[];
|
|
28
|
-
// } => {
|
|
29
|
-
// try {
|
|
30
|
-
// const cachedData = getStorageValue(
|
|
31
|
-
// LS_KEYS.PAYMENT_MODES
|
|
32
|
-
// ) as CachedPaymentModes | null;
|
|
33
|
-
// if (!cachedData) {
|
|
34
|
-
// return { count: 0, items: [] };
|
|
35
|
-
// }
|
|
36
|
-
// const currentTime = new Date().getTime();
|
|
37
|
-
// const cachedTime = new Date(cachedData.cachedAt).getTime();
|
|
38
|
-
// const ageInMs = currentTime - cachedTime;
|
|
39
|
-
// // If cached data is less than 1 week old, return it
|
|
40
|
-
// if (ageInMs < ONE_WEEK_IN_MS) {
|
|
41
|
-
// return {
|
|
42
|
-
// count: cachedData.paymentModes.length,
|
|
43
|
-
// items: cachedData.paymentModes,
|
|
44
|
-
// };
|
|
45
|
-
// }
|
|
46
|
-
// return { count: 0, items: [] };
|
|
47
|
-
// } catch (error) {
|
|
48
|
-
// console.error('Error getting cached payment modes:', error);
|
|
49
|
-
// return { count: 0, items: [] };
|
|
50
|
-
// }
|
|
51
|
-
// };
|
|
52
|
-
// /**
|
|
53
|
-
// * Utility function to get payment modes from cache or fetch from API
|
|
54
|
-
// *
|
|
55
|
-
// * This function manages a localStorage cache of payment modes with the following logic:
|
|
56
|
-
// * - If payment modes exist in cache and are less than 1 week old, return cached version
|
|
57
|
-
// * - If payment modes exist but are older than 1 week, fetch fresh data and update cache
|
|
58
|
-
// * - If payment modes don't exist in cache, fetch from API and cache them
|
|
59
|
-
// *
|
|
60
|
-
// * @param searchQuery - Optional search query to filter payment modes
|
|
61
|
-
// * @param pageLimit - Number of payment modes to fetch (default: 100)
|
|
62
|
-
// * @returns Promise<{count:number, items: PaymentModeBE[]}> - Paged payment modes
|
|
63
|
-
// *
|
|
64
|
-
// * @example
|
|
65
|
-
// * const paymentModes = await getCachedPaymentModes();
|
|
66
|
-
// * console.log(paymentModes.items[0].label);
|
|
67
|
-
// *
|
|
68
|
-
// * // With search
|
|
69
|
-
// * const filtered = await getCachedPaymentModes('Cash');
|
|
70
|
-
// */
|
|
71
|
-
// export const getCachedPaymentModes = async (
|
|
72
|
-
// searchQuery?: string,
|
|
73
|
-
// pageLimit: number = 100
|
|
74
|
-
// ): Promise<{
|
|
75
|
-
// count: number;
|
|
76
|
-
// items: PaymentModeBE[];
|
|
77
|
-
// }> => {
|
|
78
|
-
// try {
|
|
79
|
-
// // If there's a search query, always fetch fresh data (don't use cache)
|
|
80
|
-
// if (searchQuery && searchQuery.trim()) {
|
|
81
|
-
// const response = await fetchData({
|
|
82
|
-
// url: API_ROUTES.PAYMENT_MODES,
|
|
83
|
-
// body: JSON.stringify({
|
|
84
|
-
// searchQuery,
|
|
85
|
-
// pageLimit,
|
|
86
|
-
// currentPage: 1,
|
|
87
|
-
// }),
|
|
88
|
-
// method: API_METHODS.POST,
|
|
89
|
-
// });
|
|
90
|
-
// return response?.data || { count: 0, items: [] };
|
|
91
|
-
// }
|
|
92
|
-
// // Get the cached data from localStorage
|
|
93
|
-
// const cachedData = getStorageValue(
|
|
94
|
-
// LS_KEYS.PAYMENT_MODES
|
|
95
|
-
// ) as CachedPaymentModes | null;
|
|
96
|
-
// const currentTime = new Date().getTime();
|
|
97
|
-
// // Check if cached data exists and is still fresh
|
|
98
|
-
// if (cachedData) {
|
|
99
|
-
// const cachedTime = new Date(cachedData.cachedAt).getTime();
|
|
100
|
-
// const ageInMs = currentTime - cachedTime;
|
|
101
|
-
// // If cached data is less than 1 week old, return it
|
|
102
|
-
// if (ageInMs < ONE_WEEK_IN_MS) {
|
|
103
|
-
// return {
|
|
104
|
-
// count: cachedData.paymentModes.length,
|
|
105
|
-
// items: cachedData.paymentModes,
|
|
106
|
-
// };
|
|
107
|
-
// }
|
|
108
|
-
// }
|
|
109
|
-
// // If no cached data or data is older than 1 week, fetch fresh data
|
|
110
|
-
// const response = await fetchData({
|
|
111
|
-
// url: API_ROUTES.PAYMENT_MODES,
|
|
112
|
-
// body: JSON.stringify({
|
|
113
|
-
// pageLimit,
|
|
114
|
-
// currentPage: 1,
|
|
115
|
-
// }),
|
|
116
|
-
// method: API_METHODS.POST,
|
|
117
|
-
// });
|
|
118
|
-
// if (response?.data?.items) {
|
|
119
|
-
// // Update the cache with fresh data
|
|
120
|
-
// const updatedCache: CachedPaymentModes = {
|
|
121
|
-
// paymentModes: response.data.items,
|
|
122
|
-
// cachedAt: new Date().toISOString(),
|
|
123
|
-
// };
|
|
124
|
-
// setStorageValue(LS_KEYS.PAYMENT_MODES, updatedCache);
|
|
125
|
-
// return response.data;
|
|
126
|
-
// }
|
|
127
|
-
// return { count: 0, items: [] };
|
|
128
|
-
// } catch (error) {
|
|
129
|
-
// console.error('Error fetching payment modes:', error);
|
|
130
|
-
// return { count: 0, items: [] };
|
|
131
|
-
// }
|
|
132
|
-
// };
|
|
133
|
-
// /**
|
|
134
|
-
// * Utility function to get a specific payment mode by ID from cache
|
|
135
|
-
// * If not found in cache, returns null (does not trigger API call)
|
|
136
|
-
// *
|
|
137
|
-
// * @param paymentModeId - The ID of the payment mode to retrieve
|
|
138
|
-
// * @returns PaymentModeBE | null - The payment mode or null if not found
|
|
139
|
-
// *
|
|
140
|
-
// * @example
|
|
141
|
-
// * const paymentMode = getCachedPaymentModeById('pm-123');
|
|
142
|
-
// * if (paymentMode) {
|
|
143
|
-
// * console.log(paymentMode.label);
|
|
144
|
-
// * }
|
|
145
|
-
// */
|
|
146
|
-
// export const getCachedPaymentModeById = (
|
|
147
|
-
// paymentModeId: string
|
|
148
|
-
// ): PaymentModeBE | null => {
|
|
149
|
-
// if (!paymentModeId) {
|
|
150
|
-
// return null;
|
|
151
|
-
// }
|
|
152
|
-
// try {
|
|
153
|
-
// const paymentModes = getCachedPaymentModesSync().items;
|
|
154
|
-
// return paymentModes.find((pm) => pm.id === paymentModeId) || null;
|
|
155
|
-
// } catch (error) {
|
|
156
|
-
// console.error('Error getting cached payment mode by ID:', error);
|
|
157
|
-
// return null;
|
|
158
|
-
// }
|
|
159
|
-
// };
|
|
160
|
-
// /**
|
|
161
|
-
// * Utility function to get payment modes by label from cache
|
|
162
|
-
// * If not found in cache, returns empty array (does not trigger API call)
|
|
163
|
-
// *
|
|
164
|
-
// * @param label - The label of the payment mode to search for
|
|
165
|
-
// * @returns PaymentModeBE[] - Array of matching payment modes or empty array
|
|
166
|
-
// *
|
|
167
|
-
// * @example
|
|
168
|
-
// * const paymentModes = getCachedPaymentModesByLabel('Cash');
|
|
169
|
-
// * console.log(paymentModes.length);
|
|
170
|
-
// */
|
|
171
|
-
// export const getCachedPaymentModesByLabel = (
|
|
172
|
-
// label: string
|
|
173
|
-
// ): PaymentModeBE[] => {
|
|
174
|
-
// if (!label) {
|
|
175
|
-
// return [];
|
|
176
|
-
// }
|
|
177
|
-
// try {
|
|
178
|
-
// const paymentModes = getCachedPaymentModesSync().items;
|
|
179
|
-
// return paymentModes.filter((pm) =>
|
|
180
|
-
// pm.label.toLowerCase().includes(label.toLowerCase())
|
|
181
|
-
// );
|
|
182
|
-
// } catch (error) {
|
|
183
|
-
// console.error('Error getting cached payment modes by label:', error);
|
|
184
|
-
// return [];
|
|
185
|
-
// }
|
|
186
|
-
// };
|
|
187
|
-
// /**
|
|
188
|
-
// * Utility function to invalidate (remove) payment modes from cache
|
|
189
|
-
// * Useful when payment modes have been updated and you want to force a refresh
|
|
190
|
-
// *
|
|
191
|
-
// * @example
|
|
192
|
-
// * invalidatePaymentModesCache();
|
|
193
|
-
// * const freshPaymentModes = await getCachedPaymentModes();
|
|
194
|
-
// */
|
|
195
|
-
// export const invalidatePaymentModesCache = (): void => {
|
|
196
|
-
// try {
|
|
197
|
-
// localStorage.removeItem(LS_KEYS.PAYMENT_MODES);
|
|
198
|
-
// } catch (error) {
|
|
199
|
-
// console.error('Error invalidating payment modes cache:', error);
|
|
200
|
-
// }
|
|
201
|
-
// };
|
|
202
|
-
// /**
|
|
203
|
-
// * Utility function to preload payment modes into cache
|
|
204
|
-
// * Useful to call on app initialization or login
|
|
205
|
-
// *
|
|
206
|
-
// * @returns Promise<{count:number, items: PaymentModeBE[]}> - Array of preloaded payment modes
|
|
207
|
-
// *
|
|
208
|
-
// * @example
|
|
209
|
-
// * // On app initialization
|
|
210
|
-
// * await preloadPaymentModes();
|
|
211
|
-
// */
|
|
212
|
-
// export const preloadPaymentModes = async (): Promise<{
|
|
213
|
-
// count: number;
|
|
214
|
-
// items: PaymentModeBE[];
|
|
215
|
-
// }> => {
|
|
216
|
-
// return getCachedPaymentModes();
|
|
217
|
-
// };
|
|
218
|
-
// /**
|
|
219
|
-
// * Utility function to check if payment modes cache is stale
|
|
220
|
-
// * Returns true if cache is older than 1 week or doesn't exist
|
|
221
|
-
// *
|
|
222
|
-
// * @returns boolean - True if cache is stale or doesn't exist
|
|
223
|
-
// *
|
|
224
|
-
// * @example
|
|
225
|
-
// * if (isPaymentModesCacheStale()) {
|
|
226
|
-
// * await getCachedPaymentModes(); // This will fetch fresh data
|
|
227
|
-
// * }
|
|
228
|
-
// */
|
|
229
|
-
// export const isPaymentModesCacheStale = (): boolean => {
|
|
230
|
-
// try {
|
|
231
|
-
// const cachedData = getStorageValue(
|
|
232
|
-
// LS_KEYS.PAYMENT_MODES
|
|
233
|
-
// ) as CachedPaymentModes | null;
|
|
234
|
-
// if (!cachedData) {
|
|
235
|
-
// return true;
|
|
236
|
-
// }
|
|
237
|
-
// const currentTime = new Date().getTime();
|
|
238
|
-
// const cachedTime = new Date(cachedData.cachedAt).getTime();
|
|
239
|
-
// const ageInMs = currentTime - cachedTime;
|
|
240
|
-
// return ageInMs >= ONE_WEEK_IN_MS;
|
|
241
|
-
// } catch (error) {
|
|
242
|
-
// console.error('Error checking payment modes cache staleness:', error);
|
|
243
|
-
// return true;
|
|
244
|
-
// }
|
|
245
|
-
// };
|
|
File without changes
|