@fctc/interface-logic 4.4.0 → 4.4.1
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/dist/environment.d.mts +1 -1
- package/dist/environment.d.ts +1 -1
- package/dist/hooks.d.mts +1 -4
- package/dist/hooks.d.ts +1 -4
- package/dist/hooks.js +299 -813
- package/dist/hooks.mjs +145 -658
- package/dist/provider.d.mts +13 -6
- package/dist/provider.d.ts +13 -6
- package/dist/provider.js +215 -711
- package/dist/provider.mjs +176 -674
- package/dist/services.d.mts +8 -8
- package/dist/services.d.ts +8 -8
- package/dist/services.js +260 -766
- package/dist/services.mjs +148 -653
- package/dist/store.js +1 -1
- package/dist/store.mjs +1 -1
- package/package.json +3 -2
- package/dist/import-snapshot-Ds0gqFFm.d.mts +0 -3
- package/dist/import-snapshot-Ds0gqFFm.d.ts +0 -3
package/dist/services.mjs
CHANGED
|
@@ -50,6 +50,58 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
|
|
|
50
50
|
// src/utils/format.ts
|
|
51
51
|
import moment from "moment";
|
|
52
52
|
|
|
53
|
+
// src/constants/model/model-constant.ts
|
|
54
|
+
var LoadDataModel = /* @__PURE__ */ ((LoadDataModel2) => {
|
|
55
|
+
LoadDataModel2["ACCOUNT_CASH_ROUNDING"] = "account.cash.rounding";
|
|
56
|
+
LoadDataModel2["ACCOUNT_FISCAL_POSITION"] = "account.fiscal.position";
|
|
57
|
+
LoadDataModel2["ACCOUNT_FISCAL_POSITION_TAX"] = "account.fiscal.position.tax";
|
|
58
|
+
LoadDataModel2["ACCOUNT_TAX"] = "account.tax";
|
|
59
|
+
LoadDataModel2["ACCOUNT_TAX_GROUP"] = "account.tax.group";
|
|
60
|
+
LoadDataModel2["DECIMAL_PRECISION"] = "decimal.precision";
|
|
61
|
+
LoadDataModel2["IR_MODULE_MODULE"] = "ir.module.module";
|
|
62
|
+
LoadDataModel2["IR_UI_VIEW"] = "ir.ui.view";
|
|
63
|
+
LoadDataModel2["POS_BILL"] = "pos.bill";
|
|
64
|
+
LoadDataModel2["POS_CATEGORY"] = "pos.category";
|
|
65
|
+
LoadDataModel2["POS_CONFIG"] = "pos.config";
|
|
66
|
+
LoadDataModel2["POS_NOTE"] = "pos.note";
|
|
67
|
+
LoadDataModel2["POS_ORDER"] = "pos.order";
|
|
68
|
+
LoadDataModel2["POS_ORDER_LINE"] = "pos.order.line";
|
|
69
|
+
LoadDataModel2["POS_PACK_OPERATION_LOT"] = "pos.pack.operation.lot";
|
|
70
|
+
LoadDataModel2["POS_PAYMENT"] = "pos.payment";
|
|
71
|
+
LoadDataModel2["POS_PAYMENT_METHOD"] = "pos.payment.method";
|
|
72
|
+
LoadDataModel2["POS_PRINTER"] = "pos.printer";
|
|
73
|
+
LoadDataModel2["POS_SESSION"] = "pos.session";
|
|
74
|
+
LoadDataModel2["POS_PREPARATION_DISPLAY_DISPLAY"] = "pos_preparation_display.display";
|
|
75
|
+
LoadDataModel2["PRODUCT_ATTRIBUTE"] = "product.attribute";
|
|
76
|
+
LoadDataModel2["PRODUCT_ATTRIBUTE_CUSTOM_VALUE"] = "product.attribute.custom.value";
|
|
77
|
+
LoadDataModel2["PRODUCT_CATEGORY"] = "product.category";
|
|
78
|
+
LoadDataModel2["PRODUCT_COMBO"] = "product.combo";
|
|
79
|
+
LoadDataModel2["PRODUCT_COMBO_ITEM"] = "product.combo.item";
|
|
80
|
+
LoadDataModel2["PRODUCT_PACKAGING"] = "product.packaging";
|
|
81
|
+
LoadDataModel2["PRODUCT_PRICELIST"] = "product.pricelist";
|
|
82
|
+
LoadDataModel2["PRODUCT_PRICELIST_ITEM"] = "product.pricelist.item";
|
|
83
|
+
LoadDataModel2["PRODUCT_PRODUCT"] = "product.product";
|
|
84
|
+
LoadDataModel2["PRODUCT_TAG"] = "product.tag";
|
|
85
|
+
LoadDataModel2["PRODUCT_TEMPLATE_ATTRIBUTE_LINE"] = "product.template.attribute.line";
|
|
86
|
+
LoadDataModel2["PRODUCT_TEMPLATE_ATTRIBUTE_VALUE"] = "product.template.attribute.value";
|
|
87
|
+
LoadDataModel2["RES_COMPANY"] = "res.company";
|
|
88
|
+
LoadDataModel2["RES_COUNTRY"] = "res.country";
|
|
89
|
+
LoadDataModel2["RES_COUNTRY_STATE"] = "res.country.state";
|
|
90
|
+
LoadDataModel2["RES_CURRENCY"] = "res.currency";
|
|
91
|
+
LoadDataModel2["RES_LANG"] = "res.lang";
|
|
92
|
+
LoadDataModel2["RES_PARTNER"] = "res.partner";
|
|
93
|
+
LoadDataModel2["RES_USERS"] = "res.users";
|
|
94
|
+
LoadDataModel2["STOCK_PICKING_TYPE"] = "stock.picking.type";
|
|
95
|
+
LoadDataModel2["UOM_CATEGORY"] = "uom.category";
|
|
96
|
+
LoadDataModel2["UOM_UOM"] = "uom.uom";
|
|
97
|
+
LoadDataModel2["LOYALTY_PROGRAM"] = "loyalty.program";
|
|
98
|
+
LoadDataModel2["LOYALTY_RULE"] = "loyalty.rule";
|
|
99
|
+
LoadDataModel2["RESTAURANT_TABLE"] = "restaurant.table";
|
|
100
|
+
LoadDataModel2["RESTAURANT_FLOOR"] = "restaurant.floor";
|
|
101
|
+
LoadDataModel2["POS_MAKE_PAYMENT"] = "pos.make.payment";
|
|
102
|
+
return LoadDataModel2;
|
|
103
|
+
})(LoadDataModel || {});
|
|
104
|
+
|
|
53
105
|
// src/utils/domain/py_tokenizer.ts
|
|
54
106
|
var TokenizerError = class extends Error {
|
|
55
107
|
};
|
|
@@ -2178,13 +2230,6 @@ function cleanObject(obj) {
|
|
|
2178
2230
|
}
|
|
2179
2231
|
return result;
|
|
2180
2232
|
}
|
|
2181
|
-
var extractIdFromDomain = (domain) => {
|
|
2182
|
-
if (!domain || !Array.isArray(domain)) return null;
|
|
2183
|
-
const idCond = domain.find(
|
|
2184
|
-
([field, operator]) => field === "id" && operator === "="
|
|
2185
|
-
);
|
|
2186
|
-
return idCond ? Number(idCond[2]) : null;
|
|
2187
|
-
};
|
|
2188
2233
|
|
|
2189
2234
|
// src/provider/react-query-provider.tsx
|
|
2190
2235
|
import { useState as useState2 } from "react";
|
|
@@ -2237,7 +2282,7 @@ var initialState2 = {
|
|
|
2237
2282
|
lang: "vi_VN",
|
|
2238
2283
|
tz: "Asia/Saigon"
|
|
2239
2284
|
},
|
|
2240
|
-
|
|
2285
|
+
isSupaMode: false
|
|
2241
2286
|
};
|
|
2242
2287
|
var envSlice = createSlice2({
|
|
2243
2288
|
name: "env",
|
|
@@ -2844,7 +2889,7 @@ function useEnv() {
|
|
|
2844
2889
|
}
|
|
2845
2890
|
|
|
2846
2891
|
// src/provider/service-provider.tsx
|
|
2847
|
-
import { createContext as
|
|
2892
|
+
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
2848
2893
|
|
|
2849
2894
|
// src/hooks/auth/use-forgot-password.ts
|
|
2850
2895
|
import { useMutation } from "@tanstack/react-query";
|
|
@@ -3148,544 +3193,7 @@ var getASessionService = (env) => {
|
|
|
3148
3193
|
|
|
3149
3194
|
// src/services/pos-service/add-entity.ts
|
|
3150
3195
|
import { useCallback as useCallback4 } from "react";
|
|
3151
|
-
|
|
3152
|
-
// src/services/filesystem-service/file-service.ts
|
|
3153
|
-
import { Directory, Encoding, Filesystem } from "@capacitor/filesystem";
|
|
3154
|
-
var fileService = {
|
|
3155
|
-
read: async (path) => {
|
|
3156
|
-
try {
|
|
3157
|
-
const res = await Filesystem.readFile({
|
|
3158
|
-
path,
|
|
3159
|
-
directory: Directory.Data,
|
|
3160
|
-
encoding: Encoding.UTF8
|
|
3161
|
-
});
|
|
3162
|
-
if (typeof res.data === "string") return res.data;
|
|
3163
|
-
if (res.data instanceof Blob) return await res.data.text();
|
|
3164
|
-
return null;
|
|
3165
|
-
} catch {
|
|
3166
|
-
return null;
|
|
3167
|
-
}
|
|
3168
|
-
},
|
|
3169
|
-
write: async (path, data) => {
|
|
3170
|
-
await Filesystem.writeFile({
|
|
3171
|
-
path,
|
|
3172
|
-
data,
|
|
3173
|
-
directory: Directory.Data,
|
|
3174
|
-
encoding: Encoding.UTF8,
|
|
3175
|
-
recursive: true
|
|
3176
|
-
});
|
|
3177
|
-
},
|
|
3178
|
-
writeAtomic: async (path, data) => {
|
|
3179
|
-
const tempPath = path + ".tmp";
|
|
3180
|
-
await Filesystem.writeFile({
|
|
3181
|
-
path: tempPath,
|
|
3182
|
-
data,
|
|
3183
|
-
directory: Directory.Data,
|
|
3184
|
-
encoding: Encoding.UTF8,
|
|
3185
|
-
recursive: true
|
|
3186
|
-
});
|
|
3187
|
-
try {
|
|
3188
|
-
await Filesystem.deleteFile({
|
|
3189
|
-
path,
|
|
3190
|
-
directory: Directory.Data
|
|
3191
|
-
});
|
|
3192
|
-
} catch {
|
|
3193
|
-
}
|
|
3194
|
-
await Filesystem.rename({
|
|
3195
|
-
from: tempPath,
|
|
3196
|
-
to: path,
|
|
3197
|
-
directory: Directory.Data
|
|
3198
|
-
});
|
|
3199
|
-
},
|
|
3200
|
-
delete: async (path) => {
|
|
3201
|
-
try {
|
|
3202
|
-
await Filesystem.deleteFile({
|
|
3203
|
-
path,
|
|
3204
|
-
directory: Directory.Data
|
|
3205
|
-
});
|
|
3206
|
-
} catch {
|
|
3207
|
-
}
|
|
3208
|
-
},
|
|
3209
|
-
exists: async (path) => {
|
|
3210
|
-
try {
|
|
3211
|
-
await Filesystem.stat({
|
|
3212
|
-
path,
|
|
3213
|
-
directory: Directory.Data
|
|
3214
|
-
});
|
|
3215
|
-
return true;
|
|
3216
|
-
} catch {
|
|
3217
|
-
return false;
|
|
3218
|
-
}
|
|
3219
|
-
},
|
|
3220
|
-
mkdir: async (path) => {
|
|
3221
|
-
try {
|
|
3222
|
-
await Filesystem.mkdir({
|
|
3223
|
-
path,
|
|
3224
|
-
directory: Directory.Data,
|
|
3225
|
-
recursive: true
|
|
3226
|
-
});
|
|
3227
|
-
} catch (e) {
|
|
3228
|
-
if (!String(e?.message).includes("Exists")) {
|
|
3229
|
-
throw e;
|
|
3230
|
-
}
|
|
3231
|
-
}
|
|
3232
|
-
},
|
|
3233
|
-
list: async (path) => {
|
|
3234
|
-
return Filesystem.readdir({
|
|
3235
|
-
path,
|
|
3236
|
-
directory: Directory.Data
|
|
3237
|
-
});
|
|
3238
|
-
},
|
|
3239
|
-
getUri: async (path) => {
|
|
3240
|
-
return Filesystem.getUri({
|
|
3241
|
-
path,
|
|
3242
|
-
directory: Directory.Data
|
|
3243
|
-
});
|
|
3244
|
-
}
|
|
3245
|
-
};
|
|
3246
|
-
|
|
3247
|
-
// src/services/filesystem-service/json-worker.ts
|
|
3248
|
-
function createWorkerBlob() {
|
|
3249
|
-
const workerCode = `
|
|
3250
|
-
self.addEventListener("message", async (ev) => {
|
|
3251
|
-
const { id, cmd, payload } = ev.data;
|
|
3252
|
-
try {
|
|
3253
|
-
if (cmd === "parse") {
|
|
3254
|
-
const parsed = JSON.parse(payload);
|
|
3255
|
-
self.postMessage({ id, ok: true, result: parsed });
|
|
3256
|
-
} else if (cmd === "stringify") {
|
|
3257
|
-
const str = JSON.stringify(payload);
|
|
3258
|
-
self.postMessage({ id, ok: true, result: str });
|
|
3259
|
-
}
|
|
3260
|
-
} catch (err) {
|
|
3261
|
-
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
3262
|
-
}
|
|
3263
|
-
});
|
|
3264
|
-
`;
|
|
3265
|
-
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
3266
|
-
return URL.createObjectURL(blob);
|
|
3267
|
-
}
|
|
3268
|
-
function spawnParseWorker(raw) {
|
|
3269
|
-
return new Promise((resolve, reject) => {
|
|
3270
|
-
const workerUrl = createWorkerBlob();
|
|
3271
|
-
const worker = new Worker(workerUrl);
|
|
3272
|
-
const id = Math.random().toString(36).slice(2);
|
|
3273
|
-
worker.onmessage = (ev) => {
|
|
3274
|
-
const { ok, result, error } = ev.data;
|
|
3275
|
-
if (ok) {
|
|
3276
|
-
resolve(result);
|
|
3277
|
-
} else {
|
|
3278
|
-
reject(new Error(error));
|
|
3279
|
-
}
|
|
3280
|
-
URL.revokeObjectURL(workerUrl);
|
|
3281
|
-
worker.terminate();
|
|
3282
|
-
};
|
|
3283
|
-
worker.onerror = (err) => {
|
|
3284
|
-
reject(err);
|
|
3285
|
-
URL.revokeObjectURL(workerUrl);
|
|
3286
|
-
worker.terminate();
|
|
3287
|
-
};
|
|
3288
|
-
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
3289
|
-
});
|
|
3290
|
-
}
|
|
3291
|
-
function spawnStringifyWorker(obj) {
|
|
3292
|
-
return new Promise((resolve, reject) => {
|
|
3293
|
-
const workerUrl = createWorkerBlob();
|
|
3294
|
-
const worker = new Worker(workerUrl);
|
|
3295
|
-
worker.onmessage = (ev) => {
|
|
3296
|
-
const { ok, result, error } = ev.data;
|
|
3297
|
-
if (ok) resolve(result);
|
|
3298
|
-
else reject(new Error(error));
|
|
3299
|
-
URL.revokeObjectURL(workerUrl);
|
|
3300
|
-
worker.terminate();
|
|
3301
|
-
};
|
|
3302
|
-
worker.onerror = (err) => {
|
|
3303
|
-
reject(err);
|
|
3304
|
-
URL.revokeObjectURL(workerUrl);
|
|
3305
|
-
worker.terminate();
|
|
3306
|
-
};
|
|
3307
|
-
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
3308
|
-
});
|
|
3309
|
-
}
|
|
3310
|
-
|
|
3311
|
-
// src/services/filesystem-service/manifest.ts
|
|
3312
|
-
var MANIFEST_PATH = "pos/manifest.json";
|
|
3313
|
-
var MANIFEST_BAK_PATH = "pos/manifest.bak.json";
|
|
3314
|
-
async function writeManifest(manifest) {
|
|
3315
|
-
const oldRaw = await fileService.read(MANIFEST_PATH);
|
|
3316
|
-
if (oldRaw !== null) {
|
|
3317
|
-
await fileService.writeAtomic(MANIFEST_BAK_PATH, oldRaw);
|
|
3318
|
-
}
|
|
3319
|
-
await fileService.writeAtomic(MANIFEST_PATH, JSON.stringify(manifest));
|
|
3320
|
-
try {
|
|
3321
|
-
await fileService.delete(MANIFEST_BAK_PATH);
|
|
3322
|
-
} catch {
|
|
3323
|
-
}
|
|
3324
|
-
}
|
|
3325
|
-
|
|
3326
|
-
// src/services/filesystem-service/import-snapshot.ts
|
|
3327
|
-
var DATA_DIR = "pos";
|
|
3328
|
-
var MODELS_DIR = `${DATA_DIR}/models`;
|
|
3329
|
-
var MODELS_META_DIR = `${DATA_DIR}/models_meta`;
|
|
3330
|
-
var importSnapshot = async ({ data, onProgress }) => {
|
|
3331
|
-
onProgress?.(1, "Parsing snapshot");
|
|
3332
|
-
const parsed = await spawnParseWorker(data);
|
|
3333
|
-
const modelNames = Object.keys(parsed);
|
|
3334
|
-
const total = modelNames.length;
|
|
3335
|
-
const manifest = { version: (/* @__PURE__ */ new Date()).toISOString(), models: {} };
|
|
3336
|
-
const TMP_PREFIX = `pos/data/tmp_import_${Date.now()}`;
|
|
3337
|
-
await fileService.writeAtomic(`${TMP_PREFIX}/.marker`, "1");
|
|
3338
|
-
let i = 0;
|
|
3339
|
-
for (const model of modelNames) {
|
|
3340
|
-
i++;
|
|
3341
|
-
onProgress?.(
|
|
3342
|
-
Math.round(i / total * 100),
|
|
3343
|
-
`Processing ${model} (${i}/${total})`
|
|
3344
|
-
);
|
|
3345
|
-
const block = parsed[model];
|
|
3346
|
-
const dataPart = block?.data ?? block ?? [];
|
|
3347
|
-
const fields = block?.fields ?? [];
|
|
3348
|
-
const relations = block?.relations ?? {};
|
|
3349
|
-
const serialized = await spawnStringifyWorker(dataPart);
|
|
3350
|
-
const tmpModelPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.json`;
|
|
3351
|
-
await fileService.writeAtomic(tmpModelPath, serialized);
|
|
3352
|
-
const meta = {
|
|
3353
|
-
fields,
|
|
3354
|
-
relations,
|
|
3355
|
-
count: Array.isArray(dataPart) ? dataPart.length : 0,
|
|
3356
|
-
writtenAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
3357
|
-
};
|
|
3358
|
-
const tmpMetaPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`;
|
|
3359
|
-
await fileService.writeAtomic(tmpMetaPath, JSON.stringify(meta));
|
|
3360
|
-
manifest.models[model] = {
|
|
3361
|
-
file: `${MODELS_DIR}/${encodeURIComponent(model)}.json`,
|
|
3362
|
-
metaFile: `${MODELS_META_DIR}/${encodeURIComponent(model)}.meta.json`,
|
|
3363
|
-
count: meta.count,
|
|
3364
|
-
updatedAt: meta.writtenAt
|
|
3365
|
-
};
|
|
3366
|
-
}
|
|
3367
|
-
onProgress?.(95, "Committing import (moving files)");
|
|
3368
|
-
for (const model of modelNames) {
|
|
3369
|
-
const tmpModelPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.json`;
|
|
3370
|
-
const finalModelPath = `${MODELS_DIR}/${encodeURIComponent(model)}.json`;
|
|
3371
|
-
const tmpMetaPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`;
|
|
3372
|
-
const finalMetaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
3373
|
-
model
|
|
3374
|
-
)}.meta.json`;
|
|
3375
|
-
const tmpRaw = await fileService.read(tmpModelPath);
|
|
3376
|
-
if (tmpRaw !== null) await fileService.writeAtomic(finalModelPath, tmpRaw);
|
|
3377
|
-
const tmpMetaRaw = await fileService.read(tmpMetaPath);
|
|
3378
|
-
if (tmpMetaRaw !== null)
|
|
3379
|
-
await fileService.writeAtomic(finalMetaPath, tmpMetaRaw);
|
|
3380
|
-
onProgress?.(
|
|
3381
|
-
95 + Math.round(
|
|
3382
|
-
(Object.keys(manifest.models).indexOf(model) + 1) / modelNames.length * 5
|
|
3383
|
-
),
|
|
3384
|
-
`Committed ${model}`
|
|
3385
|
-
);
|
|
3386
|
-
}
|
|
3387
|
-
await writeManifest(manifest);
|
|
3388
|
-
try {
|
|
3389
|
-
for (const model of modelNames) {
|
|
3390
|
-
await fileService.delete(
|
|
3391
|
-
`${TMP_PREFIX}/${encodeURIComponent(model)}.json`
|
|
3392
|
-
);
|
|
3393
|
-
await fileService.delete(
|
|
3394
|
-
`${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`
|
|
3395
|
-
);
|
|
3396
|
-
}
|
|
3397
|
-
await fileService.delete(`${TMP_PREFIX}/.marker`);
|
|
3398
|
-
} catch (e) {
|
|
3399
|
-
console.log("Failed to cleanup tmp import files:", e);
|
|
3400
|
-
}
|
|
3401
|
-
onProgress?.(100, "Import complete");
|
|
3402
|
-
return manifest;
|
|
3403
|
-
};
|
|
3404
|
-
var import_snapshot_default = importSnapshot;
|
|
3405
|
-
|
|
3406
|
-
// src/services/filesystem-service/memory-cache.ts
|
|
3407
|
-
var MemoryCache = class {
|
|
3408
|
-
map = /* @__PURE__ */ new Map();
|
|
3409
|
-
get(k) {
|
|
3410
|
-
const e = this.map.get(k);
|
|
3411
|
-
if (!e) return null;
|
|
3412
|
-
if (e.ttl && Date.now() - e.t > e.ttl) {
|
|
3413
|
-
this.map.delete(k);
|
|
3414
|
-
return null;
|
|
3415
|
-
}
|
|
3416
|
-
return e.value;
|
|
3417
|
-
}
|
|
3418
|
-
set(k, v, ttl = 5 * 60 * 1e3) {
|
|
3419
|
-
this.map.set(k, { value: v, t: Date.now(), ttl });
|
|
3420
|
-
}
|
|
3421
|
-
del(k) {
|
|
3422
|
-
this.map.delete(k);
|
|
3423
|
-
}
|
|
3424
|
-
clear() {
|
|
3425
|
-
this.map.clear();
|
|
3426
|
-
}
|
|
3427
|
-
};
|
|
3428
|
-
var memoryCache = new MemoryCache();
|
|
3429
|
-
|
|
3430
|
-
// src/services/filesystem-service/model-loader.ts
|
|
3431
|
-
var MODELS_DIR2 = "pos/models";
|
|
3432
|
-
var MODELS_META_DIR2 = "pos/models_meta";
|
|
3433
|
-
async function loadModelData(modelName, includeMeta = true) {
|
|
3434
|
-
const key = `model:${modelName}:meta:${includeMeta}`;
|
|
3435
|
-
const cached = memoryCache.get(key);
|
|
3436
|
-
if (cached) return cached;
|
|
3437
|
-
const dataPath = `${MODELS_DIR2}/${encodeURIComponent(modelName)}.json`;
|
|
3438
|
-
const metaPath = `${MODELS_META_DIR2}/${encodeURIComponent(
|
|
3439
|
-
modelName
|
|
3440
|
-
)}.meta.json`;
|
|
3441
|
-
const rawData = await fileService.read(dataPath);
|
|
3442
|
-
if (!rawData) return null;
|
|
3443
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
3444
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
3445
|
-
if (!includeMeta) {
|
|
3446
|
-
const result2 = { data };
|
|
3447
|
-
memoryCache.set(key, result2, 1e3 * 60 * 60);
|
|
3448
|
-
return result2;
|
|
3449
|
-
}
|
|
3450
|
-
const rawMeta = await fileService.read(metaPath);
|
|
3451
|
-
let fields = [];
|
|
3452
|
-
let relations = {};
|
|
3453
|
-
if (rawMeta) {
|
|
3454
|
-
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
3455
|
-
fields = parsedMeta?.fields ?? [];
|
|
3456
|
-
relations = parsedMeta?.relations ?? {};
|
|
3457
|
-
}
|
|
3458
|
-
const result = {
|
|
3459
|
-
data,
|
|
3460
|
-
fields,
|
|
3461
|
-
relations
|
|
3462
|
-
};
|
|
3463
|
-
memoryCache.set(key, result, 1e3 * 60 * 60);
|
|
3464
|
-
return result;
|
|
3465
|
-
}
|
|
3466
|
-
async function loadData(includeMeta = true) {
|
|
3467
|
-
try {
|
|
3468
|
-
const listResult = await fileService.list(MODELS_DIR2);
|
|
3469
|
-
if (!listResult || !Array.isArray(listResult.files)) {
|
|
3470
|
-
console.log("No models found");
|
|
3471
|
-
return {};
|
|
3472
|
-
}
|
|
3473
|
-
const result = {};
|
|
3474
|
-
for (const file of listResult.files) {
|
|
3475
|
-
if (file.type !== "file") continue;
|
|
3476
|
-
if (!file.name.endsWith(".json")) continue;
|
|
3477
|
-
const fileName = file.name;
|
|
3478
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
3479
|
-
const dataPath = `${MODELS_DIR2}/${fileName}`;
|
|
3480
|
-
const rawData = await fileService.read(dataPath);
|
|
3481
|
-
if (!rawData) continue;
|
|
3482
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
3483
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
3484
|
-
if (!includeMeta) {
|
|
3485
|
-
result[modelName] = { data };
|
|
3486
|
-
continue;
|
|
3487
|
-
}
|
|
3488
|
-
const metaPath = `${MODELS_META_DIR2}/${encodeURIComponent(
|
|
3489
|
-
modelName
|
|
3490
|
-
)}.meta.json`;
|
|
3491
|
-
const rawMeta = await fileService.read(metaPath);
|
|
3492
|
-
let fields = [];
|
|
3493
|
-
let relations = {};
|
|
3494
|
-
if (rawMeta) {
|
|
3495
|
-
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
3496
|
-
fields = parsedMeta?.fields ?? [];
|
|
3497
|
-
relations = parsedMeta?.relations ?? {};
|
|
3498
|
-
}
|
|
3499
|
-
result[modelName] = {
|
|
3500
|
-
data,
|
|
3501
|
-
fields,
|
|
3502
|
-
relations
|
|
3503
|
-
};
|
|
3504
|
-
}
|
|
3505
|
-
return result;
|
|
3506
|
-
} catch (error) {
|
|
3507
|
-
console.error("Error loading data:", error);
|
|
3508
|
-
throw error;
|
|
3509
|
-
}
|
|
3510
|
-
}
|
|
3511
|
-
|
|
3512
|
-
// src/services/filesystem-service/snapshot-helper.ts
|
|
3513
|
-
var createEmptySnapshot = () => {
|
|
3514
|
-
return {
|
|
3515
|
-
data: []
|
|
3516
|
-
};
|
|
3517
|
-
};
|
|
3518
|
-
var generateNextId = (existingIds, startFrom = 1) => {
|
|
3519
|
-
if (!existingIds || existingIds.length === 0) {
|
|
3520
|
-
return startFrom;
|
|
3521
|
-
}
|
|
3522
|
-
const maxId = Math.max(...existingIds, startFrom - 1);
|
|
3523
|
-
return maxId + 1;
|
|
3524
|
-
};
|
|
3525
|
-
var loadSnapshot = async ({
|
|
3526
|
-
modelName
|
|
3527
|
-
}) => {
|
|
3528
|
-
try {
|
|
3529
|
-
const snapshot = await loadModelData(modelName);
|
|
3530
|
-
if (!snapshot || typeof snapshot !== "object") {
|
|
3531
|
-
console.warn("invalid snapshot, creating new one");
|
|
3532
|
-
return createEmptySnapshot();
|
|
3533
|
-
}
|
|
3534
|
-
return {
|
|
3535
|
-
data: Array.isArray(snapshot.data) ? snapshot.data : []
|
|
3536
|
-
};
|
|
3537
|
-
} catch (error) {
|
|
3538
|
-
console.error("Failed to load snapshot:", error);
|
|
3539
|
-
return createEmptySnapshot();
|
|
3540
|
-
}
|
|
3541
|
-
};
|
|
3542
|
-
var getExistingIds = (snapshot) => {
|
|
3543
|
-
return snapshot.data.map((order) => order.id).filter((id) => typeof id === "number");
|
|
3544
|
-
};
|
|
3545
|
-
var saveSnapshot = async ({
|
|
3546
|
-
snapshot,
|
|
3547
|
-
modelName
|
|
3548
|
-
}) => {
|
|
3549
|
-
try {
|
|
3550
|
-
await import_snapshot_default({
|
|
3551
|
-
data: JSON.stringify({
|
|
3552
|
-
[modelName]: snapshot
|
|
3553
|
-
})
|
|
3554
|
-
});
|
|
3555
|
-
return true;
|
|
3556
|
-
} catch (error) {
|
|
3557
|
-
console.error("failed to save snapshot:", error);
|
|
3558
|
-
return false;
|
|
3559
|
-
}
|
|
3560
|
-
};
|
|
3561
|
-
var addRecordResponseHandler = ({
|
|
3562
|
-
modelName,
|
|
3563
|
-
id,
|
|
3564
|
-
data
|
|
3565
|
-
}) => {
|
|
3566
|
-
if (modelName === "restaurant.floor" /* RESTAURANT_FLOOR */ || modelName === "res.partner" /* RES_PARTNER */) {
|
|
3567
|
-
return [[id, ""]];
|
|
3568
|
-
}
|
|
3569
|
-
return data;
|
|
3570
|
-
};
|
|
3571
|
-
|
|
3572
|
-
// src/services/filesystem-service/model-repository.ts
|
|
3573
|
-
var ModelRepository = class {
|
|
3574
|
-
getAll = async ({ modelName }) => {
|
|
3575
|
-
try {
|
|
3576
|
-
const snapshot = await loadSnapshot({
|
|
3577
|
-
modelName
|
|
3578
|
-
});
|
|
3579
|
-
return snapshot.data;
|
|
3580
|
-
} catch (error) {
|
|
3581
|
-
console.error("failed to get all records:", error);
|
|
3582
|
-
return [];
|
|
3583
|
-
}
|
|
3584
|
-
};
|
|
3585
|
-
getRecord = async ({
|
|
3586
|
-
id,
|
|
3587
|
-
modelName
|
|
3588
|
-
}) => {
|
|
3589
|
-
try {
|
|
3590
|
-
const snapshot = await loadSnapshot({
|
|
3591
|
-
modelName
|
|
3592
|
-
});
|
|
3593
|
-
return snapshot.data.find((record) => record.id === id) || null;
|
|
3594
|
-
} catch (error) {
|
|
3595
|
-
console.error("failed to get record:", error);
|
|
3596
|
-
return null;
|
|
3597
|
-
}
|
|
3598
|
-
};
|
|
3599
|
-
addRecord = async ({
|
|
3600
|
-
newRecord,
|
|
3601
|
-
modelName
|
|
3602
|
-
}) => {
|
|
3603
|
-
try {
|
|
3604
|
-
const snapshot = await loadSnapshot({
|
|
3605
|
-
modelName
|
|
3606
|
-
});
|
|
3607
|
-
const existingIds = getExistingIds(snapshot);
|
|
3608
|
-
const newId = generateNextId(existingIds, snapshot.data.length);
|
|
3609
|
-
snapshot.data.push({
|
|
3610
|
-
...newRecord,
|
|
3611
|
-
id: newId
|
|
3612
|
-
});
|
|
3613
|
-
const saved = await saveSnapshot({
|
|
3614
|
-
snapshot,
|
|
3615
|
-
modelName
|
|
3616
|
-
});
|
|
3617
|
-
if (!saved) {
|
|
3618
|
-
console.error("failed to add new record");
|
|
3619
|
-
return [];
|
|
3620
|
-
}
|
|
3621
|
-
console.log("lib data:", snapshot.data);
|
|
3622
|
-
const response = addRecordResponseHandler({
|
|
3623
|
-
id: newId,
|
|
3624
|
-
modelName,
|
|
3625
|
-
data: snapshot.data
|
|
3626
|
-
});
|
|
3627
|
-
return response;
|
|
3628
|
-
} catch (error) {
|
|
3629
|
-
console.error("failed to add new record:", error);
|
|
3630
|
-
return [];
|
|
3631
|
-
}
|
|
3632
|
-
};
|
|
3633
|
-
updateRecord = async ({
|
|
3634
|
-
id,
|
|
3635
|
-
update,
|
|
3636
|
-
modelName
|
|
3637
|
-
}) => {
|
|
3638
|
-
try {
|
|
3639
|
-
const snapshot = await loadSnapshot({
|
|
3640
|
-
modelName
|
|
3641
|
-
});
|
|
3642
|
-
const index = snapshot.data.findIndex((record) => record.id === id);
|
|
3643
|
-
if (index === -1) {
|
|
3644
|
-
console.error(`record with id ${id} not found`);
|
|
3645
|
-
return false;
|
|
3646
|
-
}
|
|
3647
|
-
snapshot.data[index] = {
|
|
3648
|
-
...snapshot.data[index],
|
|
3649
|
-
...update
|
|
3650
|
-
};
|
|
3651
|
-
return await saveSnapshot({
|
|
3652
|
-
snapshot,
|
|
3653
|
-
modelName
|
|
3654
|
-
});
|
|
3655
|
-
} catch (error) {
|
|
3656
|
-
console.error("error updating record:", error);
|
|
3657
|
-
return false;
|
|
3658
|
-
}
|
|
3659
|
-
};
|
|
3660
|
-
deleteRecord = async ({
|
|
3661
|
-
id,
|
|
3662
|
-
modelName
|
|
3663
|
-
}) => {
|
|
3664
|
-
try {
|
|
3665
|
-
const snapshot = await loadSnapshot({
|
|
3666
|
-
modelName
|
|
3667
|
-
});
|
|
3668
|
-
const before = snapshot.data.length;
|
|
3669
|
-
snapshot.data = snapshot.data.filter((record) => record.id !== id);
|
|
3670
|
-
if (snapshot.data.length === before) {
|
|
3671
|
-
console.error(`record with id ${id} not found`);
|
|
3672
|
-
return false;
|
|
3673
|
-
}
|
|
3674
|
-
return await saveSnapshot({
|
|
3675
|
-
snapshot,
|
|
3676
|
-
modelName
|
|
3677
|
-
});
|
|
3678
|
-
} catch (error) {
|
|
3679
|
-
console.error("error deleting record:", error);
|
|
3680
|
-
return false;
|
|
3681
|
-
}
|
|
3682
|
-
};
|
|
3683
|
-
};
|
|
3684
|
-
|
|
3685
|
-
// src/services/pos-service/add-entity.ts
|
|
3686
3196
|
var addEntityService = (env) => {
|
|
3687
|
-
const isLocalMode = env?.isLocalMode;
|
|
3688
|
-
const repo = new ModelRepository();
|
|
3689
3197
|
const addEntity = useCallback4(
|
|
3690
3198
|
({
|
|
3691
3199
|
model,
|
|
@@ -3694,12 +3202,6 @@ var addEntityService = (env) => {
|
|
|
3694
3202
|
service,
|
|
3695
3203
|
isCreateEndpoint = false
|
|
3696
3204
|
}) => {
|
|
3697
|
-
if (isLocalMode) {
|
|
3698
|
-
return repo.addRecord({
|
|
3699
|
-
newRecord: values,
|
|
3700
|
-
modelName: model
|
|
3701
|
-
});
|
|
3702
|
-
}
|
|
3703
3205
|
const jsonData = {
|
|
3704
3206
|
model,
|
|
3705
3207
|
values
|
|
@@ -3716,7 +3218,7 @@ var addEntityService = (env) => {
|
|
|
3716
3218
|
service
|
|
3717
3219
|
);
|
|
3718
3220
|
},
|
|
3719
|
-
[env
|
|
3221
|
+
[env]
|
|
3720
3222
|
);
|
|
3721
3223
|
return {
|
|
3722
3224
|
addEntity
|
|
@@ -3838,8 +3340,6 @@ var createEInvoiceService = (env) => {
|
|
|
3838
3340
|
// src/services/pos-service/create-entity.ts
|
|
3839
3341
|
import { useCallback as useCallback8 } from "react";
|
|
3840
3342
|
var createEntityService = (env) => {
|
|
3841
|
-
const isLocalMode = env?.isLocalMode;
|
|
3842
|
-
const repo = new ModelRepository();
|
|
3843
3343
|
const createEntity = useCallback8(
|
|
3844
3344
|
({
|
|
3845
3345
|
model,
|
|
@@ -3847,12 +3347,6 @@ var createEntityService = (env) => {
|
|
|
3847
3347
|
xNode,
|
|
3848
3348
|
service
|
|
3849
3349
|
}) => {
|
|
3850
|
-
if (isLocalMode) {
|
|
3851
|
-
return repo.addRecord({
|
|
3852
|
-
newRecord: args[0],
|
|
3853
|
-
modelName: model
|
|
3854
|
-
});
|
|
3855
|
-
}
|
|
3856
3350
|
const jsonData = {
|
|
3857
3351
|
model,
|
|
3858
3352
|
method: "create" /* CREATE */,
|
|
@@ -3870,7 +3364,7 @@ var createEntityService = (env) => {
|
|
|
3870
3364
|
service
|
|
3871
3365
|
);
|
|
3872
3366
|
},
|
|
3873
|
-
[env
|
|
3367
|
+
[env]
|
|
3874
3368
|
);
|
|
3875
3369
|
return {
|
|
3876
3370
|
createEntity
|
|
@@ -3955,8 +3449,6 @@ var createSessionService = (env) => {
|
|
|
3955
3449
|
// src/services/pos-service/delete-entity.ts
|
|
3956
3450
|
import { useCallback as useCallback11 } from "react";
|
|
3957
3451
|
var deleteEntityService = (env) => {
|
|
3958
|
-
const isLocalMode = env?.isLocalMode;
|
|
3959
|
-
const repo = new ModelRepository();
|
|
3960
3452
|
const deleteEntity = useCallback11(
|
|
3961
3453
|
({
|
|
3962
3454
|
model,
|
|
@@ -3965,14 +3457,6 @@ var deleteEntityService = (env) => {
|
|
|
3965
3457
|
service,
|
|
3966
3458
|
method
|
|
3967
3459
|
}) => {
|
|
3968
|
-
if (isLocalMode) {
|
|
3969
|
-
const id = ids[0];
|
|
3970
|
-
if (!id) return;
|
|
3971
|
-
return repo.deleteRecord({
|
|
3972
|
-
modelName: model,
|
|
3973
|
-
id
|
|
3974
|
-
});
|
|
3975
|
-
}
|
|
3976
3460
|
const jsonData = {
|
|
3977
3461
|
model,
|
|
3978
3462
|
ids,
|
|
@@ -3990,7 +3474,7 @@ var deleteEntityService = (env) => {
|
|
|
3990
3474
|
service
|
|
3991
3475
|
);
|
|
3992
3476
|
},
|
|
3993
|
-
[env
|
|
3477
|
+
[env]
|
|
3994
3478
|
);
|
|
3995
3479
|
return {
|
|
3996
3480
|
deleteEntity
|
|
@@ -4067,8 +3551,6 @@ var getCurrentUserService = (env) => {
|
|
|
4067
3551
|
// src/services/pos-service/get-list.ts
|
|
4068
3552
|
import { useCallback as useCallback14 } from "react";
|
|
4069
3553
|
var getListService = (env) => {
|
|
4070
|
-
const isLocalMode = env?.isLocalMode;
|
|
4071
|
-
const repo = new ModelRepository();
|
|
4072
3554
|
const getList = useCallback14(
|
|
4073
3555
|
async ({
|
|
4074
3556
|
model,
|
|
@@ -4079,12 +3561,6 @@ var getListService = (env) => {
|
|
|
4079
3561
|
offset,
|
|
4080
3562
|
limit
|
|
4081
3563
|
}) => {
|
|
4082
|
-
if (isLocalMode) {
|
|
4083
|
-
const data = await repo.getAll({
|
|
4084
|
-
modelName: model
|
|
4085
|
-
});
|
|
4086
|
-
return data;
|
|
4087
|
-
}
|
|
4088
3564
|
const jsonData = {
|
|
4089
3565
|
model,
|
|
4090
3566
|
method: "web_search_read" /* WEB_SEARCH_READ */,
|
|
@@ -4107,7 +3583,7 @@ var getListService = (env) => {
|
|
|
4107
3583
|
service
|
|
4108
3584
|
);
|
|
4109
3585
|
},
|
|
4110
|
-
[env
|
|
3586
|
+
[env]
|
|
4111
3587
|
);
|
|
4112
3588
|
return {
|
|
4113
3589
|
getList
|
|
@@ -4436,8 +3912,41 @@ var handleClosingSessionService = (env) => {
|
|
|
4436
3912
|
|
|
4437
3913
|
// src/services/pos-service/load-data-pos-session.ts
|
|
4438
3914
|
import { useCallback as useCallback23 } from "react";
|
|
3915
|
+
|
|
3916
|
+
// src/provider/supabase-provider.tsx
|
|
3917
|
+
import { createContext as createContext2, useContext as useContext2, useMemo } from "react";
|
|
3918
|
+
import { createClient } from "@supabase/supabase-js";
|
|
3919
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
3920
|
+
var SupabaseContext = createContext2(null);
|
|
3921
|
+
var useSupabase = () => {
|
|
3922
|
+
const context = useContext2(SupabaseContext);
|
|
3923
|
+
if (!context) {
|
|
3924
|
+
throw new Error(
|
|
3925
|
+
"useSupabase must be used within a SupabaseProvider or check your env config"
|
|
3926
|
+
);
|
|
3927
|
+
}
|
|
3928
|
+
return context;
|
|
3929
|
+
};
|
|
3930
|
+
|
|
3931
|
+
// src/services/pos-service/load-data-pos-session.ts
|
|
3932
|
+
var MODEL_TO_TABLE = {
|
|
3933
|
+
["account.tax" /* ACCOUNT_TAX */]: "account_taxes",
|
|
3934
|
+
["res.company" /* RES_COMPANY */]: "companies",
|
|
3935
|
+
["res.partner" /* RES_PARTNER */]: "customers",
|
|
3936
|
+
["res.users" /* RES_USERS */]: "employees",
|
|
3937
|
+
["loyalty.program" /* LOYALTY_PROGRAM */]: "loyalty_programs",
|
|
3938
|
+
["loyalty.rule" /* LOYALTY_RULE */]: "loyalty_rules",
|
|
3939
|
+
["pos.order.line" /* POS_ORDER_LINE */]: "order_lines",
|
|
3940
|
+
["pos.order" /* POS_ORDER */]: "orders",
|
|
3941
|
+
["pos.payment.method" /* POS_PAYMENT_METHOD */]: "payment_methods",
|
|
3942
|
+
["pos.payment" /* POS_PAYMENT */]: "payments",
|
|
3943
|
+
["product.category" /* PRODUCT_CATEGORY */]: "product_categories",
|
|
3944
|
+
["product.product" /* PRODUCT_PRODUCT */]: "products",
|
|
3945
|
+
["restaurant.floor" /* RESTAURANT_FLOOR */]: "restaurant_floors",
|
|
3946
|
+
["restaurant.table" /* RESTAURANT_TABLE */]: "restaurant_tables"
|
|
3947
|
+
};
|
|
4439
3948
|
var loadDataPosSessionService = (env) => {
|
|
4440
|
-
const
|
|
3949
|
+
const supabase = useSupabase();
|
|
4441
3950
|
const loadDataPosSession = useCallback23(
|
|
4442
3951
|
async ({
|
|
4443
3952
|
model,
|
|
@@ -4448,10 +3957,6 @@ var loadDataPosSessionService = (env) => {
|
|
|
4448
3957
|
modelsToLoad = [],
|
|
4449
3958
|
searchParams
|
|
4450
3959
|
}) => {
|
|
4451
|
-
if (isLocalMode) {
|
|
4452
|
-
const data = await loadData();
|
|
4453
|
-
return data;
|
|
4454
|
-
}
|
|
4455
3960
|
const jsonData = {
|
|
4456
3961
|
model,
|
|
4457
3962
|
method: "load_data" /* LOAD_DATA */,
|
|
@@ -4478,10 +3983,59 @@ var loadDataPosSessionService = (env) => {
|
|
|
4478
3983
|
service
|
|
4479
3984
|
);
|
|
4480
3985
|
},
|
|
4481
|
-
[env
|
|
3986
|
+
[env]
|
|
4482
3987
|
);
|
|
3988
|
+
const loadDataPosSessionSupabase = useCallback23(async () => {
|
|
3989
|
+
try {
|
|
3990
|
+
const allModels = Object.values(LoadDataModel);
|
|
3991
|
+
const promises = allModels.map(async (modelName) => {
|
|
3992
|
+
const tableName = MODEL_TO_TABLE[modelName];
|
|
3993
|
+
if (!tableName) {
|
|
3994
|
+
return {
|
|
3995
|
+
modelName,
|
|
3996
|
+
data: [],
|
|
3997
|
+
fields: {},
|
|
3998
|
+
relations: {}
|
|
3999
|
+
};
|
|
4000
|
+
}
|
|
4001
|
+
const { data, error } = await supabase.from(tableName).select("*");
|
|
4002
|
+
if (error) {
|
|
4003
|
+
console.error(`Error loading ${modelName}:`, error);
|
|
4004
|
+
return {
|
|
4005
|
+
modelName,
|
|
4006
|
+
data: [],
|
|
4007
|
+
fields: {},
|
|
4008
|
+
relations: {}
|
|
4009
|
+
};
|
|
4010
|
+
}
|
|
4011
|
+
return {
|
|
4012
|
+
modelName,
|
|
4013
|
+
data: data || [],
|
|
4014
|
+
fields: {},
|
|
4015
|
+
relations: {}
|
|
4016
|
+
};
|
|
4017
|
+
});
|
|
4018
|
+
const results = await Promise.all(promises);
|
|
4019
|
+
const response = results.reduce(
|
|
4020
|
+
(acc, { modelName, data, fields, relations }) => {
|
|
4021
|
+
acc[modelName] = {
|
|
4022
|
+
data,
|
|
4023
|
+
fields,
|
|
4024
|
+
relations
|
|
4025
|
+
};
|
|
4026
|
+
return acc;
|
|
4027
|
+
},
|
|
4028
|
+
{}
|
|
4029
|
+
);
|
|
4030
|
+
return response;
|
|
4031
|
+
} catch (error) {
|
|
4032
|
+
console.error("Error loading data from Supabase:", error);
|
|
4033
|
+
return {};
|
|
4034
|
+
}
|
|
4035
|
+
}, [supabase]);
|
|
4483
4036
|
return {
|
|
4484
|
-
loadDataPosSession
|
|
4037
|
+
loadDataPosSession,
|
|
4038
|
+
loadDataPosSessionSupabase
|
|
4485
4039
|
};
|
|
4486
4040
|
};
|
|
4487
4041
|
|
|
@@ -4703,8 +4257,6 @@ var updateClosedSessionService = (env) => {
|
|
|
4703
4257
|
// src/services/pos-service/update-entity.ts
|
|
4704
4258
|
import { useCallback as useCallback30 } from "react";
|
|
4705
4259
|
var updateEntityService = (env) => {
|
|
4706
|
-
const isLocalMode = env?.isLocalMode;
|
|
4707
|
-
const repo = new ModelRepository();
|
|
4708
4260
|
const updateEntity = useCallback30(
|
|
4709
4261
|
({
|
|
4710
4262
|
model,
|
|
@@ -4714,15 +4266,6 @@ var updateEntityService = (env) => {
|
|
|
4714
4266
|
xNode,
|
|
4715
4267
|
service
|
|
4716
4268
|
}) => {
|
|
4717
|
-
if (isLocalMode) {
|
|
4718
|
-
const id = extractIdFromDomain(domain);
|
|
4719
|
-
if (!id) return;
|
|
4720
|
-
return repo.updateRecord({
|
|
4721
|
-
update: values,
|
|
4722
|
-
modelName: model,
|
|
4723
|
-
id
|
|
4724
|
-
});
|
|
4725
|
-
}
|
|
4726
4269
|
const jsonData = {
|
|
4727
4270
|
model,
|
|
4728
4271
|
domain,
|
|
@@ -4740,7 +4283,7 @@ var updateEntityService = (env) => {
|
|
|
4740
4283
|
service
|
|
4741
4284
|
);
|
|
4742
4285
|
},
|
|
4743
|
-
[env
|
|
4286
|
+
[env]
|
|
4744
4287
|
);
|
|
4745
4288
|
return {
|
|
4746
4289
|
updateEntity
|
|
@@ -4950,19 +4493,16 @@ import { useMutation as useMutation84 } from "@tanstack/react-query";
|
|
|
4950
4493
|
// src/hooks/pos/use-update-order-status.ts
|
|
4951
4494
|
import { useMutation as useMutation85 } from "@tanstack/react-query";
|
|
4952
4495
|
|
|
4953
|
-
// src/hooks/pos/use-init-snapshot.ts
|
|
4954
|
-
import { useMutation as useMutation86 } from "@tanstack/react-query";
|
|
4955
|
-
|
|
4956
4496
|
// src/hooks/pos/use-complete-current-stage.ts
|
|
4957
|
-
import { useMutation as
|
|
4497
|
+
import { useMutation as useMutation86 } from "@tanstack/react-query";
|
|
4958
4498
|
|
|
4959
4499
|
// src/provider/service-provider.tsx
|
|
4960
|
-
import { jsx as
|
|
4961
|
-
var ServiceContext =
|
|
4500
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
4501
|
+
var ServiceContext = createContext3(null);
|
|
4962
4502
|
|
|
4963
4503
|
// src/provider/meta-provider.tsx
|
|
4964
4504
|
import { useEffect as useEffect3 } from "react";
|
|
4965
|
-
import { Fragment as Fragment2, jsx as
|
|
4505
|
+
import { Fragment as Fragment2, jsx as jsx8 } from "react/jsx-runtime";
|
|
4966
4506
|
|
|
4967
4507
|
// src/services/action-service/index.ts
|
|
4968
4508
|
function useActionService() {
|
|
@@ -7114,57 +6654,12 @@ function useDashboardService() {
|
|
|
7114
6654
|
);
|
|
7115
6655
|
return { readGroup, getDataChart };
|
|
7116
6656
|
}
|
|
7117
|
-
|
|
7118
|
-
// src/services/filesystem-service/init-snapshot.ts
|
|
7119
|
-
var isSnapshotReady = async () => {
|
|
7120
|
-
try {
|
|
7121
|
-
const raw = await fileService.read("pos/manifest.json");
|
|
7122
|
-
if (!raw) return false;
|
|
7123
|
-
const manifest = JSON.parse(raw);
|
|
7124
|
-
if (!manifest.models || typeof manifest.models !== "object") {
|
|
7125
|
-
return false;
|
|
7126
|
-
}
|
|
7127
|
-
const modelEntries = Object.values(manifest.models);
|
|
7128
|
-
if (modelEntries.length === 0) return false;
|
|
7129
|
-
const firstModel = modelEntries[0];
|
|
7130
|
-
if (!firstModel.file) return false;
|
|
7131
|
-
const modelExists = await fileService.exists(firstModel.file);
|
|
7132
|
-
return modelExists;
|
|
7133
|
-
} catch {
|
|
7134
|
-
return false;
|
|
7135
|
-
}
|
|
7136
|
-
};
|
|
7137
|
-
async function initSnapshot(onProgress) {
|
|
7138
|
-
const ready = await isSnapshotReady();
|
|
7139
|
-
if (ready) {
|
|
7140
|
-
console.log("skip initialization.");
|
|
7141
|
-
return;
|
|
7142
|
-
}
|
|
7143
|
-
console.log("initializing from data.json...");
|
|
7144
|
-
const jsonData = await fetch("/data.json").then((r) => r.text());
|
|
7145
|
-
if (!jsonData) {
|
|
7146
|
-
console.error("cannot load data.json");
|
|
7147
|
-
return;
|
|
7148
|
-
}
|
|
7149
|
-
await import_snapshot_default({
|
|
7150
|
-
data: jsonData,
|
|
7151
|
-
onProgress
|
|
7152
|
-
});
|
|
7153
|
-
}
|
|
7154
|
-
|
|
7155
|
-
// src/services/filesystem-service/index.ts
|
|
7156
|
-
var useFileSystemService = () => {
|
|
7157
|
-
return {
|
|
7158
|
-
initSnapshot
|
|
7159
|
-
};
|
|
7160
|
-
};
|
|
7161
6657
|
export {
|
|
7162
6658
|
useActionService,
|
|
7163
6659
|
useAuthService,
|
|
7164
6660
|
useCompanyService,
|
|
7165
6661
|
useDashboardService,
|
|
7166
6662
|
useExcelService,
|
|
7167
|
-
useFileSystemService,
|
|
7168
6663
|
useFormService,
|
|
7169
6664
|
useKanbanService,
|
|
7170
6665
|
useModelService,
|