@fctc/interface-logic 1.8.3 → 1.8.5

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.
@@ -1,15 +1,59 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
1
2
  import { ReactNode } from 'react';
3
+ import { L as LocalStorageUtilsType, S as SessionStorageUtilsType } from './session-storage-ARp_lhTD.mjs';
2
4
 
3
5
  declare const MainProvider: ({ children }: {
4
6
  children: ReactNode;
5
- }) => JSX.Element;
7
+ }) => react_jsx_runtime.JSX.Element;
6
8
 
7
9
  declare const ReactQueryProvider: ({ children }: {
8
10
  children: ReactNode;
9
- }) => JSX.Element;
11
+ }) => react_jsx_runtime.JSX.Element;
10
12
 
11
13
  declare const VersionGate: ({ children }: {
12
14
  children: ReactNode;
13
- }) => JSX.Element | null;
15
+ }) => react_jsx_runtime.JSX.Element | null;
14
16
 
15
- export { MainProvider, ReactQueryProvider, VersionGate };
17
+ interface EnvConfig {
18
+ baseUrl?: string;
19
+ requests?: any;
20
+ context?: {
21
+ uid?: number | null;
22
+ allowed_company_ids?: number[];
23
+ lang?: string;
24
+ tz?: string;
25
+ };
26
+ defaultCompany?: {
27
+ id?: number | null;
28
+ logo?: string;
29
+ secondary_color?: string;
30
+ primary_color?: string;
31
+ };
32
+ config?: any;
33
+ companies?: any[];
34
+ user?: any;
35
+ db?: string;
36
+ refreshTokenEndpoint?: string;
37
+ localStorageUtils?: LocalStorageUtilsType;
38
+ sessionStorageUtils?: SessionStorageUtilsType;
39
+ envFile?: any;
40
+ }
41
+ declare function EnvProvider({ children, localStorageUtils: localStorageUtil, sessionStorageUtils: sessionStorageUtil, }: {
42
+ children: React.ReactNode;
43
+ localStorageUtils?: LocalStorageUtilsType;
44
+ sessionStorageUtils?: SessionStorageUtilsType;
45
+ }): react_jsx_runtime.JSX.Element;
46
+ declare function useEnv(): {
47
+ env: EnvConfig;
48
+ setupEnv: (envConfig: Partial<EnvConfig>) => EnvConfig;
49
+ setUid: (uid: number) => void;
50
+ setLang: (lang: string) => void;
51
+ setAllowCompanies: (allowed_company_ids: number[]) => void;
52
+ setCompanies: (companies: any[]) => void;
53
+ setDefaultCompany: (defaultCompany: EnvConfig["defaultCompany"]) => void;
54
+ setUserInfo: (user: any) => void;
55
+ setConfig: (config: any) => void;
56
+ setEnvFile: (envFile: any) => void;
57
+ };
58
+
59
+ export { EnvProvider, MainProvider, ReactQueryProvider, VersionGate, useEnv };
@@ -1,15 +1,59 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
1
2
  import { ReactNode } from 'react';
3
+ import { L as LocalStorageUtilsType, S as SessionStorageUtilsType } from './session-storage-ARp_lhTD.js';
2
4
 
3
5
  declare const MainProvider: ({ children }: {
4
6
  children: ReactNode;
5
- }) => JSX.Element;
7
+ }) => react_jsx_runtime.JSX.Element;
6
8
 
7
9
  declare const ReactQueryProvider: ({ children }: {
8
10
  children: ReactNode;
9
- }) => JSX.Element;
11
+ }) => react_jsx_runtime.JSX.Element;
10
12
 
11
13
  declare const VersionGate: ({ children }: {
12
14
  children: ReactNode;
13
- }) => JSX.Element | null;
15
+ }) => react_jsx_runtime.JSX.Element | null;
14
16
 
15
- export { MainProvider, ReactQueryProvider, VersionGate };
17
+ interface EnvConfig {
18
+ baseUrl?: string;
19
+ requests?: any;
20
+ context?: {
21
+ uid?: number | null;
22
+ allowed_company_ids?: number[];
23
+ lang?: string;
24
+ tz?: string;
25
+ };
26
+ defaultCompany?: {
27
+ id?: number | null;
28
+ logo?: string;
29
+ secondary_color?: string;
30
+ primary_color?: string;
31
+ };
32
+ config?: any;
33
+ companies?: any[];
34
+ user?: any;
35
+ db?: string;
36
+ refreshTokenEndpoint?: string;
37
+ localStorageUtils?: LocalStorageUtilsType;
38
+ sessionStorageUtils?: SessionStorageUtilsType;
39
+ envFile?: any;
40
+ }
41
+ declare function EnvProvider({ children, localStorageUtils: localStorageUtil, sessionStorageUtils: sessionStorageUtil, }: {
42
+ children: React.ReactNode;
43
+ localStorageUtils?: LocalStorageUtilsType;
44
+ sessionStorageUtils?: SessionStorageUtilsType;
45
+ }): react_jsx_runtime.JSX.Element;
46
+ declare function useEnv(): {
47
+ env: EnvConfig;
48
+ setupEnv: (envConfig: Partial<EnvConfig>) => EnvConfig;
49
+ setUid: (uid: number) => void;
50
+ setLang: (lang: string) => void;
51
+ setAllowCompanies: (allowed_company_ids: number[]) => void;
52
+ setCompanies: (companies: any[]) => void;
53
+ setDefaultCompany: (defaultCompany: EnvConfig["defaultCompany"]) => void;
54
+ setUserInfo: (user: any) => void;
55
+ setConfig: (config: any) => void;
56
+ setEnvFile: (envFile: any) => void;
57
+ };
58
+
59
+ export { EnvProvider, MainProvider, ReactQueryProvider, VersionGate, useEnv };
package/dist/provider.js CHANGED
@@ -30,9 +30,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/provider.ts
31
31
  var provider_exports = {};
32
32
  __export(provider_exports, {
33
+ EnvProvider: () => EnvProvider,
33
34
  MainProvider: () => MainProvider,
34
35
  ReactQueryProvider: () => ReactQueryProvider,
35
- VersionGate: () => VersionGate
36
+ VersionGate: () => VersionGate,
37
+ useEnv: () => useEnv
36
38
  });
37
39
  module.exports = __toCommonJS(provider_exports);
38
40
 
@@ -2861,9 +2863,9 @@ var sessionStorageUtils = () => {
2861
2863
  // src/configs/axios-client.ts
2862
2864
  var axiosClient = {
2863
2865
  init(config) {
2864
- const localStorage2 = config.localStorageUtils ?? localStorageUtils();
2865
- const sessionStorage2 = config.sessionStorageUtils ?? sessionStorageUtils();
2866
- const db = config.db;
2866
+ const localStorage2 = config?.localStorageUtils ?? localStorageUtils();
2867
+ const sessionStorage2 = config?.sessionStorageUtils ?? sessionStorageUtils();
2868
+ const db = config?.db;
2867
2869
  let isRefreshing = false;
2868
2870
  let failedQueue = [];
2869
2871
  const processQueue = (error, token = null) => {
@@ -2882,16 +2884,19 @@ var axiosClient = {
2882
2884
  timeout: 5e4,
2883
2885
  paramsSerializer: (params) => new URLSearchParams(params).toString()
2884
2886
  });
2885
- instance.interceptors.request.use(async (config2) => {
2886
- const { useRefreshToken, useActionToken, actionToken } = config2;
2887
- if (useActionToken && actionToken) {
2888
- config2.headers["Action-Token"] = actionToken;
2889
- }
2890
- const getToken = useRefreshToken ? localStorage2.getRefreshToken : localStorage2.getAccessToken;
2891
- const token = await getToken?.();
2892
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
2893
- return config2;
2894
- }, Promise.reject);
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
+ );
2895
2900
  instance.interceptors.response.use(
2896
2901
  (response) => {
2897
2902
  return handleResponse(response);
@@ -3032,83 +3037,73 @@ var axiosClient = {
3032
3037
  };
3033
3038
 
3034
3039
  // src/environment/EnvStore.ts
3035
- var EnvStore = class {
3036
- envStore;
3037
- baseUrl;
3038
- requests;
3039
- context;
3040
- defaultCompany;
3041
- config;
3042
- companies;
3043
- user;
3044
- db;
3045
- localStorageUtils;
3046
- sessionStorageUtils;
3047
- refreshTokenEndpoint;
3048
- constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
3049
- this.envStore = envStore2;
3050
- this.localStorageUtils = localStorageUtils2;
3051
- this.sessionStorageUtils = sessionStorageUtils2;
3052
- this.setup();
3053
- }
3054
- setup() {
3055
- const env2 = this.envStore.getState().env;
3056
- this.baseUrl = env2?.baseUrl;
3057
- this.requests = env2?.requests;
3058
- this.context = env2?.context;
3059
- this.defaultCompany = env2?.defaultCompany;
3060
- this.config = env2?.config;
3061
- this.companies = env2?.companies || [];
3062
- this.user = env2?.user;
3063
- this.db = env2?.db;
3064
- this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
3065
- }
3066
- setupEnv(envConfig) {
3067
- const dispatch = this.envStore.dispatch;
3068
- const env2 = {
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 = {
3069
3059
  ...envConfig,
3070
- localStorageUtils: this.localStorageUtils,
3071
- sessionStorageUtils: this.sessionStorageUtils
3060
+ localStorageUtils: localStorageUtil,
3061
+ sessionStorageUtils: sessionStorageUtil
3072
3062
  };
3073
- const requests = axiosClient.init(env2);
3074
- dispatch(setEnv({ ...env2, requests }));
3075
- this.setup();
3076
- }
3077
- setUid(uid) {
3078
- const dispatch = this.envStore.dispatch;
3079
- dispatch(setUid(uid));
3080
- this.setup();
3081
- }
3082
- setLang(lang) {
3083
- const dispatch = this.envStore.dispatch;
3084
- dispatch(setLang(lang));
3085
- this.setup();
3086
- }
3087
- setAllowCompanies(allowCompanies) {
3088
- const dispatch = this.envStore.dispatch;
3089
- dispatch(setAllowCompanies(allowCompanies));
3090
- this.setup();
3091
- }
3092
- setCompanies(companies) {
3093
- const dispatch = this.envStore.dispatch;
3094
- dispatch(setCompanies(companies));
3095
- this.setup();
3096
- }
3097
- setDefaultCompany(company) {
3098
- const dispatch = this.envStore.dispatch;
3099
- dispatch(setDefaultCompany(company));
3100
- this.setup();
3101
- }
3102
- setUserInfo(userInfo) {
3103
- const dispatch = this.envStore.dispatch;
3104
- dispatch(setUser(userInfo));
3105
- this.setup();
3106
- }
3107
- };
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
+ }
3108
3102
  var env = null;
3109
3103
  function getEnv() {
3110
- if (!env)
3111
- env = new EnvStore(envStore, localStorageUtils(), sessionStorageUtils());
3104
+ if (!env) {
3105
+ env = createEnvStore(envStore, localStorageUtils(), sessionStorageUtils());
3106
+ }
3112
3107
  return env;
3113
3108
  }
3114
3109
 
@@ -3373,8 +3368,8 @@ var ViewService = {
3373
3368
  },
3374
3369
  async getVersion() {
3375
3370
  const env2 = getEnv();
3376
- console.log("env", env2);
3377
- return env2?.requests.get("", {
3371
+ console.log("env?.requests", env2, env2?.requests);
3372
+ return env2?.requests?.get("", {
3378
3373
  headers: {
3379
3374
  "Content-Type": "application/json"
3380
3375
  }
@@ -3571,6 +3566,7 @@ var VersionGate = ({ children }) => {
3571
3566
  };
3572
3567
  const validateVersion = async () => {
3573
3568
  const serverVersion = await view_service_default.getVersion();
3569
+ console.log("serverVersion", serverVersion);
3574
3570
  const cached = localStorage.getItem("__api_version__");
3575
3571
  if (cached !== serverVersion?.api_version) {
3576
3572
  clearVersion();
@@ -3593,9 +3589,137 @@ var VersionGate = ({ children }) => {
3593
3589
  }, [queryClient]);
3594
3590
  return ready ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children }) : null;
3595
3591
  };
3592
+
3593
+ // src/provider/env-provider.tsx
3594
+ var import_react3 = require("react");
3595
+ var import_jsx_runtime5 = require("react/jsx-runtime");
3596
+ var initialEnvState = {
3597
+ baseUrl: "",
3598
+ requests: null,
3599
+ companies: [],
3600
+ user: {},
3601
+ config: null,
3602
+ envFile: null,
3603
+ defaultCompany: {
3604
+ id: null,
3605
+ logo: "",
3606
+ secondary_color: "",
3607
+ primary_color: ""
3608
+ },
3609
+ context: {
3610
+ uid: null,
3611
+ allowed_company_ids: [],
3612
+ lang: "vi_VN",
3613
+ tz: "Asia/Saigon"
3614
+ }
3615
+ };
3616
+ var EnvContext = (0, import_react3.createContext)(null);
3617
+ function EnvProvider({
3618
+ children,
3619
+ localStorageUtils: localStorageUtil = localStorageUtils(),
3620
+ sessionStorageUtils: sessionStorageUtil = sessionStorageUtils()
3621
+ }) {
3622
+ const [env2, setEnvState] = (0, import_react3.useState)({
3623
+ ...initialEnvState,
3624
+ localStorageUtils: localStorageUtil,
3625
+ sessionStorageUtils: sessionStorageUtil
3626
+ });
3627
+ const setupEnv = (0, import_react3.useCallback)(
3628
+ (envConfig) => {
3629
+ const updatedEnv = {
3630
+ ...env2,
3631
+ ...envConfig,
3632
+ localStorageUtils: localStorageUtil,
3633
+ sessionStorageUtils: sessionStorageUtil
3634
+ };
3635
+ const requests = axiosClient.init(updatedEnv);
3636
+ setEnvState({ ...updatedEnv, requests });
3637
+ return updatedEnv;
3638
+ },
3639
+ [env2, localStorageUtil, sessionStorageUtil]
3640
+ );
3641
+ const setUid2 = (0, import_react3.useCallback)((uid) => {
3642
+ setEnvState((prev) => ({
3643
+ ...prev,
3644
+ context: { ...prev.context, uid }
3645
+ }));
3646
+ }, []);
3647
+ const setLang2 = (0, import_react3.useCallback)((lang) => {
3648
+ setEnvState((prev) => ({
3649
+ ...prev,
3650
+ context: { ...prev.context, lang }
3651
+ }));
3652
+ }, []);
3653
+ const setAllowCompanies2 = (0, import_react3.useCallback)((allowed_company_ids) => {
3654
+ setEnvState((prev) => ({
3655
+ ...prev,
3656
+ context: { ...prev.context, allowed_company_ids }
3657
+ }));
3658
+ }, []);
3659
+ const setCompanies2 = (0, import_react3.useCallback)((companies) => {
3660
+ setEnvState((prev) => ({
3661
+ ...prev,
3662
+ companies
3663
+ }));
3664
+ }, []);
3665
+ const setDefaultCompany2 = (0, import_react3.useCallback)(
3666
+ (defaultCompany) => {
3667
+ setEnvState((prev) => ({
3668
+ ...prev,
3669
+ defaultCompany
3670
+ }));
3671
+ },
3672
+ []
3673
+ );
3674
+ const setUserInfo = (0, import_react3.useCallback)((user) => {
3675
+ setEnvState((prev) => ({
3676
+ ...prev,
3677
+ user
3678
+ }));
3679
+ }, []);
3680
+ const setConfig2 = (0, import_react3.useCallback)((config) => {
3681
+ setEnvState((prev) => ({
3682
+ ...prev,
3683
+ config
3684
+ }));
3685
+ }, []);
3686
+ const setEnvFile2 = (0, import_react3.useCallback)((envFile) => {
3687
+ setEnvState((prev) => ({
3688
+ ...prev,
3689
+ envFile
3690
+ }));
3691
+ }, []);
3692
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
3693
+ EnvContext.Provider,
3694
+ {
3695
+ value: {
3696
+ env: env2,
3697
+ setupEnv,
3698
+ setUid: setUid2,
3699
+ setLang: setLang2,
3700
+ setAllowCompanies: setAllowCompanies2,
3701
+ setCompanies: setCompanies2,
3702
+ setDefaultCompany: setDefaultCompany2,
3703
+ setUserInfo,
3704
+ setConfig: setConfig2,
3705
+ setEnvFile: setEnvFile2
3706
+ },
3707
+ children
3708
+ }
3709
+ );
3710
+ }
3711
+ function useEnv() {
3712
+ const context = (0, import_react3.useContext)(EnvContext);
3713
+ if (!context) {
3714
+ throw new Error("useEnv must be used within an EnvProvider");
3715
+ }
3716
+ return context;
3717
+ }
3596
3718
  // Annotate the CommonJS export names for ESM import in node:
3597
3719
  0 && (module.exports = {
3720
+ EnvProvider,
3598
3721
  MainProvider,
3599
3722
  ReactQueryProvider,
3600
- VersionGate
3723
+ VersionGate,
3724
+ useEnv
3601
3725
  });