diff --git a/frontend/components/product/ProductDetails.vue b/frontend/components/product/ProductDetails.vue
index e0388e5..151eb3a 100644
--- a/frontend/components/product/ProductDetails.vue
+++ b/frontend/components/product/ProductDetails.vue
@@ -2,7 +2,7 @@
// provide / inject
-import type { ProductVariantProvideType } from "~/pages/product/types";
+import type { ProductVariantProvideType } from "~/pages/product";
const { selectedVariant } = inject("productVariant") as ProductVariantProvideType;
diff --git a/frontend/components/product/ProductHero.vue b/frontend/components/product/ProductHero.vue
index b853fff..e6e28f7 100644
--- a/frontend/components/product/ProductHero.vue
+++ b/frontend/components/product/ProductHero.vue
@@ -3,7 +3,6 @@
// import
import useGetProduct from "~/composables/api/product/useGetProduct";
-import { sanitize } from "isomorphic-dompurify";
import type { ProductVariantProvideType } from "~/pages/product/[id].vue";
import useAddCartItem from "~/composables/api/orders/useAddCartItem";
import { useAuth } from "~/composables/api/auth/useAuth";
@@ -37,12 +36,6 @@ const addItemToCart = async () => {
await refetchProduct();
};
-// computed
-
-const sanitizedProductDescription = computed(() => {
- return sanitize(product.value!.description);
-});
-
// watch
watch(() => selectedVariantId.value, (newId) => {
@@ -147,7 +140,7 @@ watch(() => selectedVariant.value!, (newValue) => {
diff --git a/frontend/composables/api/blog/useGetArticle.ts b/frontend/composables/api/blog/useGetArticle.ts
index a797974..7984ac0 100644
--- a/frontend/composables/api/blog/useGetArticle.ts
+++ b/frontend/composables/api/blog/useGetArticle.ts
@@ -2,6 +2,7 @@
import { useQuery } from "@tanstack/vue-query";
import { API_ENDPOINTS, QUERY_KEYS } from "~/constants";
+import { sanitize } from "isomorphic-dompurify";
// types
@@ -22,7 +23,15 @@ const useGetArticle = (id: number | string | undefined) => {
return useQuery({
queryKey: [QUERY_KEYS.article, id],
- queryFn: () => handleGetArticle()
+ queryFn: () => handleGetArticle(),
+ select: (article) => {
+ const copyOfArticle = { ...article };
+
+ copyOfArticle.summery = sanitize(copyOfArticle.summery);
+ copyOfArticle.content = sanitize(copyOfArticle.content);
+
+ return copyOfArticle;
+ }
});
};
diff --git a/frontend/composables/api/product/useGetProduct.ts b/frontend/composables/api/product/useGetProduct.ts
index 92914e6..df3f470 100644
--- a/frontend/composables/api/product/useGetProduct.ts
+++ b/frontend/composables/api/product/useGetProduct.ts
@@ -2,6 +2,7 @@
import { useQuery } from "@tanstack/vue-query";
import { API_ENDPOINTS, QUERY_KEYS } from "~/constants";
+import { sanitize } from "isomorphic-dompurify";
// types
@@ -26,6 +27,8 @@ const useGetProduct = (id: string | number | undefined) => {
select: (product) => {
const copyOfProduct = { ...product };
+ copyOfProduct.description = sanitize(copyOfProduct.description);
+
copyOfProduct.variants = copyOfProduct.variants.sort((a, b) => b.in_stock - a.in_stock);
return copyOfProduct;
diff --git a/frontend/pages/article/[id].vue b/frontend/pages/article/[id].vue
index 8a012ff..b3e18e6 100644
--- a/frontend/pages/article/[id].vue
+++ b/frontend/pages/article/[id].vue
@@ -2,7 +2,6 @@
// import
-import { sanitize } from "isomorphic-dompurify";
import useGetArticle from "~/composables/api/blog/useGetArticle";
// state
@@ -24,16 +23,6 @@ if (response.isError) {
});
}
-// computed
-
-const sanitizedArticleContent = computed(() => {
- return sanitize(article.value!.content);
-});
-
-const sanitizedArticleSummery = computed(() => {
- return sanitize(article.value!.summery);
-});
-
@@ -48,7 +37,7 @@ const sanitizedArticleSummery = computed(() => {
@@ -103,7 +92,7 @@ const sanitizedArticleSummery = computed(() => {