perf_redirectTransition #1178

Merged
alexm merged 7 commits from perf_redirectTransition into test 2025-01-09 08:16:54 +00:00
1 changed files with 9 additions and 7 deletions

View File

@ -124,12 +124,14 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
const { limit } = filter; const { limit } = filter;
store.hasMoreData = limit && response.data.length >= limit; store.hasMoreData = limit && response.data.length >= limit;
processData(response.data, { map: !!store.mapKey, append }); if (!append && !isDialogOpened() && updateRouter) {
Review

Basicamente es hacer primero la parte del router, antes de procesar los datos. Y si se va a redirigir evitamos la parte de setear datos

Basicamente es hacer primero la parte del router, antes de procesar los datos. Y si se va a redirigir evitamos la parte de setear datos
Review

Estamos en el limite de condiciones de un if

Estamos en el limite de condiciones de un if
if (!append && !isDialogOpened()) updateRouter && updateStateParams(); if (updateStateParams(response.data)?.redirect) return;
}
store.isLoading = false; store.isLoading = false;
canceller = null; canceller = null;
processData(response.data, { map: !!store.mapKey, append });
return response; return response;
} }
@ -259,7 +261,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
if (Object.values(store.userParams).length) await fetch({}); if (Object.values(store.userParams).length) await fetch({});
} }
function updateStateParams() { function updateStateParams(data) {
if (!route?.path) return; if (!route?.path) return;
const newUrl = { path: route.path, query: { ...(route.query ?? {}) } }; const newUrl = { path: route.path, query: { ...(route.query ?? {}) } };
if (store?.searchUrl) if (store?.searchUrl)
@ -276,15 +278,15 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
const { path } = matches.at(-1); const { path } = matches.at(-1);
const to = const to =
store?.data?.length === 1 data?.length === 1
? path.replace(/\/(list|:id)|-list/, `/${store.data[0].id}`) ? path.replace(/\/(list|:id)|-list/, `/${data[0].id}`)
: path.replace(/:id.*/, ''); : path.replace(/:id.*/, '');
if (route.path != to) { if (route.path != to) {
const pushUrl = { path: to }; const pushUrl = { path: to };
if (to.endsWith('/list') || to.endsWith('/')) if (to.endsWith('/list') || to.endsWith('/'))
pushUrl.query = newUrl.query; pushUrl.query = newUrl.query;
return router.push(pushUrl); return router.push(pushUrl) && { redirect: true };
} }
} }