@fctc/interface-logic 3.8.9 → 3.9.0

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/hooks.js CHANGED
@@ -90,6 +90,7 @@ __export(hooks_exports, {
90
90
  useGetThreadMessages: () => use_get_thread_messages_default,
91
91
  useGetToken: () => use_get_token_default,
92
92
  useGetUser: () => use_get_user_default,
93
+ useGetVersion: () => use_get_version_default,
93
94
  useGetView: () => use_get_view_default,
94
95
  useGrantAccess: () => use_grant_access_default,
95
96
  useHandleCloseSession: () => use_handle_close_session_default,
@@ -8041,11 +8042,23 @@ var useGetNotifications = ({
8041
8042
  };
8042
8043
  var use_get_notifications_default = useGetNotifications;
8043
8044
 
8044
- // src/hooks/chart/use-read-group.ts
8045
+ // src/hooks/view/use-get-version.ts
8045
8046
  var import_react_query104 = require("@tanstack/react-query");
8047
+ var useGetVersion = () => {
8048
+ const { getVersion } = useViewService();
8049
+ return (0, import_react_query104.useMutation)({
8050
+ mutationFn: () => {
8051
+ return getVersion();
8052
+ }
8053
+ });
8054
+ };
8055
+ var use_get_version_default = useGetVersion;
8056
+
8057
+ // src/hooks/chart/use-read-group.ts
8058
+ var import_react_query105 = require("@tanstack/react-query");
8046
8059
  var useReadGroup = (services, xNode, body, enabled) => {
8047
8060
  const { readGroup } = useDashboardService();
8048
- return (0, import_react_query104.useQuery)({
8061
+ return (0, import_react_query105.useQuery)({
8049
8062
  queryKey: [body],
8050
8063
  queryFn: () => readGroup({
8051
8064
  service: services,
@@ -8059,10 +8072,10 @@ var useReadGroup = (services, xNode, body, enabled) => {
8059
8072
  var use_read_group_default = useReadGroup;
8060
8073
 
8061
8074
  // src/hooks/chart/use-get-data-chart.ts
8062
- var import_react_query105 = require("@tanstack/react-query");
8075
+ var import_react_query106 = require("@tanstack/react-query");
8063
8076
  var useGetDataChart = (services, xNode, body, enabled, path, method, queryKey) => {
8064
8077
  const { getDataChart } = useDashboardService();
8065
- return (0, import_react_query105.useQuery)({
8078
+ return (0, import_react_query106.useQuery)({
8066
8079
  queryKey: [queryKey],
8067
8080
  queryFn: () => getDataChart({
8068
8081
  service: services,
@@ -8138,6 +8151,7 @@ var use_get_data_chart_default = useGetDataChart;
8138
8151
  useGetThreadMessages,
8139
8152
  useGetToken,
8140
8153
  useGetUser,
8154
+ useGetVersion,
8141
8155
  useGetView,
8142
8156
  useGrantAccess,
8143
8157
  useHandleCloseSession,
package/dist/hooks.mjs CHANGED
@@ -7901,6 +7901,18 @@ var useGetNotifications = ({
7901
7901
  };
7902
7902
  var use_get_notifications_default = useGetNotifications;
7903
7903
 
7904
+ // src/hooks/view/use-get-version.ts
7905
+ import { useMutation as useMutation79 } from "@tanstack/react-query";
7906
+ var useGetVersion = () => {
7907
+ const { getVersion } = useViewService();
7908
+ return useMutation79({
7909
+ mutationFn: () => {
7910
+ return getVersion();
7911
+ }
7912
+ });
7913
+ };
7914
+ var use_get_version_default = useGetVersion;
7915
+
7904
7916
  // src/hooks/chart/use-read-group.ts
7905
7917
  import { useQuery as useQuery24 } from "@tanstack/react-query";
7906
7918
  var useReadGroup = (services, xNode, body, enabled) => {
@@ -7997,6 +8009,7 @@ export {
7997
8009
  use_get_thread_messages_default as useGetThreadMessages,
7998
8010
  use_get_token_default as useGetToken,
7999
8011
  use_get_user_default as useGetUser,
8012
+ use_get_version_default as useGetVersion,
8000
8013
  use_get_view_default as useGetView,
8001
8014
  use_grant_access_default as useGrantAccess,
8002
8015
  use_handle_close_session_default as useHandleCloseSession,
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
  import { L as LocalStorageUtilsType } from './local-storage-BPvoMGYJ.mjs';
4
- import { useForgotPassword, useForgotPasswordSSO, useGetProvider, useIsValidToken, useLoginCredential, useLoginSocial, useResetPassword, useResetPasswordSSO, useUpdatePassword, useLogout, useGetAccessByCode, useValidateActionToken, useGetCompanyInfo, useGetCurrentCompany, useGetListCompany, useExecuteImport, useExportExcel, useGetFieldExport, useGetFileExcel, useParsePreview, useUploadFileExcel, useUploadIdFile, useChangeStatus, useDeleteComment, useGetComment, useGetFormView, useGetImage, useSendComment, useUploadImage, useDelete, useGetAll, useGetConversionRate, useGetCurrency, useGetDetail, useGetFieldOnChange, useGetListMyBankAccount, useModel, useOdooDataTransform, useOnChangeForm, useSave, useGetProfile, useGetUser, useSwitchLocale, useButton, useDuplicateRecord, useGet2FAMethods, useGetActionDetail, useGetCalendar, useGetGroups, useGetListData, useGetMenu, useGetPrintReport, useGetProGressBar, useGetResequence, useGetSelection, useGetView, useLoadAction, useLoadMessage, usePrint, useRemoveRow, useRunAction, useSignInSSO, useVerify2FA, useGrantAccess, useRemoveTotpSetup, useRequestSetupTotp, useSettingsWebRead2fa, useVerifyTotp, useUploadFile, useCreateEntity, useGetASession, useCreateSession, useDeleteEntity, useGetList, useGetPos, useHandleClosingSession, useManageSession, useUpdateClosedSession, useUpdateEntity, useLoadDataPosSession, useManageOnChange, useGenSerialNumber, useGetOrderLine, useGetProductImage, useAddEntity, useCheckPayment, useHandleCloseSession, useHandleClosingDetailSession, useCreatePosConfig, useSearchJournal, useGetTenantMapping, useGetToken, useGetPreparationDisplayData, useChangeOrderPreparaionState as useChangeOrderPreparationState, useUpdateOrderStatus, useGetThreadData, useGetThreadMessages, useGetExternalTabs, useProcessOrder, useGeneratePaymentQrInfo, useSavePinCode, useGetPinCode, useReadGroup, useGetNotifications, useGetDataChart } from './hooks.mjs';
4
+ import { useForgotPassword, useForgotPasswordSSO, useGetProvider, useIsValidToken, useLoginCredential, useLoginSocial, useResetPassword, useResetPasswordSSO, useUpdatePassword, useLogout, useGetAccessByCode, useValidateActionToken, useGetCompanyInfo, useGetCurrentCompany, useGetListCompany, useExecuteImport, useExportExcel, useGetFieldExport, useGetFileExcel, useParsePreview, useUploadFileExcel, useUploadIdFile, useChangeStatus, useDeleteComment, useGetComment, useGetFormView, useGetImage, useSendComment, useUploadImage, useDelete, useGetAll, useGetConversionRate, useGetCurrency, useGetDetail, useGetFieldOnChange, useGetListMyBankAccount, useModel, useOdooDataTransform, useOnChangeForm, useSave, useGetProfile, useGetUser, useSwitchLocale, useButton, useDuplicateRecord, useGet2FAMethods, useGetActionDetail, useGetCalendar, useGetGroups, useGetListData, useGetMenu, useGetPrintReport, useGetProGressBar, useGetResequence, useGetSelection, useGetView, useLoadAction, useLoadMessage, usePrint, useRemoveRow, useRunAction, useSignInSSO, useVerify2FA, useGrantAccess, useRemoveTotpSetup, useRequestSetupTotp, useSettingsWebRead2fa, useVerifyTotp, useUploadFile, useCreateEntity, useGetASession, useCreateSession, useDeleteEntity, useGetList, useGetPos, useHandleClosingSession, useManageSession, useUpdateClosedSession, useUpdateEntity, useLoadDataPosSession, useManageOnChange, useGenSerialNumber, useGetOrderLine, useGetProductImage, useAddEntity, useCheckPayment, useHandleCloseSession, useHandleClosingDetailSession, useCreatePosConfig, useSearchJournal, useGetTenantMapping, useGetToken, useGetPreparationDisplayData, useChangeOrderPreparaionState as useChangeOrderPreparationState, useUpdateOrderStatus, useGetThreadData, useGetThreadMessages, useGetExternalTabs, useProcessOrder, useGeneratePaymentQrInfo, useSavePinCode, useGetPinCode, useReadGroup, useGetNotifications, useGetDataChart, useGetVersion } from './hooks.mjs';
5
5
  import '@tanstack/react-query';
6
6
  import './view-type-CRNLhTVq.mjs';
7
7
  import './base-model-type-DD8uZnDP.mjs';
@@ -170,6 +170,7 @@ interface ServiceContextType {
170
170
  useReadGroup: typeof useReadGroup;
171
171
  useGetNotifications: typeof useGetNotifications;
172
172
  useGetDataChart: typeof useGetDataChart;
173
+ useGetVersion: typeof useGetVersion;
173
174
  }
174
175
  declare const ServiceProvider: ({ children, }: {
175
176
  children: React.ReactNode;
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
  import { L as LocalStorageUtilsType } from './local-storage-BPvoMGYJ.js';
4
- import { useForgotPassword, useForgotPasswordSSO, useGetProvider, useIsValidToken, useLoginCredential, useLoginSocial, useResetPassword, useResetPasswordSSO, useUpdatePassword, useLogout, useGetAccessByCode, useValidateActionToken, useGetCompanyInfo, useGetCurrentCompany, useGetListCompany, useExecuteImport, useExportExcel, useGetFieldExport, useGetFileExcel, useParsePreview, useUploadFileExcel, useUploadIdFile, useChangeStatus, useDeleteComment, useGetComment, useGetFormView, useGetImage, useSendComment, useUploadImage, useDelete, useGetAll, useGetConversionRate, useGetCurrency, useGetDetail, useGetFieldOnChange, useGetListMyBankAccount, useModel, useOdooDataTransform, useOnChangeForm, useSave, useGetProfile, useGetUser, useSwitchLocale, useButton, useDuplicateRecord, useGet2FAMethods, useGetActionDetail, useGetCalendar, useGetGroups, useGetListData, useGetMenu, useGetPrintReport, useGetProGressBar, useGetResequence, useGetSelection, useGetView, useLoadAction, useLoadMessage, usePrint, useRemoveRow, useRunAction, useSignInSSO, useVerify2FA, useGrantAccess, useRemoveTotpSetup, useRequestSetupTotp, useSettingsWebRead2fa, useVerifyTotp, useUploadFile, useCreateEntity, useGetASession, useCreateSession, useDeleteEntity, useGetList, useGetPos, useHandleClosingSession, useManageSession, useUpdateClosedSession, useUpdateEntity, useLoadDataPosSession, useManageOnChange, useGenSerialNumber, useGetOrderLine, useGetProductImage, useAddEntity, useCheckPayment, useHandleCloseSession, useHandleClosingDetailSession, useCreatePosConfig, useSearchJournal, useGetTenantMapping, useGetToken, useGetPreparationDisplayData, useChangeOrderPreparaionState as useChangeOrderPreparationState, useUpdateOrderStatus, useGetThreadData, useGetThreadMessages, useGetExternalTabs, useProcessOrder, useGeneratePaymentQrInfo, useSavePinCode, useGetPinCode, useReadGroup, useGetNotifications, useGetDataChart } from './hooks.js';
4
+ import { useForgotPassword, useForgotPasswordSSO, useGetProvider, useIsValidToken, useLoginCredential, useLoginSocial, useResetPassword, useResetPasswordSSO, useUpdatePassword, useLogout, useGetAccessByCode, useValidateActionToken, useGetCompanyInfo, useGetCurrentCompany, useGetListCompany, useExecuteImport, useExportExcel, useGetFieldExport, useGetFileExcel, useParsePreview, useUploadFileExcel, useUploadIdFile, useChangeStatus, useDeleteComment, useGetComment, useGetFormView, useGetImage, useSendComment, useUploadImage, useDelete, useGetAll, useGetConversionRate, useGetCurrency, useGetDetail, useGetFieldOnChange, useGetListMyBankAccount, useModel, useOdooDataTransform, useOnChangeForm, useSave, useGetProfile, useGetUser, useSwitchLocale, useButton, useDuplicateRecord, useGet2FAMethods, useGetActionDetail, useGetCalendar, useGetGroups, useGetListData, useGetMenu, useGetPrintReport, useGetProGressBar, useGetResequence, useGetSelection, useGetView, useLoadAction, useLoadMessage, usePrint, useRemoveRow, useRunAction, useSignInSSO, useVerify2FA, useGrantAccess, useRemoveTotpSetup, useRequestSetupTotp, useSettingsWebRead2fa, useVerifyTotp, useUploadFile, useCreateEntity, useGetASession, useCreateSession, useDeleteEntity, useGetList, useGetPos, useHandleClosingSession, useManageSession, useUpdateClosedSession, useUpdateEntity, useLoadDataPosSession, useManageOnChange, useGenSerialNumber, useGetOrderLine, useGetProductImage, useAddEntity, useCheckPayment, useHandleCloseSession, useHandleClosingDetailSession, useCreatePosConfig, useSearchJournal, useGetTenantMapping, useGetToken, useGetPreparationDisplayData, useChangeOrderPreparaionState as useChangeOrderPreparationState, useUpdateOrderStatus, useGetThreadData, useGetThreadMessages, useGetExternalTabs, useProcessOrder, useGeneratePaymentQrInfo, useSavePinCode, useGetPinCode, useReadGroup, useGetNotifications, useGetDataChart, useGetVersion } from './hooks.js';
5
5
  import '@tanstack/react-query';
6
6
  import './view-type-CRNLhTVq.js';
7
7
  import './base-model-type-DD8uZnDP.js';
@@ -170,6 +170,7 @@ interface ServiceContextType {
170
170
  useReadGroup: typeof useReadGroup;
171
171
  useGetNotifications: typeof useGetNotifications;
172
172
  useGetDataChart: typeof useGetDataChart;
173
+ useGetVersion: typeof useGetVersion;
173
174
  }
174
175
  declare const ServiceProvider: ({ children, }: {
175
176
  children: React.ReactNode;
package/dist/provider.js CHANGED
@@ -5915,12 +5915,10 @@ var axiosClient = {
5915
5915
  timeout: 5e4,
5916
5916
  paramsSerializer: (params) => new URLSearchParams(params).toString()
5917
5917
  });
5918
- instance.interceptors.request.use(async (config2) => {
5919
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
5920
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
5921
- const actionToken = config2.headers["X-Action-Token"];
5922
- console.log("config", config2);
5923
- console.log("useRefreshToken", useRefreshToken);
5918
+ instance.interceptors.request.use(async (configReq) => {
5919
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
5920
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
5921
+ const actionToken = configReq.headers["X-Action-Token"];
5924
5922
  let token = null;
5925
5923
  if (useActionToken && actionToken) {
5926
5924
  token = actionToken;
@@ -5929,14 +5927,109 @@ var axiosClient = {
5929
5927
  token = await getToken?.();
5930
5928
  }
5931
5929
  if (token) {
5932
- config2.headers["Authorization"] = `Bearer ${token}`;
5930
+ configReq.headers["Authorization"] = `Bearer ${token}`;
5933
5931
  }
5934
5932
  if (database) {
5935
- config2.headers["DATABASE"] = database;
5933
+ configReq.headers["DATABASE"] = database;
5936
5934
  }
5937
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
5938
- return config2;
5935
+ return configReq;
5939
5936
  }, Promise.reject);
5937
+ const buildRefreshUrl = () => {
5938
+ if (!config.refreshTokenEndpoint) {
5939
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
5940
+ }
5941
+ const ep = String(config.refreshTokenEndpoint);
5942
+ if (/^https?:\/\//i.test(ep)) return ep;
5943
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
5944
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
5945
+ return `${cleanBase}${cleanEp}`;
5946
+ };
5947
+ instance.interceptors.response.use(
5948
+ (response) => handleResponse(response),
5949
+ async (error) => {
5950
+ const handleError3 = async (err) => {
5951
+ if (!err.response) return err;
5952
+ const { data } = err.response;
5953
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
5954
+ await clearAuthToken();
5955
+ }
5956
+ return data;
5957
+ };
5958
+ const originalRequest = error.config;
5959
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5960
+ error.response.data.code
5961
+ )) {
5962
+ if (isRefreshing) {
5963
+ return new Promise(function(resolve, reject) {
5964
+ failedQueue.push({ resolve, reject });
5965
+ }).then((newToken) => {
5966
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
5967
+ originalRequest.data = updateTokenParamInOriginalRequest(
5968
+ originalRequest,
5969
+ newToken
5970
+ );
5971
+ return instance.request(originalRequest);
5972
+ }).catch(async (err) => {
5973
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
5974
+ await clearAuthToken();
5975
+ }
5976
+ });
5977
+ }
5978
+ const browserSession = await sessionStorage2.getBrowserSession();
5979
+ const refreshToken = await localStorage2.getRefreshToken();
5980
+ const accessTokenExp = await localStorage2.getAccessToken();
5981
+ isRefreshing = true;
5982
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5983
+ await clearAuthToken();
5984
+ } else {
5985
+ const payload = Object.fromEntries(
5986
+ Object.entries({
5987
+ refresh_token: refreshToken,
5988
+ grant_type: "refresh_token",
5989
+ client_id: config.config.clientId,
5990
+ client_secret: config.config.clientSecret
5991
+ }).filter(([_, v]) => !!v)
5992
+ );
5993
+ const refreshUrl = buildRefreshUrl();
5994
+ return new Promise(function(resolve) {
5995
+ import_axios.default.post(refreshUrl, payload, {
5996
+ headers: {
5997
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
5998
+ Authorization: `Bearer ${accessTokenExp}`
5999
+ }
6000
+ }).then(async (res) => {
6001
+ const data = res.data;
6002
+ await localStorage2.setToken(data.access_token);
6003
+ await localStorage2.setRefreshToken(data.refresh_token);
6004
+ import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
6005
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
6006
+ originalRequest.data = updateTokenParamInOriginalRequest(
6007
+ originalRequest,
6008
+ data.access_token
6009
+ );
6010
+ processQueue(null, data.access_token);
6011
+ resolve(instance.request(originalRequest));
6012
+ }).catch(async (err) => {
6013
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
6014
+ await clearAuthToken();
6015
+ }
6016
+ if (err && err.response) {
6017
+ const { error_code } = err.response?.data || {};
6018
+ const { code } = err;
6019
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
6020
+ await clearAuthToken();
6021
+ }
6022
+ }
6023
+ processQueue(err, null);
6024
+ }).finally(() => {
6025
+ isRefreshing = false;
6026
+ });
6027
+ });
6028
+ }
6029
+ }
6030
+ return Promise.reject(await handleError3(error));
6031
+ }
6032
+ );
5940
6033
  instance.interceptors.response.use(
5941
6034
  (response) => {
5942
6035
  return handleResponse(response);
@@ -5956,7 +6049,6 @@ var axiosClient = {
5956
6049
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5957
6050
  error.response.data.code
5958
6051
  )) {
5959
- console.log("isRefreshing", isRefreshing);
5960
6052
  if (isRefreshing) {
5961
6053
  return new Promise(function(resolve, reject) {
5962
6054
  failedQueue.push({ resolve, reject });
@@ -5978,7 +6070,6 @@ var axiosClient = {
5978
6070
  const accessTokenExp = await localStorage2.getAccessToken();
5979
6071
  isRefreshing = true;
5980
6072
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5981
- console.log("222");
5982
6073
  await clearAuthToken();
5983
6074
  } else {
5984
6075
  const payload = Object.fromEntries(
@@ -5989,7 +6080,6 @@ var axiosClient = {
5989
6080
  client_secret: config.config.clientSecret
5990
6081
  }).filter(([_, value]) => !!value)
5991
6082
  );
5992
- console.log("111");
5993
6083
  return new Promise(function(resolve) {
5994
6084
  import_axios.default.post(
5995
6085
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
@@ -8428,11 +8518,23 @@ var useGetNotifications = ({
8428
8518
  };
8429
8519
  var use_get_notifications_default = useGetNotifications;
8430
8520
 
8431
- // src/hooks/chart/use-read-group.ts
8521
+ // src/hooks/view/use-get-version.ts
8432
8522
  var import_react_query104 = require("@tanstack/react-query");
8523
+ var useGetVersion = () => {
8524
+ const { getVersion } = useViewService();
8525
+ return (0, import_react_query104.useMutation)({
8526
+ mutationFn: () => {
8527
+ return getVersion();
8528
+ }
8529
+ });
8530
+ };
8531
+ var use_get_version_default = useGetVersion;
8532
+
8533
+ // src/hooks/chart/use-read-group.ts
8534
+ var import_react_query105 = require("@tanstack/react-query");
8433
8535
  var useReadGroup = (services, xNode, body, enabled) => {
8434
8536
  const { readGroup } = useDashboardService();
8435
- return (0, import_react_query104.useQuery)({
8537
+ return (0, import_react_query105.useQuery)({
8436
8538
  queryKey: [body],
8437
8539
  queryFn: () => readGroup({
8438
8540
  service: services,
@@ -8446,10 +8548,10 @@ var useReadGroup = (services, xNode, body, enabled) => {
8446
8548
  var use_read_group_default = useReadGroup;
8447
8549
 
8448
8550
  // src/hooks/chart/use-get-data-chart.ts
8449
- var import_react_query105 = require("@tanstack/react-query");
8551
+ var import_react_query106 = require("@tanstack/react-query");
8450
8552
  var useGetDataChart = (services, xNode, body, enabled, path, method, queryKey) => {
8451
8553
  const { getDataChart } = useDashboardService();
8452
- return (0, import_react_query105.useQuery)({
8554
+ return (0, import_react_query106.useQuery)({
8453
8555
  queryKey: [queryKey],
8454
8556
  queryFn: () => getDataChart({
8455
8557
  service: services,
@@ -8575,7 +8677,8 @@ var ServiceProvider = ({
8575
8677
  useGetPinCode: use_get_pin_code_default,
8576
8678
  useReadGroup: use_read_group_default,
8577
8679
  useGetNotifications: use_get_notifications_default,
8578
- useGetDataChart: use_get_data_chart_default
8680
+ useGetDataChart: use_get_data_chart_default,
8681
+ useGetVersion: use_get_version_default
8579
8682
  };
8580
8683
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ServiceContext.Provider, { value: services, children });
8581
8684
  };
package/dist/provider.mjs CHANGED
@@ -5872,12 +5872,10 @@ var axiosClient = {
5872
5872
  timeout: 5e4,
5873
5873
  paramsSerializer: (params) => new URLSearchParams(params).toString()
5874
5874
  });
5875
- instance.interceptors.request.use(async (config2) => {
5876
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
5877
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
5878
- const actionToken = config2.headers["X-Action-Token"];
5879
- console.log("config", config2);
5880
- console.log("useRefreshToken", useRefreshToken);
5875
+ instance.interceptors.request.use(async (configReq) => {
5876
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
5877
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
5878
+ const actionToken = configReq.headers["X-Action-Token"];
5881
5879
  let token = null;
5882
5880
  if (useActionToken && actionToken) {
5883
5881
  token = actionToken;
@@ -5886,14 +5884,109 @@ var axiosClient = {
5886
5884
  token = await getToken?.();
5887
5885
  }
5888
5886
  if (token) {
5889
- config2.headers["Authorization"] = `Bearer ${token}`;
5887
+ configReq.headers["Authorization"] = `Bearer ${token}`;
5890
5888
  }
5891
5889
  if (database) {
5892
- config2.headers["DATABASE"] = database;
5890
+ configReq.headers["DATABASE"] = database;
5893
5891
  }
5894
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
5895
- return config2;
5892
+ return configReq;
5896
5893
  }, Promise.reject);
5894
+ const buildRefreshUrl = () => {
5895
+ if (!config.refreshTokenEndpoint) {
5896
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
5897
+ }
5898
+ const ep = String(config.refreshTokenEndpoint);
5899
+ if (/^https?:\/\//i.test(ep)) return ep;
5900
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
5901
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
5902
+ return `${cleanBase}${cleanEp}`;
5903
+ };
5904
+ instance.interceptors.response.use(
5905
+ (response) => handleResponse(response),
5906
+ async (error) => {
5907
+ const handleError3 = async (err) => {
5908
+ if (!err.response) return err;
5909
+ const { data } = err.response;
5910
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
5911
+ await clearAuthToken();
5912
+ }
5913
+ return data;
5914
+ };
5915
+ const originalRequest = error.config;
5916
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5917
+ error.response.data.code
5918
+ )) {
5919
+ if (isRefreshing) {
5920
+ return new Promise(function(resolve, reject) {
5921
+ failedQueue.push({ resolve, reject });
5922
+ }).then((newToken) => {
5923
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
5924
+ originalRequest.data = updateTokenParamInOriginalRequest(
5925
+ originalRequest,
5926
+ newToken
5927
+ );
5928
+ return instance.request(originalRequest);
5929
+ }).catch(async (err) => {
5930
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
5931
+ await clearAuthToken();
5932
+ }
5933
+ });
5934
+ }
5935
+ const browserSession = await sessionStorage2.getBrowserSession();
5936
+ const refreshToken = await localStorage2.getRefreshToken();
5937
+ const accessTokenExp = await localStorage2.getAccessToken();
5938
+ isRefreshing = true;
5939
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5940
+ await clearAuthToken();
5941
+ } else {
5942
+ const payload = Object.fromEntries(
5943
+ Object.entries({
5944
+ refresh_token: refreshToken,
5945
+ grant_type: "refresh_token",
5946
+ client_id: config.config.clientId,
5947
+ client_secret: config.config.clientSecret
5948
+ }).filter(([_, v]) => !!v)
5949
+ );
5950
+ const refreshUrl = buildRefreshUrl();
5951
+ return new Promise(function(resolve) {
5952
+ axios.post(refreshUrl, payload, {
5953
+ headers: {
5954
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
5955
+ Authorization: `Bearer ${accessTokenExp}`
5956
+ }
5957
+ }).then(async (res) => {
5958
+ const data = res.data;
5959
+ await localStorage2.setToken(data.access_token);
5960
+ await localStorage2.setRefreshToken(data.refresh_token);
5961
+ axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
5962
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
5963
+ originalRequest.data = updateTokenParamInOriginalRequest(
5964
+ originalRequest,
5965
+ data.access_token
5966
+ );
5967
+ processQueue(null, data.access_token);
5968
+ resolve(instance.request(originalRequest));
5969
+ }).catch(async (err) => {
5970
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
5971
+ await clearAuthToken();
5972
+ }
5973
+ if (err && err.response) {
5974
+ const { error_code } = err.response?.data || {};
5975
+ const { code } = err;
5976
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
5977
+ await clearAuthToken();
5978
+ }
5979
+ }
5980
+ processQueue(err, null);
5981
+ }).finally(() => {
5982
+ isRefreshing = false;
5983
+ });
5984
+ });
5985
+ }
5986
+ }
5987
+ return Promise.reject(await handleError3(error));
5988
+ }
5989
+ );
5897
5990
  instance.interceptors.response.use(
5898
5991
  (response) => {
5899
5992
  return handleResponse(response);
@@ -5913,7 +6006,6 @@ var axiosClient = {
5913
6006
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5914
6007
  error.response.data.code
5915
6008
  )) {
5916
- console.log("isRefreshing", isRefreshing);
5917
6009
  if (isRefreshing) {
5918
6010
  return new Promise(function(resolve, reject) {
5919
6011
  failedQueue.push({ resolve, reject });
@@ -5935,7 +6027,6 @@ var axiosClient = {
5935
6027
  const accessTokenExp = await localStorage2.getAccessToken();
5936
6028
  isRefreshing = true;
5937
6029
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5938
- console.log("222");
5939
6030
  await clearAuthToken();
5940
6031
  } else {
5941
6032
  const payload = Object.fromEntries(
@@ -5946,7 +6037,6 @@ var axiosClient = {
5946
6037
  client_secret: config.config.clientSecret
5947
6038
  }).filter(([_, value]) => !!value)
5948
6039
  );
5949
- console.log("111");
5950
6040
  return new Promise(function(resolve) {
5951
6041
  axios.post(
5952
6042
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
@@ -8385,6 +8475,18 @@ var useGetNotifications = ({
8385
8475
  };
8386
8476
  var use_get_notifications_default = useGetNotifications;
8387
8477
 
8478
+ // src/hooks/view/use-get-version.ts
8479
+ import { useMutation as useMutation79 } from "@tanstack/react-query";
8480
+ var useGetVersion = () => {
8481
+ const { getVersion } = useViewService();
8482
+ return useMutation79({
8483
+ mutationFn: () => {
8484
+ return getVersion();
8485
+ }
8486
+ });
8487
+ };
8488
+ var use_get_version_default = useGetVersion;
8489
+
8388
8490
  // src/hooks/chart/use-read-group.ts
8389
8491
  import { useQuery as useQuery24 } from "@tanstack/react-query";
8390
8492
  var useReadGroup = (services, xNode, body, enabled) => {
@@ -8532,7 +8634,8 @@ var ServiceProvider = ({
8532
8634
  useGetPinCode: use_get_pin_code_default,
8533
8635
  useReadGroup: use_read_group_default,
8534
8636
  useGetNotifications: use_get_notifications_default,
8535
- useGetDataChart: use_get_data_chart_default
8637
+ useGetDataChart: use_get_data_chart_default,
8638
+ useGetVersion: use_get_version_default
8536
8639
  };
8537
8640
  return /* @__PURE__ */ jsx6(ServiceContext.Provider, { value: services, children });
8538
8641
  };
package/dist/services.js CHANGED
@@ -3175,12 +3175,15 @@ var import_react_query102 = require("@tanstack/react-query");
3175
3175
  // src/hooks/view/use-get-notifications.ts
3176
3176
  var import_react_query103 = require("@tanstack/react-query");
3177
3177
 
3178
- // src/hooks/chart/use-read-group.ts
3178
+ // src/hooks/view/use-get-version.ts
3179
3179
  var import_react_query104 = require("@tanstack/react-query");
3180
3180
 
3181
- // src/hooks/chart/use-get-data-chart.ts
3181
+ // src/hooks/chart/use-read-group.ts
3182
3182
  var import_react_query105 = require("@tanstack/react-query");
3183
3183
 
3184
+ // src/hooks/chart/use-get-data-chart.ts
3185
+ var import_react_query106 = require("@tanstack/react-query");
3186
+
3184
3187
  // src/provider/service-provider.tsx
3185
3188
  var import_jsx_runtime6 = require("react/jsx-runtime");
3186
3189
  var ServiceContext = (0, import_react4.createContext)(null);
package/dist/services.mjs CHANGED
@@ -3130,6 +3130,9 @@ import { useMutation as useMutation78 } from "@tanstack/react-query";
3130
3130
  // src/hooks/view/use-get-notifications.ts
3131
3131
  import { useQuery as useQuery23 } from "@tanstack/react-query";
3132
3132
 
3133
+ // src/hooks/view/use-get-version.ts
3134
+ import { useMutation as useMutation79 } from "@tanstack/react-query";
3135
+
3133
3136
  // src/hooks/chart/use-read-group.ts
3134
3137
  import { useQuery as useQuery24 } from "@tanstack/react-query";
3135
3138