@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/configs.js +9 -12
- package/dist/configs.mjs +9 -12
- package/dist/environment.d.mts +16 -15
- package/dist/environment.d.ts +16 -15
- package/dist/environment.js +90 -79
- package/dist/environment.mjs +89 -79
- package/dist/hooks.d.mts +6 -1
- package/dist/hooks.d.ts +6 -1
- package/dist/hooks.js +257 -217
- package/dist/hooks.mjs +216 -177
- package/dist/provider.js +320 -585
- package/dist/provider.mjs +319 -584
- package/dist/services.d.mts +1 -0
- package/dist/services.d.ts +1 -0
- package/dist/services.js +131 -107
- package/dist/services.mjs +131 -107
- package/dist/store.js +7 -5
- package/dist/store.mjs +7 -5
- package/package.json +1 -1
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
|
|
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
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
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,
|
|
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 [
|
|
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,
|
|
3362
|
+
const setupEnv = (0, import_react4.useCallback)(
|
|
3628
3363
|
(envConfig) => {
|
|
3629
3364
|
const updatedEnv = {
|
|
3630
|
-
...
|
|
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
|
-
[
|
|
3374
|
+
[env, localStorageUtil, sessionStorageUtil]
|
|
3640
3375
|
);
|
|
3641
|
-
const setUid2 = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
}
|