Skip to content

Commit f1b3e71

Browse files
author
Marcin Kwiatkowski
committed
refactor: refactored useUrlResolver
1 parent 64aa552 commit f1b3e71

File tree

4 files changed

+47
-22
lines changed

4 files changed

+47
-22
lines changed

packages/composables/src/composables/useUrlResolver/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/**
2+
* @deprecated since version 1.0.0
3+
*/
14
import { Context, Logger } from '@vue-storefront/core';
25
import { Route } from '@vue-storefront/magento-api';
36
import { useUrlResolverFactory, UseUrlResolverFactoryParams } from '../../factories/useUrlResolverFactory';

packages/composables/src/factories/useUrlResolverFactory.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/**
2+
* @deprecated since version 1.0.0
3+
*/
14
import {
25
configureFactoryParams,
36
Context,
Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,46 @@
1-
import {
2-
useUrlResolver as urlResolver,
3-
} from '@vue-storefront/magento';
4-
import { useRoute, useContext } from '@nuxtjs/composition-api';
1+
import { useRoute, useContext, ref } from '@nuxtjs/composition-api';
2+
import { Logger } from '@vue-storefront/core';
3+
import { Maybe } from '~/composables/types';
4+
import { UrlResolverQuery } from '~/modules/GraphQL/types';
55

66
export const useUrlResolver = () => {
77
const route = useRoute();
8-
const { error } = useContext();
8+
const { error: nuxtError, app } = useContext();
9+
const context = app.$vsf;
910
const { path } = route.value;
11+
const loading = ref(false);
12+
const error = ref({
13+
search: null,
14+
});
1015

11-
const {
12-
search,
13-
result,
14-
loading,
15-
} = urlResolver(`router:${path}`);
16+
const search = async (): Promise<Maybe<UrlResolverQuery>> => {
17+
loading.value = true;
18+
let results = null;
19+
20+
try {
21+
const clearUrl = path.replace(/[a-z]+\/[cp|]\//gi, '');
22+
Logger.debug('[Magento] Find information based on URL', { clearUrl });
23+
const { data } = await context.$magento.api.urlResolver(clearUrl);
24+
results = data.urlResolver;
25+
26+
if (!results) nuxtError({ statusCode: 404 });
27+
28+
Logger.debug('[Result]:', { results });
29+
} catch (err) {
30+
error.value.search = err;
31+
32+
Logger.error('useUrlResolver/search', err);
33+
} finally {
34+
loading.value = false;
35+
}
36+
37+
return results;
38+
};
1639

1740
return {
1841
path,
19-
search: async () => {
20-
await search({ url: path });
21-
if (!result?.value) error({ statusCode: 404 });
22-
},
23-
result,
42+
error,
43+
search,
2444
loading,
2545
};
2646
};

packages/theme/modules/catalog/pages/default.vue

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ export default defineComponent({
437437
const facets = ref([]);
438438
const pagination = ref({});
439439
440-
const { path, result: routeData, search: resolveUrl } = useUrlResolver();
440+
const { path, search: resolveUrl } = useUrlResolver();
441441
const {
442442
$magento: { config: magentoConfig },
443443
} = useVSFContext();
@@ -520,23 +520,23 @@ export default defineComponent({
520520
: addItemToWishlistBase({ product }));
521521
};
522522
523-
const searchCategoryProduct = async () => {
523+
const searchCategoryProduct = async (categoryId) => {
524524
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
525525
await search({
526526
...uiHelpers.getFacetsFromURL(),
527-
categoryId: routeData.value?.entity_uid,
527+
categoryId,
528528
});
529529
};
530530
531531
useFetch(async () => {
532-
await resolveUrl();
533-
const content = await getContentData(routeData.value?.id);
532+
const routeData = await resolveUrl();
533+
const content = await getContentData(routeData?.id);
534534
535535
cmsContent.value = content?.cmsBlock?.content ?? '';
536536
isShowCms.value = content.isShowCms;
537537
isShowProducts.value = content.isShowProducts;
538538
539-
await searchCategoryProduct();
539+
await searchCategoryProduct(routeData?.entity_uid);
540540
selectedFilters.value = getSelectedFilterValues();
541541
products.value = facetGetters.getProducts(result.value) ?? [];
542542
sortBy.value = facetGetters.getSortOptions(result.value);
@@ -560,7 +560,6 @@ export default defineComponent({
560560
const { getMagentoImage, imageSizes } = useImage();
561561
562562
return {
563-
routeData,
564563
...productGetters,
565564
...uiHelpers,
566565
...uiState,

0 commit comments

Comments
 (0)