#8002 addSupportService #894

Merged
jorgep merged 17 commits from xxxx-addSupportService into dev 2024-12-11 09:49:41 +00:00
6 changed files with 32 additions and 67 deletions
Showing only changes of commit 43af96eb05 - Show all commits

View File

@ -4,8 +4,9 @@ import { Router } from 'src/router';
import useNotify from 'src/composables/useNotify.js'; import useNotify from 'src/composables/useNotify.js';
import { useStateQueryStore } from 'src/stores/useStateQueryStore'; import { useStateQueryStore } from 'src/stores/useStateQueryStore';
let session, notify, stateQuery; const session = useSession();
const { notify } = useNotify();
const stateQuery = useStateQueryStore();
const baseUrl = '/api/'; const baseUrl = '/api/';
axios.defaults.baseURL = baseUrl; axios.defaults.baseURL = baseUrl;
@ -50,15 +51,9 @@ const onResponseError = (error) => {
return Promise.reject(error); return Promise.reject(error);
}; };
export function setupAxios() { axios.interceptors.request.use(onRequest, onRequestError);
session = useSession(); axios.interceptors.response.use(onResponse, onResponseError);
notify = useNotify().notify; axiosNoError.interceptors.request.use(onRequest);
stateQuery = useStateQueryStore(); axiosNoError.interceptors.response.use(onResponse);
axios.interceptors.request.use(onRequest, onRequestError);
axios.interceptors.response.use(onResponse, onResponseError);
axiosNoError.interceptors.request.use(onRequest);
axiosNoError.interceptors.response.use(onResponse);
}
export { onRequest, onResponseError, axiosNoError }; export { onRequest, onResponseError, axiosNoError };

View File

@ -4,7 +4,6 @@ import { boot } from 'quasar/wrappers';
import qFormMixin from './qformMixin'; import qFormMixin from './qformMixin';
import keyShortcut from './keyShortcut'; import keyShortcut from './keyShortcut';
import { i18n } from './i18n'; import { i18n } from './i18n';
import { setupAxios } from 'src/boot/axios';
import useNotify from 'src/composables/useNotify.js'; import useNotify from 'src/composables/useNotify.js';
import VnInput from 'src/components/common/VnInput.vue'; import VnInput from 'src/components/common/VnInput.vue';
import { useVnConfirm } from 'src/composables/useVnConfirm'; import { useVnConfirm } from 'src/composables/useVnConfirm';
@ -112,5 +111,4 @@ export default boot(({ app }) => {
}; };
notify(message ?? 'globals.error', 'negative', 'error', opts); notify(message ?? 'globals.error', 'negative', 'error', opts);
jorgep marked this conversation as resolved Outdated
Outdated
Review

Utilizaría otro fichero distinto en boot para poner este codigo, ej. cau.js

Utilizaría otro fichero distinto en boot para poner este codigo, ej. `cau.js`
}; };
setupAxios();
}); });

View File

@ -17,19 +17,12 @@ const config = reactive({
const type = Object.keys(config).find((key) => key in useAttrs()) || 'sip'; const type = Object.keys(config).find((key) => key in useAttrs()) || 'sip';
onBeforeMount(async () => { onBeforeMount(async () => {
let url;
let { channel } = config[type]; let { channel } = config[type];
if (type === 'say-simple') { if (type === 'say-simple') {
url = (await axios.get('SaySimpleConfigs/findOne')).data.url; const { url, defaultChannel } = (await axios.get('SaySimpleConfigs/findOne'))
if (!channel) .data;
channel = ( if (!channel) channel = defaultChannel;
await axios.get('SaySimpleCountries/findOne', {
params: {
filter: { fields: ['channel'], where: { countryFk: 0 } },
},
})
).data?.channel;
config[ config[
type type

View File

@ -8,13 +8,9 @@ import useNotify from './useNotify';
import { useTokenConfig } from './useTokenConfig'; import { useTokenConfig } from './useTokenConfig';
const TOKEN_MULTIMEDIA = 'tokenMultimedia'; const TOKEN_MULTIMEDIA = 'tokenMultimedia';
const TOKEN = 'token'; const TOKEN = 'token';
let router;
export default {
setup() {
router = useRouter();
},
};
export function useSession() { export function useSession() {
const router = useRouter();
const { notify } = useNotify(); const { notify } = useNotify();
let isCheckingToken = false; let isCheckingToken = false;
let intervalId = null; let intervalId = null;

View File

@ -14,8 +14,8 @@ import { useUserConfig } from 'src/composables/useUserConfig';
import { useTokenConfig } from 'src/composables/useTokenConfig'; import { useTokenConfig } from 'src/composables/useTokenConfig';
import { useAcl } from 'src/composables/useAcl'; import { useAcl } from 'src/composables/useAcl';
let state, session; const state = useState();
const session = useSession();
const { t, te } = i18n.global; const { t, te } = i18n.global;
const createHistory = process.env.SERVER const createHistory = process.env.SERVER
@ -43,10 +43,8 @@ const Router = createRouter({
* with the Router instance. * with the Router instance.
*/ */
export { Router }; export { Router };
export default route((/* { store, ssrContext } */) => { export default route(function (/* { store, ssrContext } */) {
Router.beforeEach(async (to, from, next) => { Router.beforeEach(async (to, from, next) => {
state = useState();
session = useSession();
const { isLoggedIn } = session; const { isLoggedIn } = session;
const outLayout = Router.options.routes[0].children.map((r) => r.name); const outLayout = Router.options.routes[0].children.map((r) => r.name);
if (!isLoggedIn() && !outLayout.includes(to.name)) { if (!isLoggedIn() && !outLayout.includes(to.name)) {

View File

@ -1,38 +1,23 @@
import { describe, it, expect, beforeEach, vi } from 'vitest'; import { Notify } from 'quasar';
import { setupAxios, onRequest, onResponseError } from 'src/boot/axios'; import { onRequest, onResponseError } from 'src/boot/axios';
import { useSession } from 'src/composables/useSession'; import { describe, expect, it, vi } from 'vitest';
import useNotify from 'src/composables/useNotify';
import { useStateQueryStore } from 'src/stores/useStateQueryStore';
vi.mock('src/composables/useSession'); vi.mock('src/composables/useSession', () => ({
vi.mock('src/composables/useNotify'); useSession: () => ({
vi.mock('src/stores/useStateQueryStore'); getToken: () => 'DEFAULT_TOKEN',
isLoggedIn: () => vi.fn(),
destroy: () => vi.fn(),
}),
}));
vi.mock('src/stores/useStateQueryStore', () => ({
useStateQueryStore: () => ({
add: () => vi.fn(),
remove: () => vi.fn(),
}),
}));
describe('Axios boot', () => { describe('Axios boot', () => {
let sessionMock, notifyMock, stateQueryMock;
beforeEach(() => {
sessionMock = {
getToken: vi.fn().mockReturnValue('DEFAULT_TOKEN'),
isLoggedIn: vi.fn().mockReturnValue(true),
destroy: vi.fn(),
};
notifyMock = {
notify: vi.fn(),
};
stateQueryMock = {
add: vi.fn(),
remove: vi.fn(),
};
useSession.mockReturnValue(sessionMock);
useNotify.mockReturnValue(notifyMock);
useStateQueryStore.mockReturnValue(stateQueryMock);
setupAxios();
});
describe('onRequest()', async () => { describe('onRequest()', async () => {
it('should set the "Authorization" property on the headers', async () => { it('should set the "Authorization" property on the headers', async () => {
const config = { headers: {} }; const config = { headers: {} };