@fctc/interface-logic 4.3.9 → 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/provider.js CHANGED
@@ -35,9 +35,11 @@ __export(provider_exports, {
35
35
  MetaProvider: () => MetaProvider,
36
36
  ReactQueryProvider: () => ReactQueryProvider,
37
37
  ServiceProvider: () => ServiceProvider,
38
+ SupabaseProvider: () => SupabaseProvider,
38
39
  VersionGate: () => VersionGate,
39
40
  useEnv: () => useEnv,
40
- useService: () => useService
41
+ useService: () => useService,
42
+ useSupabase: () => useSupabase
41
43
  });
42
44
  module.exports = __toCommonJS(provider_exports);
43
45
 
@@ -107,7 +109,7 @@ var initialState2 = {
107
109
  lang: "vi_VN",
108
110
  tz: "Asia/Saigon"
109
111
  },
110
- isLocalMode: false
112
+ isSupaMode: false
111
113
  };
112
114
  var envSlice = (0, import_toolkit2.createSlice)({
113
115
  name: "env",
@@ -698,7 +700,7 @@ var MainProvider = ({ children }) => {
698
700
  };
699
701
 
700
702
  // src/provider/version-gate-provider.tsx
701
- var import_react42 = require("react");
703
+ var import_react44 = require("react");
702
704
  var import_react_query2 = require("@tanstack/react-query");
703
705
 
704
706
  // src/services/action-service/index.ts
@@ -753,6 +755,58 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
753
755
  // src/utils/format.ts
754
756
  var import_moment = __toESM(require("moment"));
755
757
 
758
+ // src/constants/model/model-constant.ts
759
+ var LoadDataModel = /* @__PURE__ */ ((LoadDataModel2) => {
760
+ LoadDataModel2["ACCOUNT_CASH_ROUNDING"] = "account.cash.rounding";
761
+ LoadDataModel2["ACCOUNT_FISCAL_POSITION"] = "account.fiscal.position";
762
+ LoadDataModel2["ACCOUNT_FISCAL_POSITION_TAX"] = "account.fiscal.position.tax";
763
+ LoadDataModel2["ACCOUNT_TAX"] = "account.tax";
764
+ LoadDataModel2["ACCOUNT_TAX_GROUP"] = "account.tax.group";
765
+ LoadDataModel2["DECIMAL_PRECISION"] = "decimal.precision";
766
+ LoadDataModel2["IR_MODULE_MODULE"] = "ir.module.module";
767
+ LoadDataModel2["IR_UI_VIEW"] = "ir.ui.view";
768
+ LoadDataModel2["POS_BILL"] = "pos.bill";
769
+ LoadDataModel2["POS_CATEGORY"] = "pos.category";
770
+ LoadDataModel2["POS_CONFIG"] = "pos.config";
771
+ LoadDataModel2["POS_NOTE"] = "pos.note";
772
+ LoadDataModel2["POS_ORDER"] = "pos.order";
773
+ LoadDataModel2["POS_ORDER_LINE"] = "pos.order.line";
774
+ LoadDataModel2["POS_PACK_OPERATION_LOT"] = "pos.pack.operation.lot";
775
+ LoadDataModel2["POS_PAYMENT"] = "pos.payment";
776
+ LoadDataModel2["POS_PAYMENT_METHOD"] = "pos.payment.method";
777
+ LoadDataModel2["POS_PRINTER"] = "pos.printer";
778
+ LoadDataModel2["POS_SESSION"] = "pos.session";
779
+ LoadDataModel2["POS_PREPARATION_DISPLAY_DISPLAY"] = "pos_preparation_display.display";
780
+ LoadDataModel2["PRODUCT_ATTRIBUTE"] = "product.attribute";
781
+ LoadDataModel2["PRODUCT_ATTRIBUTE_CUSTOM_VALUE"] = "product.attribute.custom.value";
782
+ LoadDataModel2["PRODUCT_CATEGORY"] = "product.category";
783
+ LoadDataModel2["PRODUCT_COMBO"] = "product.combo";
784
+ LoadDataModel2["PRODUCT_COMBO_ITEM"] = "product.combo.item";
785
+ LoadDataModel2["PRODUCT_PACKAGING"] = "product.packaging";
786
+ LoadDataModel2["PRODUCT_PRICELIST"] = "product.pricelist";
787
+ LoadDataModel2["PRODUCT_PRICELIST_ITEM"] = "product.pricelist.item";
788
+ LoadDataModel2["PRODUCT_PRODUCT"] = "product.product";
789
+ LoadDataModel2["PRODUCT_TAG"] = "product.tag";
790
+ LoadDataModel2["PRODUCT_TEMPLATE_ATTRIBUTE_LINE"] = "product.template.attribute.line";
791
+ LoadDataModel2["PRODUCT_TEMPLATE_ATTRIBUTE_VALUE"] = "product.template.attribute.value";
792
+ LoadDataModel2["RES_COMPANY"] = "res.company";
793
+ LoadDataModel2["RES_COUNTRY"] = "res.country";
794
+ LoadDataModel2["RES_COUNTRY_STATE"] = "res.country.state";
795
+ LoadDataModel2["RES_CURRENCY"] = "res.currency";
796
+ LoadDataModel2["RES_LANG"] = "res.lang";
797
+ LoadDataModel2["RES_PARTNER"] = "res.partner";
798
+ LoadDataModel2["RES_USERS"] = "res.users";
799
+ LoadDataModel2["STOCK_PICKING_TYPE"] = "stock.picking.type";
800
+ LoadDataModel2["UOM_CATEGORY"] = "uom.category";
801
+ LoadDataModel2["UOM_UOM"] = "uom.uom";
802
+ LoadDataModel2["LOYALTY_PROGRAM"] = "loyalty.program";
803
+ LoadDataModel2["LOYALTY_RULE"] = "loyalty.rule";
804
+ LoadDataModel2["RESTAURANT_TABLE"] = "restaurant.table";
805
+ LoadDataModel2["RESTAURANT_FLOOR"] = "restaurant.floor";
806
+ LoadDataModel2["POS_MAKE_PAYMENT"] = "pos.make.payment";
807
+ return LoadDataModel2;
808
+ })(LoadDataModel || {});
809
+
756
810
  // src/constants/widget/widget-avatar-constant.ts
757
811
  var WIDGETAVATAR = /* @__PURE__ */ ((WIDGETAVATAR2) => {
758
812
  WIDGETAVATAR2["many2one_avatar_user"] = "many2one_avatar_user";
@@ -2922,13 +2976,6 @@ function cleanObject(obj) {
2922
2976
  }
2923
2977
  return result;
2924
2978
  }
2925
- var extractIdFromDomain = (domain) => {
2926
- if (!domain || !Array.isArray(domain)) return null;
2927
- const idCond = domain.find(
2928
- ([field, operator]) => field === "id" && operator === "="
2929
- );
2930
- return idCond ? Number(idCond[2]) : null;
2931
- };
2932
2979
 
2933
2980
  // src/utils/storage/local-storage.ts
2934
2981
  var localStorageUtils = () => {
@@ -5211,544 +5258,7 @@ var getASessionService = (env) => {
5211
5258
 
5212
5259
  // src/services/pos-service/add-entity.ts
5213
5260
  var import_react14 = require("react");
5214
-
5215
- // src/services/filesystem-service/file-service.ts
5216
- var import_filesystem = require("@capacitor/filesystem");
5217
- var fileService = {
5218
- read: async (path) => {
5219
- try {
5220
- const res = await import_filesystem.Filesystem.readFile({
5221
- path,
5222
- directory: import_filesystem.Directory.Data,
5223
- encoding: import_filesystem.Encoding.UTF8
5224
- });
5225
- if (typeof res.data === "string") return res.data;
5226
- if (res.data instanceof Blob) return await res.data.text();
5227
- return null;
5228
- } catch {
5229
- return null;
5230
- }
5231
- },
5232
- write: async (path, data) => {
5233
- await import_filesystem.Filesystem.writeFile({
5234
- path,
5235
- data,
5236
- directory: import_filesystem.Directory.Data,
5237
- encoding: import_filesystem.Encoding.UTF8,
5238
- recursive: true
5239
- });
5240
- },
5241
- writeAtomic: async (path, data) => {
5242
- const tempPath = path + ".tmp";
5243
- await import_filesystem.Filesystem.writeFile({
5244
- path: tempPath,
5245
- data,
5246
- directory: import_filesystem.Directory.Data,
5247
- encoding: import_filesystem.Encoding.UTF8,
5248
- recursive: true
5249
- });
5250
- try {
5251
- await import_filesystem.Filesystem.deleteFile({
5252
- path,
5253
- directory: import_filesystem.Directory.Data
5254
- });
5255
- } catch {
5256
- }
5257
- await import_filesystem.Filesystem.rename({
5258
- from: tempPath,
5259
- to: path,
5260
- directory: import_filesystem.Directory.Data
5261
- });
5262
- },
5263
- delete: async (path) => {
5264
- try {
5265
- await import_filesystem.Filesystem.deleteFile({
5266
- path,
5267
- directory: import_filesystem.Directory.Data
5268
- });
5269
- } catch {
5270
- }
5271
- },
5272
- exists: async (path) => {
5273
- try {
5274
- await import_filesystem.Filesystem.stat({
5275
- path,
5276
- directory: import_filesystem.Directory.Data
5277
- });
5278
- return true;
5279
- } catch {
5280
- return false;
5281
- }
5282
- },
5283
- mkdir: async (path) => {
5284
- try {
5285
- await import_filesystem.Filesystem.mkdir({
5286
- path,
5287
- directory: import_filesystem.Directory.Data,
5288
- recursive: true
5289
- });
5290
- } catch (e) {
5291
- if (!String(e?.message).includes("Exists")) {
5292
- throw e;
5293
- }
5294
- }
5295
- },
5296
- list: async (path) => {
5297
- return import_filesystem.Filesystem.readdir({
5298
- path,
5299
- directory: import_filesystem.Directory.Data
5300
- });
5301
- },
5302
- getUri: async (path) => {
5303
- return import_filesystem.Filesystem.getUri({
5304
- path,
5305
- directory: import_filesystem.Directory.Data
5306
- });
5307
- }
5308
- };
5309
-
5310
- // src/services/filesystem-service/json-worker.ts
5311
- function createWorkerBlob() {
5312
- const workerCode = `
5313
- self.addEventListener("message", async (ev) => {
5314
- const { id, cmd, payload } = ev.data;
5315
- try {
5316
- if (cmd === "parse") {
5317
- const parsed = JSON.parse(payload);
5318
- self.postMessage({ id, ok: true, result: parsed });
5319
- } else if (cmd === "stringify") {
5320
- const str = JSON.stringify(payload);
5321
- self.postMessage({ id, ok: true, result: str });
5322
- }
5323
- } catch (err) {
5324
- self.postMessage({ id, ok: false, error: err?.message || String(err) });
5325
- }
5326
- });
5327
- `;
5328
- const blob = new Blob([workerCode], { type: "application/javascript" });
5329
- return URL.createObjectURL(blob);
5330
- }
5331
- function spawnParseWorker(raw) {
5332
- return new Promise((resolve, reject) => {
5333
- const workerUrl = createWorkerBlob();
5334
- const worker = new Worker(workerUrl);
5335
- const id = Math.random().toString(36).slice(2);
5336
- worker.onmessage = (ev) => {
5337
- const { ok, result, error } = ev.data;
5338
- if (ok) {
5339
- resolve(result);
5340
- } else {
5341
- reject(new Error(error));
5342
- }
5343
- URL.revokeObjectURL(workerUrl);
5344
- worker.terminate();
5345
- };
5346
- worker.onerror = (err) => {
5347
- reject(err);
5348
- URL.revokeObjectURL(workerUrl);
5349
- worker.terminate();
5350
- };
5351
- worker.postMessage({ id, cmd: "parse", payload: raw });
5352
- });
5353
- }
5354
- function spawnStringifyWorker(obj) {
5355
- return new Promise((resolve, reject) => {
5356
- const workerUrl = createWorkerBlob();
5357
- const worker = new Worker(workerUrl);
5358
- worker.onmessage = (ev) => {
5359
- const { ok, result, error } = ev.data;
5360
- if (ok) resolve(result);
5361
- else reject(new Error(error));
5362
- URL.revokeObjectURL(workerUrl);
5363
- worker.terminate();
5364
- };
5365
- worker.onerror = (err) => {
5366
- reject(err);
5367
- URL.revokeObjectURL(workerUrl);
5368
- worker.terminate();
5369
- };
5370
- worker.postMessage({ cmd: "stringify", payload: obj });
5371
- });
5372
- }
5373
-
5374
- // src/services/filesystem-service/manifest.ts
5375
- var MANIFEST_PATH = "pos/manifest.json";
5376
- var MANIFEST_BAK_PATH = "pos/manifest.bak.json";
5377
- async function writeManifest(manifest) {
5378
- const oldRaw = await fileService.read(MANIFEST_PATH);
5379
- if (oldRaw !== null) {
5380
- await fileService.writeAtomic(MANIFEST_BAK_PATH, oldRaw);
5381
- }
5382
- await fileService.writeAtomic(MANIFEST_PATH, JSON.stringify(manifest));
5383
- try {
5384
- await fileService.delete(MANIFEST_BAK_PATH);
5385
- } catch {
5386
- }
5387
- }
5388
-
5389
- // src/services/filesystem-service/import-snapshot.ts
5390
- var DATA_DIR = "pos";
5391
- var MODELS_DIR = `${DATA_DIR}/models`;
5392
- var MODELS_META_DIR = `${DATA_DIR}/models_meta`;
5393
- var importSnapshot = async ({ data, onProgress }) => {
5394
- onProgress?.(1, "Parsing snapshot");
5395
- const parsed = await spawnParseWorker(data);
5396
- const modelNames = Object.keys(parsed);
5397
- const total = modelNames.length;
5398
- const manifest = { version: (/* @__PURE__ */ new Date()).toISOString(), models: {} };
5399
- const TMP_PREFIX = `pos/data/tmp_import_${Date.now()}`;
5400
- await fileService.writeAtomic(`${TMP_PREFIX}/.marker`, "1");
5401
- let i = 0;
5402
- for (const model of modelNames) {
5403
- i++;
5404
- onProgress?.(
5405
- Math.round(i / total * 100),
5406
- `Processing ${model} (${i}/${total})`
5407
- );
5408
- const block = parsed[model];
5409
- const dataPart = block?.data ?? block ?? [];
5410
- const fields = block?.fields ?? [];
5411
- const relations = block?.relations ?? {};
5412
- const serialized = await spawnStringifyWorker(dataPart);
5413
- const tmpModelPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.json`;
5414
- await fileService.writeAtomic(tmpModelPath, serialized);
5415
- const meta = {
5416
- fields,
5417
- relations,
5418
- count: Array.isArray(dataPart) ? dataPart.length : 0,
5419
- writtenAt: (/* @__PURE__ */ new Date()).toISOString()
5420
- };
5421
- const tmpMetaPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`;
5422
- await fileService.writeAtomic(tmpMetaPath, JSON.stringify(meta));
5423
- manifest.models[model] = {
5424
- file: `${MODELS_DIR}/${encodeURIComponent(model)}.json`,
5425
- metaFile: `${MODELS_META_DIR}/${encodeURIComponent(model)}.meta.json`,
5426
- count: meta.count,
5427
- updatedAt: meta.writtenAt
5428
- };
5429
- }
5430
- onProgress?.(95, "Committing import (moving files)");
5431
- for (const model of modelNames) {
5432
- const tmpModelPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.json`;
5433
- const finalModelPath = `${MODELS_DIR}/${encodeURIComponent(model)}.json`;
5434
- const tmpMetaPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`;
5435
- const finalMetaPath = `${MODELS_META_DIR}/${encodeURIComponent(
5436
- model
5437
- )}.meta.json`;
5438
- const tmpRaw = await fileService.read(tmpModelPath);
5439
- if (tmpRaw !== null) await fileService.writeAtomic(finalModelPath, tmpRaw);
5440
- const tmpMetaRaw = await fileService.read(tmpMetaPath);
5441
- if (tmpMetaRaw !== null)
5442
- await fileService.writeAtomic(finalMetaPath, tmpMetaRaw);
5443
- onProgress?.(
5444
- 95 + Math.round(
5445
- (Object.keys(manifest.models).indexOf(model) + 1) / modelNames.length * 5
5446
- ),
5447
- `Committed ${model}`
5448
- );
5449
- }
5450
- await writeManifest(manifest);
5451
- try {
5452
- for (const model of modelNames) {
5453
- await fileService.delete(
5454
- `${TMP_PREFIX}/${encodeURIComponent(model)}.json`
5455
- );
5456
- await fileService.delete(
5457
- `${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`
5458
- );
5459
- }
5460
- await fileService.delete(`${TMP_PREFIX}/.marker`);
5461
- } catch (e) {
5462
- console.log("Failed to cleanup tmp import files:", e);
5463
- }
5464
- onProgress?.(100, "Import complete");
5465
- return manifest;
5466
- };
5467
- var import_snapshot_default = importSnapshot;
5468
-
5469
- // src/services/filesystem-service/memory-cache.ts
5470
- var MemoryCache = class {
5471
- map = /* @__PURE__ */ new Map();
5472
- get(k) {
5473
- const e = this.map.get(k);
5474
- if (!e) return null;
5475
- if (e.ttl && Date.now() - e.t > e.ttl) {
5476
- this.map.delete(k);
5477
- return null;
5478
- }
5479
- return e.value;
5480
- }
5481
- set(k, v, ttl = 5 * 60 * 1e3) {
5482
- this.map.set(k, { value: v, t: Date.now(), ttl });
5483
- }
5484
- del(k) {
5485
- this.map.delete(k);
5486
- }
5487
- clear() {
5488
- this.map.clear();
5489
- }
5490
- };
5491
- var memoryCache = new MemoryCache();
5492
-
5493
- // src/services/filesystem-service/model-loader.ts
5494
- var MODELS_DIR2 = "pos/models";
5495
- var MODELS_META_DIR2 = "pos/models_meta";
5496
- async function loadModelData(modelName, includeMeta = true) {
5497
- const key = `model:${modelName}:meta:${includeMeta}`;
5498
- const cached = memoryCache.get(key);
5499
- if (cached) return cached;
5500
- const dataPath = `${MODELS_DIR2}/${encodeURIComponent(modelName)}.json`;
5501
- const metaPath = `${MODELS_META_DIR2}/${encodeURIComponent(
5502
- modelName
5503
- )}.meta.json`;
5504
- const rawData = await fileService.read(dataPath);
5505
- if (!rawData) return null;
5506
- const parsedData = await spawnParseWorker(rawData);
5507
- const data = Array.isArray(parsedData) ? parsedData : [];
5508
- if (!includeMeta) {
5509
- const result2 = { data };
5510
- memoryCache.set(key, result2, 1e3 * 60 * 60);
5511
- return result2;
5512
- }
5513
- const rawMeta = await fileService.read(metaPath);
5514
- let fields = [];
5515
- let relations = {};
5516
- if (rawMeta) {
5517
- const parsedMeta = await spawnParseWorker(rawMeta);
5518
- fields = parsedMeta?.fields ?? [];
5519
- relations = parsedMeta?.relations ?? {};
5520
- }
5521
- const result = {
5522
- data,
5523
- fields,
5524
- relations
5525
- };
5526
- memoryCache.set(key, result, 1e3 * 60 * 60);
5527
- return result;
5528
- }
5529
- async function loadData(includeMeta = true) {
5530
- try {
5531
- const listResult = await fileService.list(MODELS_DIR2);
5532
- if (!listResult || !Array.isArray(listResult.files)) {
5533
- console.log("No models found");
5534
- return {};
5535
- }
5536
- const result = {};
5537
- for (const file of listResult.files) {
5538
- if (file.type !== "file") continue;
5539
- if (!file.name.endsWith(".json")) continue;
5540
- const fileName = file.name;
5541
- const modelName = fileName.replace(/\.json$/, "");
5542
- const dataPath = `${MODELS_DIR2}/${fileName}`;
5543
- const rawData = await fileService.read(dataPath);
5544
- if (!rawData) continue;
5545
- const parsedData = await spawnParseWorker(rawData);
5546
- const data = Array.isArray(parsedData) ? parsedData : [];
5547
- if (!includeMeta) {
5548
- result[modelName] = { data };
5549
- continue;
5550
- }
5551
- const metaPath = `${MODELS_META_DIR2}/${encodeURIComponent(
5552
- modelName
5553
- )}.meta.json`;
5554
- const rawMeta = await fileService.read(metaPath);
5555
- let fields = [];
5556
- let relations = {};
5557
- if (rawMeta) {
5558
- const parsedMeta = await spawnParseWorker(rawMeta);
5559
- fields = parsedMeta?.fields ?? [];
5560
- relations = parsedMeta?.relations ?? {};
5561
- }
5562
- result[modelName] = {
5563
- data,
5564
- fields,
5565
- relations
5566
- };
5567
- }
5568
- return result;
5569
- } catch (error) {
5570
- console.error("Error loading data:", error);
5571
- throw error;
5572
- }
5573
- }
5574
-
5575
- // src/services/filesystem-service/snapshot-helper.ts
5576
- var createEmptySnapshot = () => {
5577
- return {
5578
- data: []
5579
- };
5580
- };
5581
- var generateNextId = (existingIds, startFrom = 1) => {
5582
- if (!existingIds || existingIds.length === 0) {
5583
- return startFrom;
5584
- }
5585
- const maxId = Math.max(...existingIds, startFrom - 1);
5586
- return maxId + 1;
5587
- };
5588
- var loadSnapshot = async ({
5589
- modelName
5590
- }) => {
5591
- try {
5592
- const snapshot = await loadModelData(modelName);
5593
- if (!snapshot || typeof snapshot !== "object") {
5594
- console.warn("invalid snapshot, creating new one");
5595
- return createEmptySnapshot();
5596
- }
5597
- return {
5598
- data: Array.isArray(snapshot.data) ? snapshot.data : []
5599
- };
5600
- } catch (error) {
5601
- console.error("Failed to load snapshot:", error);
5602
- return createEmptySnapshot();
5603
- }
5604
- };
5605
- var getExistingIds = (snapshot) => {
5606
- return snapshot.data.map((order) => order.id).filter((id) => typeof id === "number");
5607
- };
5608
- var saveSnapshot = async ({
5609
- snapshot,
5610
- modelName
5611
- }) => {
5612
- try {
5613
- await import_snapshot_default({
5614
- data: JSON.stringify({
5615
- [modelName]: snapshot
5616
- })
5617
- });
5618
- return true;
5619
- } catch (error) {
5620
- console.error("failed to save snapshot:", error);
5621
- return false;
5622
- }
5623
- };
5624
- var addRecordResponseHandler = ({
5625
- modelName,
5626
- id,
5627
- data
5628
- }) => {
5629
- if (modelName === "restaurant.floor" /* RESTAURANT_FLOOR */ || modelName === "res.partner" /* RES_PARTNER */) {
5630
- return [[id, ""]];
5631
- }
5632
- return data;
5633
- };
5634
-
5635
- // src/services/filesystem-service/model-repository.ts
5636
- var ModelRepository = class {
5637
- getAll = async ({ modelName }) => {
5638
- try {
5639
- const snapshot = await loadSnapshot({
5640
- modelName
5641
- });
5642
- return snapshot.data;
5643
- } catch (error) {
5644
- console.error("failed to get all records:", error);
5645
- return [];
5646
- }
5647
- };
5648
- getRecord = async ({
5649
- id,
5650
- modelName
5651
- }) => {
5652
- try {
5653
- const snapshot = await loadSnapshot({
5654
- modelName
5655
- });
5656
- return snapshot.data.find((record) => record.id === id) || null;
5657
- } catch (error) {
5658
- console.error("failed to get record:", error);
5659
- return null;
5660
- }
5661
- };
5662
- addRecord = async ({
5663
- newRecord,
5664
- modelName
5665
- }) => {
5666
- try {
5667
- const snapshot = await loadSnapshot({
5668
- modelName
5669
- });
5670
- const existingIds = getExistingIds(snapshot);
5671
- const newId = generateNextId(existingIds, snapshot.data.length);
5672
- snapshot.data.push({
5673
- ...newRecord,
5674
- id: newId
5675
- });
5676
- const saved = await saveSnapshot({
5677
- snapshot,
5678
- modelName
5679
- });
5680
- if (!saved) {
5681
- console.error("failed to add new record");
5682
- return [];
5683
- }
5684
- console.log("lib data:", snapshot.data);
5685
- const response = addRecordResponseHandler({
5686
- id: newId,
5687
- modelName,
5688
- data: snapshot.data
5689
- });
5690
- return response;
5691
- } catch (error) {
5692
- console.error("failed to add new record:", error);
5693
- return [];
5694
- }
5695
- };
5696
- updateRecord = async ({
5697
- id,
5698
- update,
5699
- modelName
5700
- }) => {
5701
- try {
5702
- const snapshot = await loadSnapshot({
5703
- modelName
5704
- });
5705
- const index = snapshot.data.findIndex((record) => record.id === id);
5706
- if (index === -1) {
5707
- console.error(`record with id ${id} not found`);
5708
- return false;
5709
- }
5710
- snapshot.data[index] = {
5711
- ...snapshot.data[index],
5712
- ...update
5713
- };
5714
- return await saveSnapshot({
5715
- snapshot,
5716
- modelName
5717
- });
5718
- } catch (error) {
5719
- console.error("error updating record:", error);
5720
- return false;
5721
- }
5722
- };
5723
- deleteRecord = async ({
5724
- id,
5725
- modelName
5726
- }) => {
5727
- try {
5728
- const snapshot = await loadSnapshot({
5729
- modelName
5730
- });
5731
- const before = snapshot.data.length;
5732
- snapshot.data = snapshot.data.filter((record) => record.id !== id);
5733
- if (snapshot.data.length === before) {
5734
- console.error(`record with id ${id} not found`);
5735
- return false;
5736
- }
5737
- return await saveSnapshot({
5738
- snapshot,
5739
- modelName
5740
- });
5741
- } catch (error) {
5742
- console.error("error deleting record:", error);
5743
- return false;
5744
- }
5745
- };
5746
- };
5747
-
5748
- // src/services/pos-service/add-entity.ts
5749
5261
  var addEntityService = (env) => {
5750
- const isLocalMode = env?.isLocalMode;
5751
- const repo = new ModelRepository();
5752
5262
  const addEntity = (0, import_react14.useCallback)(
5753
5263
  ({
5754
5264
  model,
@@ -5757,12 +5267,6 @@ var addEntityService = (env) => {
5757
5267
  service,
5758
5268
  isCreateEndpoint = false
5759
5269
  }) => {
5760
- if (isLocalMode) {
5761
- return repo.addRecord({
5762
- newRecord: values,
5763
- modelName: model
5764
- });
5765
- }
5766
5270
  const jsonData = {
5767
5271
  model,
5768
5272
  values
@@ -5779,7 +5283,7 @@ var addEntityService = (env) => {
5779
5283
  service
5780
5284
  );
5781
5285
  },
5782
- [env, isLocalMode]
5286
+ [env]
5783
5287
  );
5784
5288
  return {
5785
5289
  addEntity
@@ -5901,8 +5405,6 @@ var createEInvoiceService = (env) => {
5901
5405
  // src/services/pos-service/create-entity.ts
5902
5406
  var import_react18 = require("react");
5903
5407
  var createEntityService = (env) => {
5904
- const isLocalMode = env?.isLocalMode;
5905
- const repo = new ModelRepository();
5906
5408
  const createEntity = (0, import_react18.useCallback)(
5907
5409
  ({
5908
5410
  model,
@@ -5910,12 +5412,6 @@ var createEntityService = (env) => {
5910
5412
  xNode,
5911
5413
  service
5912
5414
  }) => {
5913
- if (isLocalMode) {
5914
- return repo.addRecord({
5915
- newRecord: args[0],
5916
- modelName: model
5917
- });
5918
- }
5919
5415
  const jsonData = {
5920
5416
  model,
5921
5417
  method: "create" /* CREATE */,
@@ -5933,7 +5429,7 @@ var createEntityService = (env) => {
5933
5429
  service
5934
5430
  );
5935
5431
  },
5936
- [env, isLocalMode]
5432
+ [env]
5937
5433
  );
5938
5434
  return {
5939
5435
  createEntity
@@ -6018,8 +5514,6 @@ var createSessionService = (env) => {
6018
5514
  // src/services/pos-service/delete-entity.ts
6019
5515
  var import_react21 = require("react");
6020
5516
  var deleteEntityService = (env) => {
6021
- const isLocalMode = env?.isLocalMode;
6022
- const repo = new ModelRepository();
6023
5517
  const deleteEntity = (0, import_react21.useCallback)(
6024
5518
  ({
6025
5519
  model,
@@ -6028,14 +5522,6 @@ var deleteEntityService = (env) => {
6028
5522
  service,
6029
5523
  method
6030
5524
  }) => {
6031
- if (isLocalMode) {
6032
- const id = ids[0];
6033
- if (!id) return;
6034
- return repo.deleteRecord({
6035
- modelName: model,
6036
- id
6037
- });
6038
- }
6039
5525
  const jsonData = {
6040
5526
  model,
6041
5527
  ids,
@@ -6053,7 +5539,7 @@ var deleteEntityService = (env) => {
6053
5539
  service
6054
5540
  );
6055
5541
  },
6056
- [env, isLocalMode]
5542
+ [env]
6057
5543
  );
6058
5544
  return {
6059
5545
  deleteEntity
@@ -6130,8 +5616,6 @@ var getCurrentUserService = (env) => {
6130
5616
  // src/services/pos-service/get-list.ts
6131
5617
  var import_react24 = require("react");
6132
5618
  var getListService = (env) => {
6133
- const isLocalMode = env?.isLocalMode;
6134
- const repo = new ModelRepository();
6135
5619
  const getList = (0, import_react24.useCallback)(
6136
5620
  async ({
6137
5621
  model,
@@ -6142,12 +5626,6 @@ var getListService = (env) => {
6142
5626
  offset,
6143
5627
  limit
6144
5628
  }) => {
6145
- if (isLocalMode) {
6146
- const data = await repo.getAll({
6147
- modelName: model
6148
- });
6149
- return data;
6150
- }
6151
5629
  const jsonData = {
6152
5630
  model,
6153
5631
  method: "web_search_read" /* WEB_SEARCH_READ */,
@@ -6170,7 +5648,7 @@ var getListService = (env) => {
6170
5648
  service
6171
5649
  );
6172
5650
  },
6173
- [env, isLocalMode]
5651
+ [env]
6174
5652
  );
6175
5653
  return {
6176
5654
  getList
@@ -6498,10 +5976,54 @@ var handleClosingSessionService = (env) => {
6498
5976
  };
6499
5977
 
6500
5978
  // src/services/pos-service/load-data-pos-session.ts
5979
+ var import_react34 = require("react");
5980
+
5981
+ // src/provider/supabase-provider.tsx
6501
5982
  var import_react33 = require("react");
5983
+ var import_supabase_js = require("@supabase/supabase-js");
5984
+ var import_jsx_runtime4 = require("react/jsx-runtime");
5985
+ var SupabaseContext = (0, import_react33.createContext)(null);
5986
+ var SupabaseProvider = ({
5987
+ supabaseUrl,
5988
+ supabaseKey,
5989
+ children
5990
+ }) => {
5991
+ const supabase = (0, import_react33.useMemo)(() => {
5992
+ if (!supabaseUrl || !supabaseKey) return null;
5993
+ return (0, import_supabase_js.createClient)(supabaseUrl, supabaseKey);
5994
+ }, [supabaseUrl, supabaseKey]);
5995
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SupabaseContext.Provider, { value: supabase, children });
5996
+ };
5997
+ var useSupabase = () => {
5998
+ const context = (0, import_react33.useContext)(SupabaseContext);
5999
+ if (!context) {
6000
+ throw new Error(
6001
+ "useSupabase must be used within a SupabaseProvider or check your env config"
6002
+ );
6003
+ }
6004
+ return context;
6005
+ };
6006
+
6007
+ // src/services/pos-service/load-data-pos-session.ts
6008
+ var MODEL_TO_TABLE = {
6009
+ ["account.tax" /* ACCOUNT_TAX */]: "account_taxes",
6010
+ ["res.company" /* RES_COMPANY */]: "companies",
6011
+ ["res.partner" /* RES_PARTNER */]: "customers",
6012
+ ["res.users" /* RES_USERS */]: "employees",
6013
+ ["loyalty.program" /* LOYALTY_PROGRAM */]: "loyalty_programs",
6014
+ ["loyalty.rule" /* LOYALTY_RULE */]: "loyalty_rules",
6015
+ ["pos.order.line" /* POS_ORDER_LINE */]: "order_lines",
6016
+ ["pos.order" /* POS_ORDER */]: "orders",
6017
+ ["pos.payment.method" /* POS_PAYMENT_METHOD */]: "payment_methods",
6018
+ ["pos.payment" /* POS_PAYMENT */]: "payments",
6019
+ ["product.category" /* PRODUCT_CATEGORY */]: "product_categories",
6020
+ ["product.product" /* PRODUCT_PRODUCT */]: "products",
6021
+ ["restaurant.floor" /* RESTAURANT_FLOOR */]: "restaurant_floors",
6022
+ ["restaurant.table" /* RESTAURANT_TABLE */]: "restaurant_tables"
6023
+ };
6502
6024
  var loadDataPosSessionService = (env) => {
6503
- const isLocalMode = env?.isLocalMode;
6504
- const loadDataPosSession = (0, import_react33.useCallback)(
6025
+ const supabase = useSupabase();
6026
+ const loadDataPosSession = (0, import_react34.useCallback)(
6505
6027
  async ({
6506
6028
  model,
6507
6029
  ids,
@@ -6511,10 +6033,6 @@ var loadDataPosSessionService = (env) => {
6511
6033
  modelsToLoad = [],
6512
6034
  searchParams
6513
6035
  }) => {
6514
- if (isLocalMode) {
6515
- const data = await loadData();
6516
- return data;
6517
- }
6518
6036
  const jsonData = {
6519
6037
  model,
6520
6038
  method: "load_data" /* LOAD_DATA */,
@@ -6541,17 +6059,66 @@ var loadDataPosSessionService = (env) => {
6541
6059
  service
6542
6060
  );
6543
6061
  },
6544
- [env, isLocalMode]
6062
+ [env]
6545
6063
  );
6064
+ const loadDataPosSessionSupabase = (0, import_react34.useCallback)(async () => {
6065
+ try {
6066
+ const allModels = Object.values(LoadDataModel);
6067
+ const promises = allModels.map(async (modelName) => {
6068
+ const tableName = MODEL_TO_TABLE[modelName];
6069
+ if (!tableName) {
6070
+ return {
6071
+ modelName,
6072
+ data: [],
6073
+ fields: {},
6074
+ relations: {}
6075
+ };
6076
+ }
6077
+ const { data, error } = await supabase.from(tableName).select("*");
6078
+ if (error) {
6079
+ console.error(`Error loading ${modelName}:`, error);
6080
+ return {
6081
+ modelName,
6082
+ data: [],
6083
+ fields: {},
6084
+ relations: {}
6085
+ };
6086
+ }
6087
+ return {
6088
+ modelName,
6089
+ data: data || [],
6090
+ fields: {},
6091
+ relations: {}
6092
+ };
6093
+ });
6094
+ const results = await Promise.all(promises);
6095
+ const response = results.reduce(
6096
+ (acc, { modelName, data, fields, relations }) => {
6097
+ acc[modelName] = {
6098
+ data,
6099
+ fields,
6100
+ relations
6101
+ };
6102
+ return acc;
6103
+ },
6104
+ {}
6105
+ );
6106
+ return response;
6107
+ } catch (error) {
6108
+ console.error("Error loading data from Supabase:", error);
6109
+ return {};
6110
+ }
6111
+ }, [supabase]);
6546
6112
  return {
6547
- loadDataPosSession
6113
+ loadDataPosSession,
6114
+ loadDataPosSessionSupabase
6548
6115
  };
6549
6116
  };
6550
6117
 
6551
6118
  // src/services/pos-service/manage-onchange.ts
6552
- var import_react34 = require("react");
6119
+ var import_react35 = require("react");
6553
6120
  var manageOnchangeService = (env) => {
6554
- const manageOnChange = (0, import_react34.useCallback)(
6121
+ const manageOnChange = (0, import_react35.useCallback)(
6555
6122
  ({
6556
6123
  model,
6557
6124
  ids,
@@ -6585,9 +6152,9 @@ var manageOnchangeService = (env) => {
6585
6152
  };
6586
6153
 
6587
6154
  // src/services/pos-service/manage-session.ts
6588
- var import_react35 = require("react");
6155
+ var import_react36 = require("react");
6589
6156
  var manageSessionService = (env) => {
6590
- const manageSession = (0, import_react35.useCallback)(
6157
+ const manageSession = (0, import_react36.useCallback)(
6591
6158
  ({
6592
6159
  model,
6593
6160
  method,
@@ -6624,9 +6191,9 @@ var manageSessionService = (env) => {
6624
6191
  };
6625
6192
 
6626
6193
  // src/services/pos-service/process-order.ts
6627
- var import_react36 = require("react");
6194
+ var import_react37 = require("react");
6628
6195
  var processOrderService = (env) => {
6629
- const processOrder = (0, import_react36.useCallback)(
6196
+ const processOrder = (0, import_react37.useCallback)(
6630
6197
  ({
6631
6198
  orderId,
6632
6199
  xNode,
@@ -6659,9 +6226,9 @@ var processOrderService = (env) => {
6659
6226
  };
6660
6227
 
6661
6228
  // src/services/pos-service/save-pin-code.ts
6662
- var import_react37 = require("react");
6229
+ var import_react38 = require("react");
6663
6230
  var savePinCodeService = (env) => {
6664
- const savePinCode = (0, import_react37.useCallback)(
6231
+ const savePinCode = (0, import_react38.useCallback)(
6665
6232
  ({
6666
6233
  serialNumber,
6667
6234
  pinCode,
@@ -6692,9 +6259,9 @@ var savePinCodeService = (env) => {
6692
6259
  };
6693
6260
 
6694
6261
  // src/services/pos-service/search-journal.ts
6695
- var import_react38 = require("react");
6262
+ var import_react39 = require("react");
6696
6263
  var searchJournalService = (env) => {
6697
- const searchJournal = (0, import_react38.useCallback)(
6264
+ const searchJournal = (0, import_react39.useCallback)(
6698
6265
  ({
6699
6266
  model,
6700
6267
  method,
@@ -6729,9 +6296,9 @@ var searchJournalService = (env) => {
6729
6296
  };
6730
6297
 
6731
6298
  // src/services/pos-service/update-closed-session.ts
6732
- var import_react39 = require("react");
6299
+ var import_react40 = require("react");
6733
6300
  var updateClosedSessionService = (env) => {
6734
- const updateClosedSession = (0, import_react39.useCallback)(
6301
+ const updateClosedSession = (0, import_react40.useCallback)(
6735
6302
  ({
6736
6303
  model,
6737
6304
  domain,
@@ -6764,11 +6331,9 @@ var updateClosedSessionService = (env) => {
6764
6331
  };
6765
6332
 
6766
6333
  // src/services/pos-service/update-entity.ts
6767
- var import_react40 = require("react");
6334
+ var import_react41 = require("react");
6768
6335
  var updateEntityService = (env) => {
6769
- const isLocalMode = env?.isLocalMode;
6770
- const repo = new ModelRepository();
6771
- const updateEntity = (0, import_react40.useCallback)(
6336
+ const updateEntity = (0, import_react41.useCallback)(
6772
6337
  ({
6773
6338
  model,
6774
6339
  domain,
@@ -6777,15 +6342,6 @@ var updateEntityService = (env) => {
6777
6342
  xNode,
6778
6343
  service
6779
6344
  }) => {
6780
- if (isLocalMode) {
6781
- const id = extractIdFromDomain(domain);
6782
- if (!id) return;
6783
- return repo.updateRecord({
6784
- update: values,
6785
- modelName: model,
6786
- id
6787
- });
6788
- }
6789
6345
  const jsonData = {
6790
6346
  model,
6791
6347
  domain,
@@ -6803,7 +6359,7 @@ var updateEntityService = (env) => {
6803
6359
  service
6804
6360
  );
6805
6361
  },
6806
- [env, isLocalMode]
6362
+ [env]
6807
6363
  );
6808
6364
  return {
6809
6365
  updateEntity
@@ -6811,9 +6367,9 @@ var updateEntityService = (env) => {
6811
6367
  };
6812
6368
 
6813
6369
  // src/services/pos-service/update-order-status.ts
6814
- var import_react41 = require("react");
6370
+ var import_react42 = require("react");
6815
6371
  var updateOrderStatusService = (env) => {
6816
- const updateOrderStatus = (0, import_react41.useCallback)(
6372
+ const updateOrderStatus = (0, import_react42.useCallback)(
6817
6373
  ({
6818
6374
  orderId,
6819
6375
  state,
@@ -6843,6 +6399,49 @@ var updateOrderStatusService = (env) => {
6843
6399
  };
6844
6400
  };
6845
6401
 
6402
+ // src/services/pos-service/complete-current-stage.ts
6403
+ var import_react43 = require("react");
6404
+ var completeCurrentStageService = (env) => {
6405
+ const completeCurrentStage = (0, import_react43.useCallback)(
6406
+ ({
6407
+ ids,
6408
+ withContext,
6409
+ xNode,
6410
+ service,
6411
+ requestStageId
6412
+ }) => {
6413
+ const jsonData = {
6414
+ model: "pos_preparation_display.orderline" /* POS_PREPARATION_ORDER_LINE */,
6415
+ method: "complete_current_stage" /* COMPLETE_CURRENT_STAGE */,
6416
+ ids,
6417
+ kwargs: {
6418
+ request_stage_id: requestStageId
6419
+ },
6420
+ with_context: withContext || {
6421
+ lang: "vi_VN",
6422
+ tz: "Asia/Ho_Chi_Minh",
6423
+ uid: 2
6424
+ }
6425
+ };
6426
+ return env?.requests.post(
6427
+ "/call" /* CALL_PATH */,
6428
+ jsonData,
6429
+ {
6430
+ headers: {
6431
+ "Content-Type": "application/json",
6432
+ ...xNode ? { "X-Node": xNode } : {}
6433
+ }
6434
+ },
6435
+ service
6436
+ );
6437
+ },
6438
+ [env]
6439
+ );
6440
+ return {
6441
+ completeCurrentStage
6442
+ };
6443
+ };
6444
+
6846
6445
  // src/services/pos-service/index.ts
6847
6446
  var serviceFactories = [
6848
6447
  addEntityService,
@@ -6873,7 +6472,8 @@ var serviceFactories = [
6873
6472
  searchJournalService,
6874
6473
  updateClosedSessionService,
6875
6474
  updateEntityService,
6876
- updateOrderStatusService
6475
+ updateOrderStatusService,
6476
+ completeCurrentStageService
6877
6477
  ];
6878
6478
  var usePosService = () => {
6879
6479
  const { env } = useEnv();
@@ -6885,57 +6485,13 @@ var usePosService = () => {
6885
6485
  return service;
6886
6486
  };
6887
6487
 
6888
- // src/services/filesystem-service/init-snapshot.ts
6889
- var isSnapshotReady = async () => {
6890
- try {
6891
- const raw = await fileService.read("pos/manifest.json");
6892
- if (!raw) return false;
6893
- const manifest = JSON.parse(raw);
6894
- if (!manifest.models || typeof manifest.models !== "object") {
6895
- return false;
6896
- }
6897
- const modelEntries = Object.values(manifest.models);
6898
- if (modelEntries.length === 0) return false;
6899
- const firstModel = modelEntries[0];
6900
- if (!firstModel.file) return false;
6901
- const modelExists = await fileService.exists(firstModel.file);
6902
- return modelExists;
6903
- } catch {
6904
- return false;
6905
- }
6906
- };
6907
- async function initSnapshot(onProgress) {
6908
- const ready = await isSnapshotReady();
6909
- if (ready) {
6910
- console.log("skip initialization.");
6911
- return;
6912
- }
6913
- console.log("initializing from data.json...");
6914
- const jsonData = await fetch("/data.json").then((r) => r.text());
6915
- if (!jsonData) {
6916
- console.error("cannot load data.json");
6917
- return;
6918
- }
6919
- await import_snapshot_default({
6920
- data: jsonData,
6921
- onProgress
6922
- });
6923
- }
6924
-
6925
- // src/services/filesystem-service/index.ts
6926
- var useFileSystemService = () => {
6927
- return {
6928
- initSnapshot
6929
- };
6930
- };
6931
-
6932
6488
  // src/provider/version-gate-provider.tsx
6933
- var import_jsx_runtime4 = require("react/jsx-runtime");
6489
+ var import_jsx_runtime5 = require("react/jsx-runtime");
6934
6490
  var VersionGate = ({ children }) => {
6935
6491
  const queryClient = (0, import_react_query2.useQueryClient)();
6936
- const [ready, setReady] = (0, import_react42.useState)(false);
6492
+ const [ready, setReady] = (0, import_react44.useState)(false);
6937
6493
  const { getVersion } = useViewService();
6938
- (0, import_react42.useEffect)(() => {
6494
+ (0, import_react44.useEffect)(() => {
6939
6495
  const clearVersion = () => {
6940
6496
  queryClient.clear();
6941
6497
  localStorage.removeItem("__api_version__");
@@ -6962,11 +6518,11 @@ var VersionGate = ({ children }) => {
6962
6518
  return () => window.removeEventListener("keydown", onKey);
6963
6519
  }
6964
6520
  }, [queryClient]);
6965
- return ready ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children }) : null;
6521
+ return ready ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children }) : null;
6966
6522
  };
6967
6523
 
6968
6524
  // src/provider/env-provider.tsx
6969
- var import_react43 = require("react");
6525
+ var import_react45 = require("react");
6970
6526
 
6971
6527
  // src/configs/axios-client.ts
6972
6528
  var import_axios = __toESM(require("axios"));
@@ -7295,7 +6851,7 @@ var axiosClient = {
7295
6851
  };
7296
6852
 
7297
6853
  // src/provider/env-provider.tsx
7298
- var import_jsx_runtime5 = require("react/jsx-runtime");
6854
+ var import_jsx_runtime6 = require("react/jsx-runtime");
7299
6855
  var initialEnvState = {
7300
6856
  env: null,
7301
6857
  baseUrl: "",
@@ -7317,20 +6873,20 @@ var initialEnvState = {
7317
6873
  tz: "Asia/Saigon"
7318
6874
  },
7319
6875
  excludeLanguages: [],
7320
- isLocalMode: false
6876
+ isSupaMode: false
7321
6877
  };
7322
- var EnvContext = (0, import_react43.createContext)(null);
6878
+ var EnvContext = (0, import_react45.createContext)(null);
7323
6879
  function EnvProvider({
7324
6880
  children,
7325
6881
  localStorageUtils: localStorageUtil = localStorageUtils(),
7326
6882
  sessionStorageUtils: sessionStorageUtil = sessionStorageUtils
7327
6883
  }) {
7328
- const [env, setEnvState] = (0, import_react43.useState)({
6884
+ const [env, setEnvState] = (0, import_react45.useState)({
7329
6885
  ...initialEnvState,
7330
6886
  localStorageUtils: localStorageUtil,
7331
6887
  sessionStorageUtils: sessionStorageUtil
7332
6888
  });
7333
- const setupEnv = (0, import_react43.useCallback)(
6889
+ const setupEnv = (0, import_react45.useCallback)(
7334
6890
  (envConfig) => {
7335
6891
  const updatedEnv = {
7336
6892
  ...env,
@@ -7344,31 +6900,31 @@ function EnvProvider({
7344
6900
  },
7345
6901
  [env, localStorageUtil, sessionStorageUtil]
7346
6902
  );
7347
- const setUid2 = (0, import_react43.useCallback)((uid) => {
6903
+ const setUid2 = (0, import_react45.useCallback)((uid) => {
7348
6904
  setEnvState((prev) => ({
7349
6905
  ...prev,
7350
6906
  context: { ...prev.context, uid }
7351
6907
  }));
7352
6908
  }, []);
7353
- const setLang2 = (0, import_react43.useCallback)((lang) => {
6909
+ const setLang2 = (0, import_react45.useCallback)((lang) => {
7354
6910
  setEnvState((prev) => ({
7355
6911
  ...prev,
7356
6912
  context: { ...prev.context, lang }
7357
6913
  }));
7358
6914
  }, []);
7359
- const setAllowCompanies2 = (0, import_react43.useCallback)((allowed_company_ids) => {
6915
+ const setAllowCompanies2 = (0, import_react45.useCallback)((allowed_company_ids) => {
7360
6916
  setEnvState((prev) => ({
7361
6917
  ...prev,
7362
6918
  context: { ...prev.context, allowed_company_ids }
7363
6919
  }));
7364
6920
  }, []);
7365
- const setCompanies2 = (0, import_react43.useCallback)((companies) => {
6921
+ const setCompanies2 = (0, import_react45.useCallback)((companies) => {
7366
6922
  setEnvState((prev) => ({
7367
6923
  ...prev,
7368
6924
  companies
7369
6925
  }));
7370
6926
  }, []);
7371
- const setDefaultCompany2 = (0, import_react43.useCallback)(
6927
+ const setDefaultCompany2 = (0, import_react45.useCallback)(
7372
6928
  (defaultCompany) => {
7373
6929
  setEnvState((prev) => ({
7374
6930
  ...prev,
@@ -7377,25 +6933,25 @@ function EnvProvider({
7377
6933
  },
7378
6934
  []
7379
6935
  );
7380
- const setUserInfo = (0, import_react43.useCallback)((user) => {
6936
+ const setUserInfo = (0, import_react45.useCallback)((user) => {
7381
6937
  setEnvState((prev) => ({
7382
6938
  ...prev,
7383
6939
  user
7384
6940
  }));
7385
6941
  }, []);
7386
- const setConfig2 = (0, import_react43.useCallback)((config) => {
6942
+ const setConfig2 = (0, import_react45.useCallback)((config) => {
7387
6943
  setEnvState((prev) => ({
7388
6944
  ...prev,
7389
6945
  config
7390
6946
  }));
7391
6947
  }, []);
7392
- const setEnvFile2 = (0, import_react43.useCallback)((envFile) => {
6948
+ const setEnvFile2 = (0, import_react45.useCallback)((envFile) => {
7393
6949
  setEnvState((prev) => ({
7394
6950
  ...prev,
7395
6951
  envFile
7396
6952
  }));
7397
6953
  }, []);
7398
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
6954
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
7399
6955
  EnvContext.Provider,
7400
6956
  {
7401
6957
  value: {
@@ -7415,7 +6971,7 @@ function EnvProvider({
7415
6971
  );
7416
6972
  }
7417
6973
  function useEnv() {
7418
- const context = (0, import_react43.useContext)(EnvContext);
6974
+ const context = (0, import_react45.useContext)(EnvContext);
7419
6975
  if (!context) {
7420
6976
  throw new Error("useEnv must be used within an EnvProvider");
7421
6977
  }
@@ -7423,7 +6979,7 @@ function useEnv() {
7423
6979
  }
7424
6980
 
7425
6981
  // src/provider/service-provider.tsx
7426
- var import_react45 = require("react");
6982
+ var import_react47 = require("react");
7427
6983
 
7428
6984
  // src/hooks/auth/use-forgot-password.ts
7429
6985
  var import_react_query3 = require("@tanstack/react-query");
@@ -8295,9 +7851,9 @@ var BaseModel = class {
8295
7851
  };
8296
7852
 
8297
7853
  // src/hooks/model/use-model.ts
8298
- var import_react44 = require("react");
7854
+ var import_react46 = require("react");
8299
7855
  var useModel = () => {
8300
- const initModel = (0, import_react44.useCallback)((modelData) => {
7856
+ const initModel = (0, import_react46.useCallback)((modelData) => {
8301
7857
  switch (modelData?.name) {
8302
7858
  default:
8303
7859
  return new BaseModel(modelData);
@@ -9314,8 +8870,9 @@ var use_handle_closing_session_default = useHandleClosingSession;
9314
8870
  var import_react_query104 = require("@tanstack/react-query");
9315
8871
  var useLoadDataPosSession = () => {
9316
8872
  const pos = usePosService();
8873
+ const { env } = useEnv();
9317
8874
  return (0, import_react_query104.useMutation)({
9318
- mutationFn: pos.loadDataPosSession
8875
+ mutationFn: env.isSupaMode ? pos.loadDataPosSessionSupabase : pos.loadDataPosSession
9319
8876
  });
9320
8877
  };
9321
8878
  var use_load_data_pos_session_default = useLoadDataPosSession;
@@ -9400,19 +8957,19 @@ var useUpdateOrderStatus = () => {
9400
8957
  };
9401
8958
  var use_update_order_status_default = useUpdateOrderStatus;
9402
8959
 
9403
- // src/hooks/pos/use-init-snapshot.ts
8960
+ // src/hooks/pos/use-complete-current-stage.ts
9404
8961
  var import_react_query113 = require("@tanstack/react-query");
9405
- var useInitSnapshot = () => {
9406
- const fileSystem = useFileSystemService();
8962
+ var useCompleteCurrentStage = () => {
8963
+ const pos = usePosService();
9407
8964
  return (0, import_react_query113.useMutation)({
9408
- mutationFn: fileSystem.initSnapshot
8965
+ mutationFn: pos.completeCurrentStage
9409
8966
  });
9410
8967
  };
9411
- var use_init_snapshot_default = useInitSnapshot;
8968
+ var use_complete_current_stage_default = useCompleteCurrentStage;
9412
8969
 
9413
8970
  // src/provider/service-provider.tsx
9414
- var import_jsx_runtime6 = require("react/jsx-runtime");
9415
- var ServiceContext = (0, import_react45.createContext)(null);
8971
+ var import_jsx_runtime7 = require("react/jsx-runtime");
8972
+ var ServiceContext = (0, import_react47.createContext)(null);
9416
8973
  var ServiceProvider = ({
9417
8974
  children
9418
8975
  }) => {
@@ -9529,12 +9086,12 @@ var ServiceProvider = ({
9529
9086
  useGetWard: use_get_ward_default,
9530
9087
  useGetCountry: use_get_country_default,
9531
9088
  useGetPartnerTitle: use_get_partner_title_default,
9532
- useInitSnapshot: use_init_snapshot_default
9089
+ useCompleteCurrentStage: use_complete_current_stage_default
9533
9090
  };
9534
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ServiceContext.Provider, { value: services, children });
9091
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ServiceContext.Provider, { value: services, children });
9535
9092
  };
9536
9093
  var useService = () => {
9537
- const context = (0, import_react45.useContext)(ServiceContext);
9094
+ const context = (0, import_react47.useContext)(ServiceContext);
9538
9095
  if (!context) {
9539
9096
  throw new Error("useService must be used within a ServiceProvider");
9540
9097
  }
@@ -9542,8 +9099,8 @@ var useService = () => {
9542
9099
  };
9543
9100
 
9544
9101
  // src/provider/meta-provider.tsx
9545
- var import_react46 = require("react");
9546
- var import_jsx_runtime7 = require("react/jsx-runtime");
9102
+ var import_react48 = require("react");
9103
+ var import_jsx_runtime8 = require("react/jsx-runtime");
9547
9104
  var MetaProvider = ({ children }) => {
9548
9105
  const { env } = useEnv();
9549
9106
  function updateMetadata() {
@@ -9591,10 +9148,10 @@ var MetaProvider = ({ children }) => {
9591
9148
  }
9592
9149
  }
9593
9150
  }
9594
- (0, import_react46.useEffect)(() => {
9151
+ (0, import_react48.useEffect)(() => {
9595
9152
  updateMetadata();
9596
9153
  }, [env?.defaultCompany]);
9597
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_jsx_runtime7.Fragment, { children });
9154
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, { children });
9598
9155
  };
9599
9156
  // Annotate the CommonJS export names for ESM import in node:
9600
9157
  0 && (module.exports = {
@@ -9603,7 +9160,9 @@ var MetaProvider = ({ children }) => {
9603
9160
  MetaProvider,
9604
9161
  ReactQueryProvider,
9605
9162
  ServiceProvider,
9163
+ SupabaseProvider,
9606
9164
  VersionGate,
9607
9165
  useEnv,
9608
- useService
9166
+ useService,
9167
+ useSupabase
9609
9168
  });