@fctc/interface-logic 4.4.0 → 4.4.2
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 +301 -813
- package/dist/hooks.mjs +147 -658
- package/dist/provider.d.mts +13 -6
- package/dist/provider.d.ts +13 -6
- package/dist/provider.js +226 -711
- package/dist/provider.mjs +187 -674
- package/dist/services.d.mts +8 -8
- package/dist/services.d.ts +8 -8
- package/dist/services.js +262 -766
- package/dist/services.mjs +150 -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,35 @@ 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 useSupabaseOptional = () => {
|
|
3922
|
+
return useContext2(SupabaseContext);
|
|
3923
|
+
};
|
|
3924
|
+
|
|
3925
|
+
// src/services/pos-service/load-data-pos-session.ts
|
|
3926
|
+
var MODEL_TO_TABLE = {
|
|
3927
|
+
["account.tax" /* ACCOUNT_TAX */]: "account_taxes",
|
|
3928
|
+
["res.company" /* RES_COMPANY */]: "companies",
|
|
3929
|
+
["res.partner" /* RES_PARTNER */]: "customers",
|
|
3930
|
+
["res.users" /* RES_USERS */]: "employees",
|
|
3931
|
+
["loyalty.program" /* LOYALTY_PROGRAM */]: "loyalty_programs",
|
|
3932
|
+
["loyalty.rule" /* LOYALTY_RULE */]: "loyalty_rules",
|
|
3933
|
+
["pos.order.line" /* POS_ORDER_LINE */]: "order_lines",
|
|
3934
|
+
["pos.order" /* POS_ORDER */]: "orders",
|
|
3935
|
+
["pos.payment.method" /* POS_PAYMENT_METHOD */]: "payment_methods",
|
|
3936
|
+
["pos.payment" /* POS_PAYMENT */]: "payments",
|
|
3937
|
+
["product.category" /* PRODUCT_CATEGORY */]: "product_categories",
|
|
3938
|
+
["product.product" /* PRODUCT_PRODUCT */]: "products",
|
|
3939
|
+
["restaurant.floor" /* RESTAURANT_FLOOR */]: "restaurant_floors",
|
|
3940
|
+
["restaurant.table" /* RESTAURANT_TABLE */]: "restaurant_tables"
|
|
3941
|
+
};
|
|
4439
3942
|
var loadDataPosSessionService = (env) => {
|
|
4440
|
-
const
|
|
3943
|
+
const supabase = useSupabaseOptional();
|
|
4441
3944
|
const loadDataPosSession = useCallback23(
|
|
4442
3945
|
async ({
|
|
4443
3946
|
model,
|
|
@@ -4448,10 +3951,6 @@ var loadDataPosSessionService = (env) => {
|
|
|
4448
3951
|
modelsToLoad = [],
|
|
4449
3952
|
searchParams
|
|
4450
3953
|
}) => {
|
|
4451
|
-
if (isLocalMode) {
|
|
4452
|
-
const data = await loadData();
|
|
4453
|
-
return data;
|
|
4454
|
-
}
|
|
4455
3954
|
const jsonData = {
|
|
4456
3955
|
model,
|
|
4457
3956
|
method: "load_data" /* LOAD_DATA */,
|
|
@@ -4478,10 +3977,67 @@ var loadDataPosSessionService = (env) => {
|
|
|
4478
3977
|
service
|
|
4479
3978
|
);
|
|
4480
3979
|
},
|
|
4481
|
-
[env
|
|
3980
|
+
[env]
|
|
4482
3981
|
);
|
|
3982
|
+
const loadDataPosSessionSupabase = useCallback23(async () => {
|
|
3983
|
+
try {
|
|
3984
|
+
const allModels = Object.values(LoadDataModel);
|
|
3985
|
+
const promises = allModels.map(async (modelName) => {
|
|
3986
|
+
const tableName = MODEL_TO_TABLE[modelName];
|
|
3987
|
+
if (!tableName) {
|
|
3988
|
+
return {
|
|
3989
|
+
modelName,
|
|
3990
|
+
data: [],
|
|
3991
|
+
fields: {},
|
|
3992
|
+
relations: {}
|
|
3993
|
+
};
|
|
3994
|
+
}
|
|
3995
|
+
if (!supabase) {
|
|
3996
|
+
return {
|
|
3997
|
+
modelName,
|
|
3998
|
+
data: [],
|
|
3999
|
+
fields: {},
|
|
4000
|
+
relations: {}
|
|
4001
|
+
};
|
|
4002
|
+
}
|
|
4003
|
+
const { data, error } = await supabase.from(tableName).select("*");
|
|
4004
|
+
if (error) {
|
|
4005
|
+
console.error(`Error loading ${modelName}:`, error);
|
|
4006
|
+
return {
|
|
4007
|
+
modelName,
|
|
4008
|
+
data: [],
|
|
4009
|
+
fields: {},
|
|
4010
|
+
relations: {}
|
|
4011
|
+
};
|
|
4012
|
+
}
|
|
4013
|
+
return {
|
|
4014
|
+
modelName,
|
|
4015
|
+
data: data || [],
|
|
4016
|
+
fields: {},
|
|
4017
|
+
relations: {}
|
|
4018
|
+
};
|
|
4019
|
+
});
|
|
4020
|
+
const results = await Promise.all(promises);
|
|
4021
|
+
const response = results.reduce(
|
|
4022
|
+
(acc, { modelName, data, fields, relations }) => {
|
|
4023
|
+
acc[modelName] = {
|
|
4024
|
+
data,
|
|
4025
|
+
fields,
|
|
4026
|
+
relations
|
|
4027
|
+
};
|
|
4028
|
+
return acc;
|
|
4029
|
+
},
|
|
4030
|
+
{}
|
|
4031
|
+
);
|
|
4032
|
+
return response;
|
|
4033
|
+
} catch (error) {
|
|
4034
|
+
console.error("Error loading data from Supabase:", error);
|
|
4035
|
+
return {};
|
|
4036
|
+
}
|
|
4037
|
+
}, [supabase]);
|
|
4483
4038
|
return {
|
|
4484
|
-
loadDataPosSession
|
|
4039
|
+
loadDataPosSession,
|
|
4040
|
+
loadDataPosSessionSupabase
|
|
4485
4041
|
};
|
|
4486
4042
|
};
|
|
4487
4043
|
|
|
@@ -4703,8 +4259,6 @@ var updateClosedSessionService = (env) => {
|
|
|
4703
4259
|
// src/services/pos-service/update-entity.ts
|
|
4704
4260
|
import { useCallback as useCallback30 } from "react";
|
|
4705
4261
|
var updateEntityService = (env) => {
|
|
4706
|
-
const isLocalMode = env?.isLocalMode;
|
|
4707
|
-
const repo = new ModelRepository();
|
|
4708
4262
|
const updateEntity = useCallback30(
|
|
4709
4263
|
({
|
|
4710
4264
|
model,
|
|
@@ -4714,15 +4268,6 @@ var updateEntityService = (env) => {
|
|
|
4714
4268
|
xNode,
|
|
4715
4269
|
service
|
|
4716
4270
|
}) => {
|
|
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
4271
|
const jsonData = {
|
|
4727
4272
|
model,
|
|
4728
4273
|
domain,
|
|
@@ -4740,7 +4285,7 @@ var updateEntityService = (env) => {
|
|
|
4740
4285
|
service
|
|
4741
4286
|
);
|
|
4742
4287
|
},
|
|
4743
|
-
[env
|
|
4288
|
+
[env]
|
|
4744
4289
|
);
|
|
4745
4290
|
return {
|
|
4746
4291
|
updateEntity
|
|
@@ -4950,19 +4495,16 @@ import { useMutation as useMutation84 } from "@tanstack/react-query";
|
|
|
4950
4495
|
// src/hooks/pos/use-update-order-status.ts
|
|
4951
4496
|
import { useMutation as useMutation85 } from "@tanstack/react-query";
|
|
4952
4497
|
|
|
4953
|
-
// src/hooks/pos/use-init-snapshot.ts
|
|
4954
|
-
import { useMutation as useMutation86 } from "@tanstack/react-query";
|
|
4955
|
-
|
|
4956
4498
|
// src/hooks/pos/use-complete-current-stage.ts
|
|
4957
|
-
import { useMutation as
|
|
4499
|
+
import { useMutation as useMutation86 } from "@tanstack/react-query";
|
|
4958
4500
|
|
|
4959
4501
|
// src/provider/service-provider.tsx
|
|
4960
|
-
import { jsx as
|
|
4961
|
-
var ServiceContext =
|
|
4502
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
4503
|
+
var ServiceContext = createContext3(null);
|
|
4962
4504
|
|
|
4963
4505
|
// src/provider/meta-provider.tsx
|
|
4964
4506
|
import { useEffect as useEffect3 } from "react";
|
|
4965
|
-
import { Fragment as Fragment2, jsx as
|
|
4507
|
+
import { Fragment as Fragment2, jsx as jsx8 } from "react/jsx-runtime";
|
|
4966
4508
|
|
|
4967
4509
|
// src/services/action-service/index.ts
|
|
4968
4510
|
function useActionService() {
|
|
@@ -7114,57 +6656,12 @@ function useDashboardService() {
|
|
|
7114
6656
|
);
|
|
7115
6657
|
return { readGroup, getDataChart };
|
|
7116
6658
|
}
|
|
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
6659
|
export {
|
|
7162
6660
|
useActionService,
|
|
7163
6661
|
useAuthService,
|
|
7164
6662
|
useCompanyService,
|
|
7165
6663
|
useDashboardService,
|
|
7166
6664
|
useExcelService,
|
|
7167
|
-
useFileSystemService,
|
|
7168
6665
|
useFormService,
|
|
7169
6666
|
useKanbanService,
|
|
7170
6667
|
useModelService,
|