| 12345678910111213141516171819202122232425262728293031323334 |
- export const isOfflineMode = (): boolean => {
- try {
- const envFlag = import.meta.env.VITE_OFFLINE;
- return envFlag === 'true' || envFlag;
- } catch (e) {
- return false;
- }
- };
- export const getOfflineDataPath = (): string => {
- try {
- const p = import.meta.env.VITE_OFFLINE_DATA_PATH;
- return p || './';
- } catch (e) {
- return './';
- }
- };
- export const fetchOfflineJson = async <T = any>(candidatePaths: string[]): Promise<T> => {
- const errors: any[] = [];
- for (const p of candidatePaths) {
- try {
- const res = await fetch(p, { cache: 'no-store' });
- if (!res.ok) {
- errors.push(`${p}: ${res.status}`);
- continue;
- }
- return (await res.json()) as T;
- } catch (e) {
- errors.push(`${p}: ${(e as Error)?.message || 'fetch failed'}`);
- }
- }
- throw new Error(`offline json not found. tried: ${errors.join('; ')}`);
- };
|