@fctc/interface-logic 1.8.6 → 1.8.8

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
@@ -83,11 +83,13 @@ var breadcrums_slice_default = breadcrumbsSlice.reducer;
83
83
  var import_toolkit2 = require("@reduxjs/toolkit");
84
84
  var initialState2 = {
85
85
  baseUrl: "",
86
- requests: null,
87
86
  companies: [],
88
87
  user: {},
88
+ db: "",
89
+ refreshTokenEndpoint: "",
89
90
  config: null,
90
91
  envFile: null,
92
+ requests: null,
91
93
  defaultCompany: {
92
94
  id: null,
93
95
  logo: "",
@@ -689,6 +691,297 @@ var MainProvider = ({ children }) => {
689
691
  var import_react2 = require("react");
690
692
  var import_react_query2 = require("@tanstack/react-query");
691
693
 
694
+ // src/services/view-service/backup.ts
695
+ var import_react = require("react");
696
+ function useViewService() {
697
+ const { env } = useEnv();
698
+ const getView = (0, import_react.useCallback)(
699
+ async ({ model, views, context = {}, options = {}, aid }) => {
700
+ const defaultOptions = {
701
+ load_filters: true,
702
+ toolbar: true,
703
+ action_id: aid
704
+ };
705
+ const jsonDataView = {
706
+ model,
707
+ method: "get_fields_view_v2" /* GET_FIELD_VIEW */,
708
+ kwargs: {
709
+ views,
710
+ options: { ...options, ...defaultOptions }
711
+ },
712
+ with_context: context
713
+ };
714
+ return env?.requests?.post("/call" /* CALL_PATH */, jsonDataView, {
715
+ headers: {
716
+ "Content-Type": "application/json"
717
+ }
718
+ });
719
+ },
720
+ [env]
721
+ );
722
+ const getMenu = (0, import_react.useCallback)(
723
+ async (context) => {
724
+ const jsonData = {
725
+ model: "ir.ui.menu" /* MENU */,
726
+ method: "web_search_read" /* WEB_SEARCH_READ */,
727
+ ids: [],
728
+ with_context: context,
729
+ kwargs: {
730
+ specification: {
731
+ active: {},
732
+ name: {},
733
+ is_display: {},
734
+ sequence: {},
735
+ complete_name: {},
736
+ action: {
737
+ fields: {
738
+ display_name: {},
739
+ type: {},
740
+ binding_view_types: {}
741
+ }
742
+ },
743
+ url_icon: {},
744
+ web_icon: {},
745
+ web_icon_data: {},
746
+ groups_id: {
747
+ fields: {
748
+ full_name: {}
749
+ },
750
+ limit: 40,
751
+ order: ""
752
+ },
753
+ display_name: {},
754
+ child_id: {
755
+ fields: {
756
+ active: {},
757
+ name: {},
758
+ is_display: {},
759
+ sequence: {},
760
+ complete_name: {},
761
+ action: {
762
+ fields: {
763
+ display_name: {},
764
+ type: {},
765
+ binding_view_types: {}
766
+ }
767
+ },
768
+ url_icon: {},
769
+ web_icon: {},
770
+ web_icon_data: {},
771
+ groups_id: {
772
+ fields: {
773
+ full_name: {}
774
+ },
775
+ limit: 40,
776
+ order: ""
777
+ },
778
+ display_name: {},
779
+ child_id: {
780
+ fields: {
781
+ active: {},
782
+ name: {},
783
+ is_display: {},
784
+ sequence: {},
785
+ complete_name: {},
786
+ action: {
787
+ fields: {
788
+ display_name: {},
789
+ type: {},
790
+ binding_view_types: {}
791
+ }
792
+ },
793
+ url_icon: {},
794
+ web_icon: {},
795
+ web_icon_data: {},
796
+ groups_id: {
797
+ fields: {
798
+ full_name: {}
799
+ },
800
+ limit: 40,
801
+ order: ""
802
+ },
803
+ display_name: {},
804
+ child_id: {
805
+ fields: {},
806
+ limit: 40,
807
+ order: ""
808
+ }
809
+ },
810
+ limit: 40,
811
+ order: ""
812
+ }
813
+ },
814
+ limit: 40,
815
+ order: ""
816
+ }
817
+ },
818
+ domain: [
819
+ "&",
820
+ ["is_display", "=", true],
821
+ "&",
822
+ ["active", "=", true],
823
+ ["parent_id", "=", false]
824
+ ]
825
+ }
826
+ };
827
+ return env?.requests?.post("/call" /* CALL_PATH */, jsonData, {
828
+ headers: {
829
+ "Content-Type": "application/json"
830
+ }
831
+ });
832
+ },
833
+ [env]
834
+ );
835
+ const getActionDetail = (0, import_react.useCallback)(
836
+ async (aid, context) => {
837
+ const jsonData = {
838
+ model: "ir.actions.act_window" /* WINDOW_ACTION */,
839
+ method: "web_read" /* WEB_READ */,
840
+ ids: [aid],
841
+ with_context: context,
842
+ kwargs: {
843
+ specification: {
844
+ id: {},
845
+ name: {},
846
+ res_model: {},
847
+ views: {},
848
+ view_mode: {},
849
+ mobile_view_mode: {},
850
+ domain: {},
851
+ context: {},
852
+ groups_id: {},
853
+ search_view_id: {}
854
+ }
855
+ }
856
+ };
857
+ return env?.requests?.post("/call" /* CALL_PATH */, jsonData, {
858
+ headers: {
859
+ "Content-Type": "application/json"
860
+ }
861
+ });
862
+ },
863
+ [env]
864
+ );
865
+ const getResequence = (0, import_react.useCallback)(
866
+ async ({ model, ids, context, offset }) => {
867
+ const jsonData = {
868
+ model,
869
+ with_context: context,
870
+ ids,
871
+ field: "sequence",
872
+ ...offset > 0 ? { offset } : {}
873
+ };
874
+ return env?.requests.post("/web/dataset/resequence", jsonData, {
875
+ headers: {
876
+ "Content-Type": "application/json"
877
+ }
878
+ });
879
+ },
880
+ [env]
881
+ );
882
+ const getSelectionItem = (0, import_react.useCallback)(
883
+ async ({ data }) => {
884
+ const jsonData = {
885
+ model: data.model,
886
+ ids: [],
887
+ method: "get_data_select",
888
+ with_context: data.context,
889
+ kwargs: {
890
+ count_limit: 10001,
891
+ domain: data.domain ? data.domain : [],
892
+ offset: 0,
893
+ order: "",
894
+ specification: data?.specification ?? {
895
+ id: {},
896
+ name: {},
897
+ display_name: {}
898
+ }
899
+ }
900
+ };
901
+ return env?.requests.post("/call" /* CALL_PATH */, jsonData, {
902
+ headers: {
903
+ "Content-Type": "application/json"
904
+ }
905
+ });
906
+ },
907
+ [env]
908
+ );
909
+ const loadMessages = (0, import_react.useCallback)(
910
+ async () => {
911
+ return env.requests.post(
912
+ "/load_message_failures" /* LOAD_MESSAGE */,
913
+ {},
914
+ {
915
+ headers: {
916
+ "Content-Type": "application/json"
917
+ }
918
+ }
919
+ );
920
+ },
921
+ [env]
922
+ );
923
+ const getVersion = (0, import_react.useCallback)(
924
+ async () => {
925
+ console.log("env?.requests", env, env?.requests);
926
+ return env?.requests?.get("", {
927
+ headers: {
928
+ "Content-Type": "application/json"
929
+ }
930
+ });
931
+ },
932
+ [env]
933
+ );
934
+ return {
935
+ getView,
936
+ getMenu,
937
+ getActionDetail,
938
+ getResequence,
939
+ getSelectionItem,
940
+ loadMessages,
941
+ getVersion
942
+ };
943
+ }
944
+
945
+ // src/provider/version-gate-provider.tsx
946
+ var import_jsx_runtime4 = require("react/jsx-runtime");
947
+ var VersionGate = ({ children }) => {
948
+ const queryClient = (0, import_react_query2.useQueryClient)();
949
+ const [ready, setReady] = (0, import_react2.useState)(false);
950
+ const { getVersion } = useViewService();
951
+ (0, import_react2.useEffect)(() => {
952
+ const clearVersion = () => {
953
+ queryClient.clear();
954
+ localStorage.removeItem("__api_version__");
955
+ };
956
+ const validateVersion = async () => {
957
+ const serverVersion = await getVersion();
958
+ console.log("serverVersion", serverVersion);
959
+ const cached = localStorage.getItem("__api_version__");
960
+ if (cached !== serverVersion?.api_version) {
961
+ clearVersion();
962
+ localStorage.setItem("__api_version__", serverVersion?.api_version);
963
+ } else {
964
+ console.log("Api version:", serverVersion?.api_version);
965
+ }
966
+ setReady(true);
967
+ };
968
+ validateVersion();
969
+ if (typeof window !== "undefined") {
970
+ const onKey = (e) => {
971
+ const key = e.key.toLowerCase();
972
+ const isHardRefresh = (key === "f5" || key === "r") && e.ctrlKey && (key !== "r" || e.shiftKey) || key === "r" && e.metaKey && e.shiftKey || key === "r" && e.metaKey && e.altKey;
973
+ if (isHardRefresh) clearVersion();
974
+ };
975
+ window.addEventListener("keydown", onKey);
976
+ return () => window.removeEventListener("keydown", onKey);
977
+ }
978
+ }, [queryClient]);
979
+ return ready ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children }) : null;
980
+ };
981
+
982
+ // src/provider/env-provider.tsx
983
+ var import_react4 = require("react");
984
+
692
985
  // src/configs/axios-client.ts
693
986
  var import_axios = __toESM(require("axios"));
694
987
 
@@ -2802,7 +3095,7 @@ function matchDomain(record, domain) {
2802
3095
  }
2803
3096
 
2804
3097
  // src/utils/function.ts
2805
- var import_react = require("react");
3098
+ var import_react3 = require("react");
2806
3099
  var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
2807
3100
  if (!originalRequest.data) return originalRequest.data;
2808
3101
  if (typeof originalRequest.data === "string") {
@@ -2884,19 +3177,16 @@ var axiosClient = {
2884
3177
  timeout: 5e4,
2885
3178
  paramsSerializer: (params) => new URLSearchParams(params).toString()
2886
3179
  });
2887
- instance.interceptors.request.use(
2888
- async (config2) => {
2889
- const useRefreshToken = config2.useRefreshToken;
2890
- const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
2891
- if (token) {
2892
- config2.headers["Authorization"] = "Bearer " + token;
2893
- }
2894
- return config2;
2895
- },
2896
- (error) => {
2897
- Promise.reject(error);
2898
- }
2899
- );
3180
+ instance.interceptors.request.use(async (config2) => {
3181
+ const { useRefreshToken, useActionToken, actionToken } = config2;
3182
+ if (useActionToken && actionToken) {
3183
+ config2.headers["Action-Token"] = actionToken;
3184
+ }
3185
+ const getToken = useRefreshToken ? localStorage2.getRefreshToken : localStorage2.getAccessToken;
3186
+ const token = await getToken?.();
3187
+ if (token) config2.headers["Authorization"] = `Bearer ${token}`;
3188
+ return config2;
3189
+ }, Promise.reject);
2900
3190
  instance.interceptors.response.use(
2901
3191
  (response) => {
2902
3192
  return handleResponse(response);
@@ -3036,562 +3326,7 @@ var axiosClient = {
3036
3326
  }
3037
3327
  };
3038
3328
 
3039
- // src/environment/EnvStore.ts
3040
- function createEnvStore(store, localStorageUtil, sessionStorageUtil) {
3041
- const getEnvState = () => store.getState().env;
3042
- const setupEnvConfig = () => {
3043
- const env2 = getEnvState();
3044
- return {
3045
- baseUrl: env2?.baseUrl,
3046
- requests: env2?.requests,
3047
- context: env2?.context,
3048
- defaultCompany: env2?.defaultCompany,
3049
- config: env2?.config,
3050
- companies: env2?.companies || [],
3051
- user: env2?.user,
3052
- db: env2?.db,
3053
- refreshTokenEndpoint: env2?.refreshTokenEndpoint
3054
- };
3055
- };
3056
- const setupEnv = (envConfig) => {
3057
- const dispatch = store.dispatch;
3058
- const updatedEnv = {
3059
- ...envConfig,
3060
- localStorageUtils: localStorageUtil,
3061
- sessionStorageUtils: sessionStorageUtil
3062
- };
3063
- const requests = axiosClient.init(updatedEnv);
3064
- dispatch(setEnv({ ...updatedEnv, requests }));
3065
- return setupEnvConfig();
3066
- };
3067
- const setupUid = (uid) => {
3068
- store.dispatch(setUid(uid));
3069
- return setupEnvConfig();
3070
- };
3071
- const setupLang = (lang) => {
3072
- store.dispatch(setLang(lang));
3073
- return setupEnvConfig();
3074
- };
3075
- const setupAllowCompanies = (allowCompanies) => {
3076
- store.dispatch(setAllowCompanies(allowCompanies));
3077
- return setupEnvConfig();
3078
- };
3079
- const setupCompanies = (companies) => {
3080
- store.dispatch(setCompanies(companies));
3081
- return setupEnvConfig();
3082
- };
3083
- const setupDefaultCompany = (company) => {
3084
- store.dispatch(setDefaultCompany(company));
3085
- return setupEnvConfig();
3086
- };
3087
- const setUserInfo = (userInfo) => {
3088
- store.dispatch(setUser(userInfo));
3089
- return setupEnvConfig();
3090
- };
3091
- return {
3092
- getEnvConfig: setupEnvConfig,
3093
- setupEnv,
3094
- setUid: setupUid,
3095
- setLang: setupLang,
3096
- setAllowCompanies: setupAllowCompanies,
3097
- setCompanies: setupCompanies,
3098
- setDefaultCompany: setupDefaultCompany,
3099
- setUserInfo
3100
- };
3101
- }
3102
- var env = null;
3103
- function getEnv() {
3104
- if (!env) {
3105
- env = createEnvStore(envStore, localStorageUtils(), sessionStorageUtils());
3106
- }
3107
- return env;
3108
- }
3109
-
3110
- // src/services/view-service/index.ts
3111
- var ViewService = {
3112
- async getView({
3113
- model,
3114
- views,
3115
- context = {},
3116
- options = {},
3117
- aid
3118
- }) {
3119
- const env2 = getEnv();
3120
- const defaultOptions = {
3121
- load_filters: true,
3122
- toolbar: true,
3123
- action_id: aid
3124
- };
3125
- const jsonDataView = {
3126
- model,
3127
- method: "get_fields_view_v2" /* GET_FIELD_VIEW */,
3128
- kwargs: {
3129
- views,
3130
- options: { ...options, ...defaultOptions }
3131
- },
3132
- with_context: context
3133
- };
3134
- return env2?.requests?.post("/call" /* CALL_PATH */, jsonDataView, {
3135
- headers: {
3136
- "Content-Type": "application/json"
3137
- }
3138
- });
3139
- },
3140
- async getMenu(context) {
3141
- const env2 = getEnv();
3142
- const jsonData = {
3143
- model: "ir.ui.menu" /* MENU */,
3144
- method: "web_search_read" /* WEB_SEARCH_READ */,
3145
- ids: [],
3146
- with_context: context,
3147
- kwargs: {
3148
- specification: {
3149
- active: {},
3150
- name: {},
3151
- is_display: {},
3152
- sequence: {},
3153
- complete_name: {},
3154
- action: {
3155
- fields: {
3156
- display_name: {},
3157
- type: {},
3158
- binding_view_types: {}
3159
- // res_model: {},
3160
- }
3161
- },
3162
- url_icon: {},
3163
- web_icon: {},
3164
- web_icon_data: {},
3165
- groups_id: {
3166
- fields: {
3167
- full_name: {}
3168
- },
3169
- limit: 40,
3170
- order: ""
3171
- },
3172
- display_name: {},
3173
- child_id: {
3174
- fields: {
3175
- active: {},
3176
- name: {},
3177
- is_display: {},
3178
- sequence: {},
3179
- complete_name: {},
3180
- action: {
3181
- fields: {
3182
- display_name: {},
3183
- type: {},
3184
- binding_view_types: {}
3185
- // res_model: {},
3186
- }
3187
- },
3188
- url_icon: {},
3189
- web_icon: {},
3190
- web_icon_data: {},
3191
- groups_id: {
3192
- fields: {
3193
- full_name: {}
3194
- },
3195
- limit: 40,
3196
- order: ""
3197
- },
3198
- display_name: {},
3199
- child_id: {
3200
- fields: {
3201
- active: {},
3202
- name: {},
3203
- is_display: {},
3204
- sequence: {},
3205
- complete_name: {},
3206
- action: {
3207
- fields: {
3208
- display_name: {},
3209
- type: {},
3210
- binding_view_types: {}
3211
- // res_model: {},
3212
- }
3213
- },
3214
- url_icon: {},
3215
- web_icon: {},
3216
- web_icon_data: {},
3217
- groups_id: {
3218
- fields: {
3219
- full_name: {}
3220
- },
3221
- limit: 40,
3222
- order: ""
3223
- },
3224
- display_name: {},
3225
- child_id: {
3226
- fields: {
3227
- active: {},
3228
- name: {},
3229
- is_display: {},
3230
- sequence: {},
3231
- complete_name: {},
3232
- action: {
3233
- fields: {
3234
- display_name: {},
3235
- type: {},
3236
- binding_view_types: {}
3237
- // res_model: {},
3238
- }
3239
- },
3240
- url_icon: {},
3241
- web_icon: {},
3242
- web_icon_data: {},
3243
- groups_id: {
3244
- fields: {
3245
- full_name: {}
3246
- },
3247
- limit: 40,
3248
- order: ""
3249
- },
3250
- display_name: {},
3251
- child_id: {
3252
- fields: {},
3253
- limit: 40,
3254
- order: ""
3255
- }
3256
- },
3257
- limit: 40,
3258
- order: ""
3259
- }
3260
- },
3261
- limit: 40,
3262
- order: ""
3263
- }
3264
- },
3265
- limit: 40,
3266
- order: ""
3267
- }
3268
- },
3269
- domain: [
3270
- "&",
3271
- ["is_display", "=", true],
3272
- "&",
3273
- ["active", "=", true],
3274
- ["parent_id", "=", false]
3275
- ]
3276
- }
3277
- };
3278
- return env2?.requests?.post("/call" /* CALL_PATH */, jsonData, {
3279
- headers: {
3280
- "Content-Type": "application/json"
3281
- }
3282
- });
3283
- },
3284
- async getActionDetail(aid, context) {
3285
- const env2 = getEnv();
3286
- const jsonData = {
3287
- model: "ir.actions.act_window" /* WINDOW_ACTION */,
3288
- method: "web_read" /* WEB_READ */,
3289
- ids: [aid],
3290
- with_context: context,
3291
- kwargs: {
3292
- specification: {
3293
- id: {},
3294
- name: {},
3295
- res_model: {},
3296
- views: {},
3297
- view_mode: {},
3298
- mobile_view_mode: {},
3299
- domain: {},
3300
- context: {},
3301
- groups_id: {},
3302
- search_view_id: {}
3303
- }
3304
- }
3305
- };
3306
- return env2?.requests?.post("/call" /* CALL_PATH */, jsonData, {
3307
- headers: {
3308
- "Content-Type": "application/json"
3309
- }
3310
- });
3311
- },
3312
- async getResequence({
3313
- model,
3314
- ids,
3315
- context,
3316
- offset
3317
- }) {
3318
- const env2 = getEnv();
3319
- const jsonData = {
3320
- model,
3321
- with_context: context,
3322
- ids,
3323
- field: "sequence",
3324
- ...offset > 0 ? { offset } : {}
3325
- };
3326
- return env2?.requests.post("/web/dataset/resequence", jsonData, {
3327
- headers: {
3328
- "Content-Type": "application/json"
3329
- }
3330
- });
3331
- },
3332
- async getSelectionItem({ data }) {
3333
- const env2 = getEnv();
3334
- const jsonData = {
3335
- model: data.model,
3336
- ids: [],
3337
- method: "get_data_select",
3338
- with_context: data.context,
3339
- kwargs: {
3340
- count_limit: 10001,
3341
- domain: data.domain ? data.domain : [],
3342
- offset: 0,
3343
- order: "",
3344
- specification: data?.specification ?? {
3345
- id: {},
3346
- name: {},
3347
- display_name: {}
3348
- }
3349
- }
3350
- };
3351
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3352
- headers: {
3353
- "Content-Type": "application/json"
3354
- }
3355
- });
3356
- },
3357
- async loadMessages() {
3358
- const env2 = getEnv();
3359
- return env2.requests.post(
3360
- "/load_message_failures" /* LOAD_MESSAGE */,
3361
- {},
3362
- {
3363
- headers: {
3364
- "Content-Type": "application/json"
3365
- }
3366
- }
3367
- );
3368
- },
3369
- async getVersion() {
3370
- const { env: env2 } = useEnv();
3371
- console.log("env?.requests", env2, env2?.requests);
3372
- return env2?.requests?.get("", {
3373
- headers: {
3374
- "Content-Type": "application/json"
3375
- }
3376
- });
3377
- },
3378
- async get2FAMethods({
3379
- method,
3380
- with_context
3381
- }) {
3382
- const env2 = getEnv();
3383
- const jsonData = {
3384
- method,
3385
- with_context
3386
- };
3387
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3388
- headers: {
3389
- "Content-Type": "application/json"
3390
- }
3391
- });
3392
- },
3393
- async verify2FA({
3394
- method,
3395
- with_context,
3396
- code,
3397
- device,
3398
- location
3399
- }) {
3400
- const env2 = getEnv();
3401
- const jsonData = {
3402
- method,
3403
- kwargs: {
3404
- vals: {
3405
- code,
3406
- device,
3407
- location
3408
- }
3409
- },
3410
- with_context
3411
- };
3412
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3413
- headers: {
3414
- "Content-Type": "application/json"
3415
- },
3416
- withCredentials: true
3417
- });
3418
- },
3419
- async signInSSO({
3420
- redirect_uri,
3421
- state,
3422
- client_id,
3423
- response_type,
3424
- path
3425
- }) {
3426
- const env2 = getEnv();
3427
- const params = new URLSearchParams({
3428
- response_type,
3429
- client_id,
3430
- redirect_uri,
3431
- state
3432
- });
3433
- const url = `${path}?${params.toString()}`;
3434
- return env2?.requests.get(url, {
3435
- headers: {
3436
- "Content-Type": "application/json"
3437
- },
3438
- withCredentials: true
3439
- });
3440
- },
3441
- async grantAccess({
3442
- redirect_uri,
3443
- state,
3444
- client_id,
3445
- scopes
3446
- }) {
3447
- const env2 = getEnv();
3448
- const jsonData = {
3449
- redirect_uri,
3450
- state,
3451
- client_id,
3452
- scopes
3453
- };
3454
- return env2?.requests.post("/grant-access" /* GRANT_ACCESS */, jsonData, {
3455
- headers: {
3456
- "Content-Type": "application/json"
3457
- },
3458
- withCredentials: true
3459
- });
3460
- },
3461
- async getFieldsViewSecurity({
3462
- method,
3463
- token,
3464
- views
3465
- }) {
3466
- const env2 = getEnv();
3467
- const jsonData = {
3468
- method,
3469
- kwargs: {
3470
- views
3471
- },
3472
- with_context: {
3473
- token
3474
- }
3475
- };
3476
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3477
- headers: {
3478
- "Content-Type": "application/json"
3479
- }
3480
- });
3481
- },
3482
- async settingsWebRead2fa({
3483
- method,
3484
- model,
3485
- kwargs,
3486
- token
3487
- }) {
3488
- const env2 = getEnv();
3489
- const jsonData = {
3490
- method,
3491
- model,
3492
- kwargs,
3493
- with_context: {
3494
- token
3495
- }
3496
- };
3497
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3498
- headers: {
3499
- "Content-Type": "application/json"
3500
- }
3501
- });
3502
- },
3503
- async requestSetupTotp({ method, token }) {
3504
- const env2 = getEnv();
3505
- const jsonData = {
3506
- method,
3507
- with_context: {
3508
- token
3509
- }
3510
- };
3511
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3512
- headers: {
3513
- "Content-Type": "application/json"
3514
- }
3515
- });
3516
- },
3517
- async verifyTotp({
3518
- method,
3519
- action_token,
3520
- code
3521
- }) {
3522
- const env2 = getEnv();
3523
- const jsonData = {
3524
- method,
3525
- kwargs: {
3526
- vals: {
3527
- code
3528
- }
3529
- },
3530
- with_context: {
3531
- action_token
3532
- }
3533
- };
3534
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3535
- headers: {
3536
- "Content-Type": "application/json"
3537
- }
3538
- });
3539
- },
3540
- async removeTotpSetUp({ method, token }) {
3541
- const env2 = getEnv();
3542
- const jsonData = {
3543
- method,
3544
- with_context: {
3545
- token
3546
- }
3547
- };
3548
- return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
3549
- headers: {
3550
- "Content-Type": "application/json"
3551
- }
3552
- });
3553
- }
3554
- };
3555
- var view_service_default = ViewService;
3556
-
3557
- // src/provider/version-gate-provider.tsx
3558
- var import_jsx_runtime4 = require("react/jsx-runtime");
3559
- var VersionGate = ({ children }) => {
3560
- const queryClient = (0, import_react_query2.useQueryClient)();
3561
- const [ready, setReady] = (0, import_react2.useState)(false);
3562
- (0, import_react2.useEffect)(() => {
3563
- const clearVersion = () => {
3564
- queryClient.clear();
3565
- localStorage.removeItem("__api_version__");
3566
- };
3567
- const validateVersion = async () => {
3568
- const serverVersion = await view_service_default.getVersion();
3569
- console.log("serverVersion", serverVersion);
3570
- const cached = localStorage.getItem("__api_version__");
3571
- if (cached !== serverVersion?.api_version) {
3572
- clearVersion();
3573
- localStorage.setItem("__api_version__", serverVersion?.api_version);
3574
- } else {
3575
- console.log("Api version:", serverVersion?.api_version);
3576
- }
3577
- setReady(true);
3578
- };
3579
- validateVersion();
3580
- if (typeof window !== "undefined") {
3581
- const onKey = (e) => {
3582
- const key = e.key.toLowerCase();
3583
- const isHardRefresh = (key === "f5" || key === "r") && e.ctrlKey && (key !== "r" || e.shiftKey) || key === "r" && e.metaKey && e.shiftKey || key === "r" && e.metaKey && e.altKey;
3584
- if (isHardRefresh) clearVersion();
3585
- };
3586
- window.addEventListener("keydown", onKey);
3587
- return () => window.removeEventListener("keydown", onKey);
3588
- }
3589
- }, [queryClient]);
3590
- return ready ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children }) : null;
3591
- };
3592
-
3593
3329
  // src/provider/env-provider.tsx
3594
- var import_react3 = require("react");
3595
3330
  var import_jsx_runtime5 = require("react/jsx-runtime");
3596
3331
  var initialEnvState = {
3597
3332
  baseUrl: "",
@@ -3613,21 +3348,21 @@ var initialEnvState = {
3613
3348
  tz: "Asia/Saigon"
3614
3349
  }
3615
3350
  };
3616
- var EnvContext = (0, import_react3.createContext)(null);
3351
+ var EnvContext = (0, import_react4.createContext)(null);
3617
3352
  function EnvProvider({
3618
3353
  children,
3619
3354
  localStorageUtils: localStorageUtil = localStorageUtils(),
3620
3355
  sessionStorageUtils: sessionStorageUtil = sessionStorageUtils()
3621
3356
  }) {
3622
- const [env2, setEnvState] = (0, import_react3.useState)({
3357
+ const [env, setEnvState] = (0, import_react4.useState)({
3623
3358
  ...initialEnvState,
3624
3359
  localStorageUtils: localStorageUtil,
3625
3360
  sessionStorageUtils: sessionStorageUtil
3626
3361
  });
3627
- const setupEnv = (0, import_react3.useCallback)(
3362
+ const setupEnv = (0, import_react4.useCallback)(
3628
3363
  (envConfig) => {
3629
3364
  const updatedEnv = {
3630
- ...env2,
3365
+ ...env,
3631
3366
  ...envConfig,
3632
3367
  localStorageUtils: localStorageUtil,
3633
3368
  sessionStorageUtils: sessionStorageUtil
@@ -3636,33 +3371,33 @@ function EnvProvider({
3636
3371
  setEnvState({ ...updatedEnv, requests });
3637
3372
  return updatedEnv;
3638
3373
  },
3639
- [env2, localStorageUtil, sessionStorageUtil]
3374
+ [env, localStorageUtil, sessionStorageUtil]
3640
3375
  );
3641
- const setUid2 = (0, import_react3.useCallback)((uid) => {
3376
+ const setUid2 = (0, import_react4.useCallback)((uid) => {
3642
3377
  setEnvState((prev) => ({
3643
3378
  ...prev,
3644
3379
  context: { ...prev.context, uid }
3645
3380
  }));
3646
3381
  }, []);
3647
- const setLang2 = (0, import_react3.useCallback)((lang) => {
3382
+ const setLang2 = (0, import_react4.useCallback)((lang) => {
3648
3383
  setEnvState((prev) => ({
3649
3384
  ...prev,
3650
3385
  context: { ...prev.context, lang }
3651
3386
  }));
3652
3387
  }, []);
3653
- const setAllowCompanies2 = (0, import_react3.useCallback)((allowed_company_ids) => {
3388
+ const setAllowCompanies2 = (0, import_react4.useCallback)((allowed_company_ids) => {
3654
3389
  setEnvState((prev) => ({
3655
3390
  ...prev,
3656
3391
  context: { ...prev.context, allowed_company_ids }
3657
3392
  }));
3658
3393
  }, []);
3659
- const setCompanies2 = (0, import_react3.useCallback)((companies) => {
3394
+ const setCompanies2 = (0, import_react4.useCallback)((companies) => {
3660
3395
  setEnvState((prev) => ({
3661
3396
  ...prev,
3662
3397
  companies
3663
3398
  }));
3664
3399
  }, []);
3665
- const setDefaultCompany2 = (0, import_react3.useCallback)(
3400
+ const setDefaultCompany2 = (0, import_react4.useCallback)(
3666
3401
  (defaultCompany) => {
3667
3402
  setEnvState((prev) => ({
3668
3403
  ...prev,
@@ -3671,19 +3406,19 @@ function EnvProvider({
3671
3406
  },
3672
3407
  []
3673
3408
  );
3674
- const setUserInfo = (0, import_react3.useCallback)((user) => {
3409
+ const setUserInfo = (0, import_react4.useCallback)((user) => {
3675
3410
  setEnvState((prev) => ({
3676
3411
  ...prev,
3677
3412
  user
3678
3413
  }));
3679
3414
  }, []);
3680
- const setConfig2 = (0, import_react3.useCallback)((config) => {
3415
+ const setConfig2 = (0, import_react4.useCallback)((config) => {
3681
3416
  setEnvState((prev) => ({
3682
3417
  ...prev,
3683
3418
  config
3684
3419
  }));
3685
3420
  }, []);
3686
- const setEnvFile2 = (0, import_react3.useCallback)((envFile) => {
3421
+ const setEnvFile2 = (0, import_react4.useCallback)((envFile) => {
3687
3422
  setEnvState((prev) => ({
3688
3423
  ...prev,
3689
3424
  envFile
@@ -3693,7 +3428,7 @@ function EnvProvider({
3693
3428
  EnvContext.Provider,
3694
3429
  {
3695
3430
  value: {
3696
- env: env2,
3431
+ env,
3697
3432
  setupEnv,
3698
3433
  setUid: setUid2,
3699
3434
  setLang: setLang2,
@@ -3709,7 +3444,7 @@ function EnvProvider({
3709
3444
  );
3710
3445
  }
3711
3446
  function useEnv() {
3712
- const context = (0, import_react3.useContext)(EnvContext);
3447
+ const context = (0, import_react4.useContext)(EnvContext);
3713
3448
  if (!context) {
3714
3449
  throw new Error("useEnv must be used within an EnvProvider");
3715
3450
  }