@react-pakistan/util-functions 1.25.9 → 1.25.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 (57) hide show
  1. package/api/stellar-solutions/bank/cache.d.ts +0 -104
  2. package/api/stellar-solutions/bank/cache.js +237 -296
  3. package/api/stellar-solutions/bank/index.d.ts +1 -1
  4. package/api/stellar-solutions/bank/index.js +0 -15
  5. package/api/stellar-solutions/branch/cache.d.ts +0 -102
  6. package/api/stellar-solutions/branch/cache.js +241 -296
  7. package/api/stellar-solutions/branch/index.d.ts +1 -1
  8. package/api/stellar-solutions/branch/index.js +0 -15
  9. package/api/stellar-solutions/company/cache.d.ts +0 -106
  10. package/api/stellar-solutions/company/cache.js +247 -308
  11. package/api/stellar-solutions/company/index.d.ts +1 -1
  12. package/api/stellar-solutions/company/index.js +0 -15
  13. package/api/stellar-solutions/contact/cache.d.ts +0 -108
  14. package/api/stellar-solutions/contact/cache.js +247 -308
  15. package/api/stellar-solutions/contact/index.d.ts +1 -1
  16. package/api/stellar-solutions/contact/index.js +0 -15
  17. package/api/stellar-solutions/currency/cache.d.ts +0 -104
  18. package/api/stellar-solutions/currency/cache.js +243 -296
  19. package/api/stellar-solutions/currency/index.d.ts +1 -1
  20. package/api/stellar-solutions/currency/index.js +0 -15
  21. package/api/stellar-solutions/customer/cache.d.ts +0 -108
  22. package/api/stellar-solutions/customer/cache.js +249 -308
  23. package/api/stellar-solutions/customer/index.d.ts +1 -1
  24. package/api/stellar-solutions/customer/index.js +0 -15
  25. package/api/stellar-solutions/expense/cache.d.ts +0 -106
  26. package/api/stellar-solutions/expense/cache.js +247 -308
  27. package/api/stellar-solutions/expense/index.d.ts +1 -1
  28. package/api/stellar-solutions/expense/index.js +0 -15
  29. package/api/stellar-solutions/expense-category/cache.d.ts +0 -94
  30. package/api/stellar-solutions/expense-category/cache.js +224 -281
  31. package/api/stellar-solutions/expense-category/index.d.ts +1 -1
  32. package/api/stellar-solutions/expense-category/index.js +0 -15
  33. package/api/stellar-solutions/payment-mode/cache.d.ts +0 -102
  34. package/api/stellar-solutions/payment-mode/cache.js +245 -296
  35. package/api/stellar-solutions/payment-mode/index.d.ts +1 -1
  36. package/api/stellar-solutions/payment-mode/index.js +0 -15
  37. package/api/stellar-solutions/preference/cache.d.ts +0 -90
  38. package/api/stellar-solutions/preference/cache.js +218 -269
  39. package/api/stellar-solutions/preference/index.d.ts +1 -1
  40. package/api/stellar-solutions/preference/index.js +0 -15
  41. package/api/stellar-solutions/product/cache.d.ts +0 -94
  42. package/api/stellar-solutions/product/cache.js +222 -281
  43. package/api/stellar-solutions/product/index.d.ts +1 -1
  44. package/api/stellar-solutions/product/index.js +0 -15
  45. package/api/stellar-solutions/product-category/cache.d.ts +0 -94
  46. package/api/stellar-solutions/product-category/cache.js +224 -281
  47. package/api/stellar-solutions/product-category/index.d.ts +1 -1
  48. package/api/stellar-solutions/product-category/index.js +0 -15
  49. package/api/stellar-solutions/tax/cache.d.ts +0 -102
  50. package/api/stellar-solutions/tax/cache.js +235 -296
  51. package/api/stellar-solutions/tax/index.d.ts +1 -1
  52. package/api/stellar-solutions/tax/index.js +0 -15
  53. package/general/format-secs.d.ts +1 -0
  54. package/general/format-secs.js +21 -0
  55. package/general/index.d.ts +1 -0
  56. package/general/index.js +1 -0
  57. package/package.json +1 -1
@@ -1,94 +0,0 @@
1
- import { ProductBE } from '../type';
2
- /**
3
- * Synchronous utility function to get products from cache only
4
- * Returns cached data immediately if available and fresh, otherwise returns empty array
5
- * Does not trigger any API calls
6
- *
7
- * @returns ProductBE[] - Array of cached products or empty array wrapper ({count, items})
8
- *
9
- * @example
10
- * const products = getCachedProductsSync();
11
- * if (products.items.length > 0) {
12
- * console.log(products.items[0].name);
13
- * }
14
- */
15
- export declare const getCachedProductsSync: () => {
16
- count: number;
17
- items: ProductBE[];
18
- };
19
- /**
20
- * Utility function to get products from cache or fetch from API
21
- *
22
- * This function manages a localStorage cache of products with the following logic:
23
- * - If products exist in cache and are less than 1 day old, return cached version
24
- * - If products exist but are older than 1 day, fetch fresh data and update cache
25
- * - If products don't exist in cache, fetch from API and cache them
26
- *
27
- * @param searchQuery - Optional search query to filter products
28
- * @param filters - Optional filters object to apply additional filtering (bypasses cache)
29
- * @param pageLimit - Number of products to fetch (default: 100)
30
- * @returns Promise<{count:number, items: ProductBE[]}> - Paged products
31
- *
32
- * @example
33
- * const products = await getCachedProducts();
34
- * console.log(products.items[0].name);
35
- *
36
- * // With search
37
- * const filtered = await getCachedProducts('Samsung');
38
- *
39
- * // With filters
40
- * const filteredByCategory = await getCachedProducts(undefined, { productCategoryId: 'cat-123' });
41
- */
42
- export declare const getCachedProducts: (searchQuery?: string, filters?: Record<string, unknown>, pageLimit?: number) => Promise<{
43
- count: number;
44
- items: ProductBE[];
45
- }>;
46
- /**
47
- * Utility function to get a specific product by ID from cache
48
- * If not found in cache, returns null (does not trigger API call)
49
- *
50
- * @param productId - The ID of the product to retrieve
51
- * @returns ProductBE | null - The product or null if not found
52
- *
53
- * @example
54
- * const product = getCachedProductById('prod-123');
55
- * if (product) {
56
- * console.log(product.name);
57
- * }
58
- */
59
- export declare const getCachedProductById: (categoryId: string) => ProductBE | null;
60
- /**
61
- * Utility function to invalidate (remove) products from cache
62
- * Useful when products have been updated and you want to force a refresh
63
- *
64
- * @example
65
- * invalidateProductsCache();
66
- * const freshProducts = await getCachedProducts();
67
- */
68
- export declare const invalidateProductsCache: () => void;
69
- /**
70
- * Utility function to preload products into cache
71
- * Useful to call on app initialization or login
72
- *
73
- * @returns Promise<{count:number, items: ProductBE[]}> - Array of preloaded products
74
- *
75
- * @example
76
- * // On app initialization
77
- * await preloadProducts();
78
- */
79
- export declare const preloadProducts: () => Promise<{
80
- count: number;
81
- items: ProductBE[];
82
- }>;
83
- /**
84
- * Utility function to check if products cache is stale
85
- * Returns true if cache is older than 1 day or doesn't exist
86
- *
87
- * @returns boolean - True if cache is stale or doesn't exist
88
- *
89
- * @example
90
- * if (isProductsCacheStale()) {
91
- * await getCachedProducts(); // This will fetch fresh data
92
- * }
93
- */
94
- export declare const isProductsCacheStale: () => boolean;
@@ -1,281 +1,222 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
50
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
- if (ar || !(i in from)) {
52
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
- ar[i] = from[i];
54
- }
55
- }
56
- return to.concat(ar || Array.prototype.slice.call(from));
57
- };
58
- Object.defineProperty(exports, "__esModule", { value: true });
59
- exports.isProductsCacheStale = exports.preloadProducts = exports.invalidateProductsCache = exports.getCachedProductById = exports.getCachedProducts = exports.getCachedProductsSync = void 0;
60
- var constants_1 = require("../constants");
61
- var type_1 = require("../type");
62
- var api_methods_1 = require("../../../constants/api-methods");
63
- var fetch_data_1 = require("../../../general/fetch-data");
64
- var get_storage_value_1 = require("../../../local-storage/get-storage-value");
65
- var set_storage_value_1 = require("../../../local-storage/set-storage-value");
66
- var constants_2 = require("../../../constants");
67
- /**
68
- * Synchronous utility function to get products from cache only
69
- * Returns cached data immediately if available and fresh, otherwise returns empty array
70
- * Does not trigger any API calls
71
- *
72
- * @returns ProductBE[] - Array of cached products or empty array wrapper ({count, items})
73
- *
74
- * @example
75
- * const products = getCachedProductsSync();
76
- * if (products.items.length > 0) {
77
- * console.log(products.items[0].name);
78
- * }
79
- */
80
- var getCachedProductsSync = function () {
81
- try {
82
- var cachedData = (0, get_storage_value_1.getStorageValue)(type_1.LS_KEYS.PRODUCTS);
83
- if (!cachedData) {
84
- return { count: 0, items: [] };
85
- }
86
- var currentTime = new Date().getTime();
87
- var cachedTime = new Date(cachedData.cachedAt).getTime();
88
- var ageInMs = currentTime - cachedTime;
89
- // If cached data is less than 1 day old, return it
90
- if (ageInMs < constants_2.ONE_DAY_IN_MS) {
91
- return {
92
- count: cachedData.products.length,
93
- items: cachedData.products,
94
- };
95
- }
96
- return { count: 0, items: [] };
97
- }
98
- catch (error) {
99
- console.error('Error getting cached products:', error);
100
- return { count: 0, items: [] };
101
- }
102
- };
103
- exports.getCachedProductsSync = getCachedProductsSync;
104
- /**
105
- * Utility function to get products from cache or fetch from API
106
- *
107
- * This function manages a localStorage cache of products with the following logic:
108
- * - If products exist in cache and are less than 1 day old, return cached version
109
- * - If products exist but are older than 1 day, fetch fresh data and update cache
110
- * - If products don't exist in cache, fetch from API and cache them
111
- *
112
- * @param searchQuery - Optional search query to filter products
113
- * @param filters - Optional filters object to apply additional filtering (bypasses cache)
114
- * @param pageLimit - Number of products to fetch (default: 100)
115
- * @returns Promise<{count:number, items: ProductBE[]}> - Paged products
116
- *
117
- * @example
118
- * const products = await getCachedProducts();
119
- * console.log(products.items[0].name);
120
- *
121
- * // With search
122
- * const filtered = await getCachedProducts('Samsung');
123
- *
124
- * // With filters
125
- * const filteredByCategory = await getCachedProducts(undefined, { productCategoryId: 'cat-123' });
126
- */
127
- var getCachedProducts = function (searchQuery_1, filters_1) {
128
- var args_1 = [];
129
- for (var _i = 2; _i < arguments.length; _i++) {
130
- args_1[_i - 2] = arguments[_i];
131
- }
132
- return __awaiter(void 0, __spreadArray([searchQuery_1, filters_1], args_1, true), void 0, function (searchQuery, filters, pageLimit) {
133
- var response_1, cachedData, currentTime, cachedTime, ageInMs, response, updatedCache, error_1;
134
- var _a;
135
- if (pageLimit === void 0) { pageLimit = 100; }
136
- return __generator(this, function (_b) {
137
- switch (_b.label) {
138
- case 0:
139
- _b.trys.push([0, 4, , 5]);
140
- if (!((searchQuery && searchQuery.trim()) ||
141
- (filters && Object.keys(filters).length > 0))) return [3 /*break*/, 2];
142
- return [4 /*yield*/, (0, fetch_data_1.fetchData)({
143
- url: constants_1.API_ROUTES.PRODUCTS,
144
- body: JSON.stringify(__assign(__assign({ searchQuery: searchQuery }, filters), { pageLimit: pageLimit, currentPage: 1 })),
145
- method: api_methods_1.API_METHODS.POST,
146
- })];
147
- case 1:
148
- response_1 = _b.sent();
149
- return [2 /*return*/, (response_1 === null || response_1 === void 0 ? void 0 : response_1.data) || { count: 0, items: [] }];
150
- case 2:
151
- cachedData = (0, get_storage_value_1.getStorageValue)(type_1.LS_KEYS.PRODUCTS);
152
- currentTime = new Date().getTime();
153
- // Check if cached data exists and is still fresh
154
- if (cachedData) {
155
- cachedTime = new Date(cachedData.cachedAt).getTime();
156
- ageInMs = currentTime - cachedTime;
157
- // If cached data is less than 1 day old, return it
158
- if (ageInMs < constants_2.ONE_DAY_IN_MS) {
159
- return [2 /*return*/, {
160
- count: cachedData.products.length,
161
- items: cachedData.products,
162
- }];
163
- }
164
- }
165
- return [4 /*yield*/, (0, fetch_data_1.fetchData)({
166
- url: constants_1.API_ROUTES.PRODUCTS,
167
- body: JSON.stringify({
168
- pageLimit: pageLimit,
169
- currentPage: 1,
170
- }),
171
- method: api_methods_1.API_METHODS.POST,
172
- })];
173
- case 3:
174
- response = _b.sent();
175
- if ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.items) {
176
- updatedCache = {
177
- products: response.data.items,
178
- cachedAt: new Date().toISOString(),
179
- };
180
- (0, set_storage_value_1.setStorageValue)(type_1.LS_KEYS.PRODUCTS, updatedCache);
181
- return [2 /*return*/, response.data];
182
- }
183
- return [2 /*return*/, { count: 0, items: [] }];
184
- case 4:
185
- error_1 = _b.sent();
186
- console.error('Error fetching products:', error_1);
187
- return [2 /*return*/, { count: 0, items: [] }];
188
- case 5: return [2 /*return*/];
189
- }
190
- });
191
- });
192
- };
193
- exports.getCachedProducts = getCachedProducts;
194
- /**
195
- * Utility function to get a specific product by ID from cache
196
- * If not found in cache, returns null (does not trigger API call)
197
- *
198
- * @param productId - The ID of the product to retrieve
199
- * @returns ProductBE | null - The product or null if not found
200
- *
201
- * @example
202
- * const product = getCachedProductById('prod-123');
203
- * if (product) {
204
- * console.log(product.name);
205
- * }
206
- */
207
- var getCachedProductById = function (categoryId) {
208
- if (!categoryId) {
209
- return null;
210
- }
211
- try {
212
- var products = (0, exports.getCachedProductsSync)().items;
213
- return products.find(function (cat) { return cat.id === categoryId; }) || null;
214
- }
215
- catch (error) {
216
- console.error('Error getting cached product by ID:', error);
217
- return null;
218
- }
219
- };
220
- exports.getCachedProductById = getCachedProductById;
221
- /**
222
- * Utility function to invalidate (remove) products from cache
223
- * Useful when products have been updated and you want to force a refresh
224
- *
225
- * @example
226
- * invalidateProductsCache();
227
- * const freshProducts = await getCachedProducts();
228
- */
229
- var invalidateProductsCache = function () {
230
- try {
231
- localStorage.removeItem(type_1.LS_KEYS.PRODUCTS);
232
- }
233
- catch (error) {
234
- console.error('Error invalidating products cache:', error);
235
- }
236
- };
237
- exports.invalidateProductsCache = invalidateProductsCache;
238
- /**
239
- * Utility function to preload products into cache
240
- * Useful to call on app initialization or login
241
- *
242
- * @returns Promise<{count:number, items: ProductBE[]}> - Array of preloaded products
243
- *
244
- * @example
245
- * // On app initialization
246
- * await preloadProducts();
247
- */
248
- var preloadProducts = function () { return __awaiter(void 0, void 0, void 0, function () {
249
- return __generator(this, function (_a) {
250
- return [2 /*return*/, (0, exports.getCachedProducts)()];
251
- });
252
- }); };
253
- exports.preloadProducts = preloadProducts;
254
- /**
255
- * Utility function to check if products cache is stale
256
- * Returns true if cache is older than 1 day or doesn't exist
257
- *
258
- * @returns boolean - True if cache is stale or doesn't exist
259
- *
260
- * @example
261
- * if (isProductsCacheStale()) {
262
- * await getCachedProducts(); // This will fetch fresh data
263
- * }
264
- */
265
- var isProductsCacheStale = function () {
266
- try {
267
- var cachedData = (0, get_storage_value_1.getStorageValue)(type_1.LS_KEYS.PRODUCTS);
268
- if (!cachedData) {
269
- return true;
270
- }
271
- var currentTime = new Date().getTime();
272
- var cachedTime = new Date(cachedData.cachedAt).getTime();
273
- var ageInMs = currentTime - cachedTime;
274
- return ageInMs >= constants_2.ONE_DAY_IN_MS;
275
- }
276
- catch (error) {
277
- console.error('Error checking products cache staleness:', error);
278
- return true;
279
- }
280
- };
281
- exports.isProductsCacheStale = isProductsCacheStale;
1
+ // import { API_ROUTES } from '../constants';
2
+ // import { ProductBE, 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 CachedProducts {
9
+ // products: ProductBE[];
10
+ // cachedAt: string;
11
+ // }
12
+ // /**
13
+ // * Synchronous utility function to get products 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 ProductBE[] - Array of cached products or empty array wrapper ({count, items})
18
+ // *
19
+ // * @example
20
+ // * const products = getCachedProductsSync();
21
+ // * if (products.items.length > 0) {
22
+ // * console.log(products.items[0].name);
23
+ // * }
24
+ // */
25
+ // export const getCachedProductsSync = (): {
26
+ // count: number;
27
+ // items: ProductBE[];
28
+ // } => {
29
+ // try {
30
+ // const cachedData = getStorageValue(
31
+ // LS_KEYS.PRODUCTS
32
+ // ) as CachedProducts | 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.products.length,
43
+ // items: cachedData.products,
44
+ // };
45
+ // }
46
+ // return { count: 0, items: [] };
47
+ // } catch (error) {
48
+ // console.error('Error getting cached products:', error);
49
+ // return { count: 0, items: [] };
50
+ // }
51
+ // };
52
+ // /**
53
+ // * Utility function to get products from cache or fetch from API
54
+ // *
55
+ // * This function manages a localStorage cache of products with the following logic:
56
+ // * - If products exist in cache and are less than 1 day old, return cached version
57
+ // * - If products exist but are older than 1 day, fetch fresh data and update cache
58
+ // * - If products don't exist in cache, fetch from API and cache them
59
+ // *
60
+ // * @param searchQuery - Optional search query to filter products
61
+ // * @param filters - Optional filters object to apply additional filtering (bypasses cache)
62
+ // * @param pageLimit - Number of products to fetch (default: 100)
63
+ // * @returns Promise<{count:number, items: ProductBE[]}> - Paged products
64
+ // *
65
+ // * @example
66
+ // * const products = await getCachedProducts();
67
+ // * console.log(products.items[0].name);
68
+ // *
69
+ // * // With search
70
+ // * const filtered = await getCachedProducts('Samsung');
71
+ // *
72
+ // * // With filters
73
+ // * const filteredByCategory = await getCachedProducts(undefined, { productCategoryId: 'cat-123' });
74
+ // */
75
+ // export const getCachedProducts = async (
76
+ // searchQuery?: string,
77
+ // filters?: Record<string, unknown>,
78
+ // pageLimit: number = 100
79
+ // ): Promise<{ count: number; items: ProductBE[] }> => {
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.PRODUCTS,
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.PRODUCTS
101
+ // ) as CachedProducts | 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.products.length,
111
+ // items: cachedData.products,
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.PRODUCTS,
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: CachedProducts = {
127
+ // products: response.data.items,
128
+ // cachedAt: new Date().toISOString(),
129
+ // };
130
+ // setStorageValue(LS_KEYS.PRODUCTS, updatedCache);
131
+ // return response.data;
132
+ // }
133
+ // return { count: 0, items: [] };
134
+ // } catch (error) {
135
+ // console.error('Error fetching products:', error);
136
+ // return { count: 0, items: [] };
137
+ // }
138
+ // };
139
+ // /**
140
+ // * Utility function to get a specific product by ID from cache
141
+ // * If not found in cache, returns null (does not trigger API call)
142
+ // *
143
+ // * @param productId - The ID of the product to retrieve
144
+ // * @returns ProductBE | null - The product or null if not found
145
+ // *
146
+ // * @example
147
+ // * const product = getCachedProductById('prod-123');
148
+ // * if (product) {
149
+ // * console.log(product.name);
150
+ // * }
151
+ // */
152
+ // export const getCachedProductById = (categoryId: string): ProductBE | null => {
153
+ // if (!categoryId) {
154
+ // return null;
155
+ // }
156
+ // try {
157
+ // const products = getCachedProductsSync().items;
158
+ // return products.find((cat) => cat.id === categoryId) || null;
159
+ // } catch (error) {
160
+ // console.error('Error getting cached product by ID:', error);
161
+ // return null;
162
+ // }
163
+ // };
164
+ // /**
165
+ // * Utility function to invalidate (remove) products from cache
166
+ // * Useful when products have been updated and you want to force a refresh
167
+ // *
168
+ // * @example
169
+ // * invalidateProductsCache();
170
+ // * const freshProducts = await getCachedProducts();
171
+ // */
172
+ // export const invalidateProductsCache = (): void => {
173
+ // try {
174
+ // localStorage.removeItem(LS_KEYS.PRODUCTS);
175
+ // } catch (error) {
176
+ // console.error('Error invalidating products cache:', error);
177
+ // }
178
+ // };
179
+ // /**
180
+ // * Utility function to preload products into cache
181
+ // * Useful to call on app initialization or login
182
+ // *
183
+ // * @returns Promise<{count:number, items: ProductBE[]}> - Array of preloaded products
184
+ // *
185
+ // * @example
186
+ // * // On app initialization
187
+ // * await preloadProducts();
188
+ // */
189
+ // export const preloadProducts = async (): Promise<{
190
+ // count: number;
191
+ // items: ProductBE[];
192
+ // }> => {
193
+ // return getCachedProducts();
194
+ // };
195
+ // /**
196
+ // * Utility function to check if products cache is stale
197
+ // * Returns true if cache is older than 1 day or doesn't exist
198
+ // *
199
+ // * @returns boolean - True if cache is stale or doesn't exist
200
+ // *
201
+ // * @example
202
+ // * if (isProductsCacheStale()) {
203
+ // * await getCachedProducts(); // This will fetch fresh data
204
+ // * }
205
+ // */
206
+ // export const isProductsCacheStale = (): boolean => {
207
+ // try {
208
+ // const cachedData = getStorageValue(
209
+ // LS_KEYS.PRODUCTS
210
+ // ) as CachedProducts | null;
211
+ // if (!cachedData) {
212
+ // return true;
213
+ // }
214
+ // const currentTime = new Date().getTime();
215
+ // const cachedTime = new Date(cachedData.cachedAt).getTime();
216
+ // const ageInMs = currentTime - cachedTime;
217
+ // return ageInMs >= ONE_DAY_IN_MS;
218
+ // } catch (error) {
219
+ // console.error('Error checking products cache staleness:', error);
220
+ // return true;
221
+ // }
222
+ // };
@@ -1,4 +1,3 @@
1
- export * from './cache';
2
1
  import { ProductBE } from '../type';
3
2
  type PrismaClient = any;
4
3
  export interface ListProductArgs {
@@ -62,3 +61,4 @@ export declare const updateProduct: ({ buyPrice, currency, description, id, imag
62
61
  * @returns {Promise<ProductBE>} Deleted product
63
62
  */
64
63
  export declare const deleteProduct: ({ id, prisma, }: DeleteProductArgs) => Promise<ProductBE>;
64
+ export {};