flowrix 1.0.1-beta.8 → 1.0.1-beta.80
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/module.d.mts +1 -6
- package/dist/module.json +1 -1
- package/dist/module.mjs +94 -29
- package/dist/runtime/composables/Blog/useBlogIndex.d.ts +2 -5
- package/dist/runtime/composables/Brand/brand.js +2 -0
- package/dist/runtime/composables/Cart/useCart.d.ts +40 -0
- package/dist/runtime/composables/Cart/useCart.js +10 -0
- package/dist/runtime/composables/Cart/useCartDetail.d.ts +15 -5
- package/dist/runtime/composables/Cart/useCartDetail.js +3 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.d.ts +40 -1
- package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.js +2 -2
- package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.d.ts +40 -1
- package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.js +2 -2
- package/dist/runtime/composables/Checkout/PaymentMethods/usePaymentMethods.js +3 -14
- package/dist/runtime/composables/Checkout/PaymentMethods/useStripe.d.ts +2 -2
- package/dist/runtime/composables/Checkout/useCheckout.d.ts +84 -73
- package/dist/runtime/composables/Checkout/useCheckout.js +36 -28
- package/dist/runtime/composables/Checkout/{useBillingAddress.d.ts → useCheckoutBillingAddress.d.ts} +6 -6
- package/dist/runtime/composables/Checkout/{useBillingAddress.js → useCheckoutBillingAddress.js} +6 -1
- package/dist/runtime/composables/Checkout/{useShippingAddress.d.ts → useCheckoutShippingAddress.d.ts} +1 -1
- package/dist/runtime/composables/Checkout/{useShippingAddress.js → useCheckoutShippingAddress.js} +7 -2
- package/dist/runtime/composables/Checkout/useCreateAccount.d.ts +7 -7
- package/dist/runtime/composables/Checkout/useCreateAccount.js +3 -1
- package/dist/runtime/composables/Checkout/useDeliveryMethod.d.ts +2 -2
- package/dist/runtime/composables/Checkout/useDeliveryMethod.js +8 -7
- package/dist/runtime/composables/Customer/useBillingAddress.d.ts +112 -0
- package/dist/runtime/composables/Customer/useBillingAddress.js +93 -0
- package/dist/runtime/composables/Customer/useLogin.d.ts +9 -0
- package/dist/runtime/composables/Customer/useLogin.js +34 -0
- package/dist/runtime/composables/Customer/useOrders.d.ts +29 -0
- package/dist/runtime/composables/Customer/useOrders.js +56 -0
- package/dist/runtime/composables/Customer/usePasswordReset.d.ts +26 -0
- package/dist/runtime/composables/Customer/usePasswordReset.js +258 -0
- package/dist/runtime/composables/Customer/useProfile.d.ts +75 -0
- package/dist/runtime/composables/Customer/useProfile.js +106 -0
- package/dist/runtime/composables/Customer/useQuotations.d.ts +32 -0
- package/dist/runtime/composables/Customer/useQuotations.js +40 -0
- package/dist/runtime/composables/Customer/useRegister.d.ts +118 -11
- package/dist/runtime/composables/Customer/useRegister.js +236 -34
- package/dist/runtime/composables/Customer/useShippingAddress.d.ts +121 -0
- package/dist/runtime/composables/Customer/useShippingAddress.js +145 -0
- package/dist/runtime/composables/Customer/useUpdatePassword.d.ts +21 -0
- package/dist/runtime/composables/Customer/useUpdatePassword.js +94 -0
- package/dist/runtime/composables/Customer/useUserCards.d.ts +22 -0
- package/dist/runtime/composables/Customer/useUserCards.js +65 -0
- package/dist/runtime/composables/{useWishlists.d.ts → Customer/useWishlists.d.ts} +5 -18
- package/dist/runtime/composables/{useWishlists.js → Customer/useWishlists.js} +19 -28
- package/dist/runtime/composables/Extras/useCountry.d.ts +11 -6
- package/dist/runtime/composables/Extras/useCountry.js +5 -4
- package/dist/runtime/composables/Header/useHeader.d.ts +6 -20
- package/dist/runtime/composables/Header/useHeader.js +3 -2
- package/dist/runtime/composables/Product/CustomProduct/useSteps.d.ts +1 -1
- package/dist/runtime/composables/Product/useProductSlug.d.ts +8 -1
- package/dist/runtime/composables/Product/useQuickView.d.ts +8 -0
- package/dist/runtime/composables/Product/useQuickView.js +27 -0
- package/dist/runtime/composables/Product/useService.d.ts +1 -1
- package/dist/runtime/composables/Product/useService.js +0 -3
- package/dist/runtime/composables/SideBar/Filters/useFilters.d.ts +2 -2
- package/dist/runtime/composables/SideBar/Filters/useSorting.d.ts +2 -2
- package/dist/runtime/composables/index.d.ts +15 -12
- package/dist/runtime/composables/index.js +15 -12
- package/dist/runtime/composables/useAddresses.js +6 -6
- package/dist/runtime/composables/useCards.js +2 -2
- package/dist/runtime/composables/useLocation.d.ts +2 -12
- package/dist/runtime/composables/useQuotationCheckout.d.ts +78 -0
- package/dist/runtime/composables/useQuotationCheckout.js +138 -0
- package/dist/runtime/middleware/flowrix.d.ts +5 -4
- package/dist/runtime/middleware/flowrix.js +41 -21
- package/dist/runtime/plugin.d.ts +1 -1
- package/dist/runtime/server/api/albums.js +1 -1
- package/dist/runtime/server/api/auth/forgot.js +1 -1
- package/dist/runtime/server/api/auth/login.js +5 -6
- package/dist/runtime/server/api/auth/logout.js +1 -1
- package/dist/runtime/server/api/auth/register.js +1 -1
- package/dist/runtime/server/api/auth/session.get.js +1 -1
- package/dist/runtime/server/api/auth/user/reset-password.js +1 -1
- package/dist/runtime/server/api/auth/user/session.js +1 -1
- package/dist/runtime/server/api/auth/user/verify-token.js +1 -1
- package/dist/runtime/server/api/banners.js +2 -2
- package/dist/runtime/server/api/brand/{[slug].js → [...slug].js} +17 -17
- package/dist/runtime/server/api/brand/index.d.ts +2 -0
- package/dist/runtime/server/api/brand/index.js +23 -0
- package/dist/runtime/server/api/cache/[...slug].delete.d.ts +2 -0
- package/dist/runtime/server/api/cache/[...slug].delete.js +40 -0
- package/dist/runtime/server/api/cache/clean.get.d.ts +5 -0
- package/dist/runtime/server/api/cache/clean.get.js +16 -0
- package/dist/runtime/server/api/cart/[slug]/add.js +1 -1
- package/dist/runtime/server/api/cart/[slug]/update.js +1 -1
- package/dist/runtime/server/api/cart/related.d.ts +2 -0
- package/dist/runtime/server/api/cart/related.js +21 -0
- package/dist/runtime/server/api/cart/remove.js +1 -1
- package/dist/runtime/server/api/cart/service/[slug]/add.js +1 -1
- package/dist/runtime/server/api/catalog/categories.js +5 -4
- package/dist/runtime/server/api/catalog/categoriesall.d.ts +3 -0
- package/dist/runtime/server/api/catalog/categoriesall.js +44 -0
- package/dist/runtime/server/api/catalog/featured.js +5 -4
- package/dist/runtime/server/api/catalog/samples.js +5 -4
- package/dist/runtime/server/api/catalog/search.js +5 -4
- package/dist/runtime/server/api/category/[...slug].js +18 -14
- package/dist/runtime/server/api/checkout/applyCoupon.js +1 -1
- package/dist/runtime/server/api/checkout/configs.d.ts +1 -1
- package/dist/runtime/server/api/checkout/configs.js +10 -11
- package/dist/runtime/server/api/checkout/countries.js +1 -1
- package/dist/runtime/server/api/checkout/paymentmethod.js +7 -7
- package/dist/runtime/server/api/checkout/quotation/[slug].d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/[slug].js +21 -0
- package/dist/runtime/server/api/checkout/quotation/guest/[slug].d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/guest/[slug].js +37 -0
- package/dist/runtime/server/api/checkout/quotation/guest/customer.d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/guest/customer.js +21 -0
- package/dist/runtime/server/api/checkout/quotation/submit/[slug].d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/submit/[slug].js +23 -0
- package/dist/runtime/server/api/{blog/[slug].js → cmspost/[...slug].js} +7 -9
- package/dist/runtime/server/api/{blog/blog.js → cmspost/all.js} +2 -2
- package/dist/runtime/server/api/company/profile.d.ts +1 -1
- package/dist/runtime/server/api/company/profile.js +9 -9
- package/dist/runtime/server/api/contact-center/webforms/[id]/details.js +1 -1
- package/dist/runtime/server/api/contact-center/webforms/create.js +1 -1
- package/dist/runtime/server/api/countries.d.ts +2 -0
- package/dist/runtime/server/api/countries.js +35 -0
- package/dist/runtime/server/api/customer/address/add.js +1 -1
- package/dist/runtime/server/api/customer/address/delete.js +2 -2
- package/dist/runtime/server/api/customer/address/setshipping.js +1 -1
- package/dist/runtime/server/api/customer/address/update.js +1 -1
- package/dist/runtime/server/api/customer/cards/delete.js +2 -2
- package/dist/runtime/server/api/customer/cards/get.js +2 -2
- package/dist/runtime/server/api/customer/change-password.js +2 -2
- package/dist/runtime/server/api/customer/checkout.js +1 -1
- package/dist/runtime/server/api/customer/orders.js +2 -2
- package/dist/runtime/server/api/customer/profile/update.js +1 -1
- package/dist/runtime/server/api/customer/quotations.js +2 -2
- package/dist/runtime/server/api/customer/search.js +1 -1
- package/dist/runtime/server/api/customer/tax-invoice.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/add.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/createWishList.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/deleteFromWishList.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/deleteWishList.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/get.js +2 -2
- package/dist/runtime/server/api/customer/wishlist/getWishListItems.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/updateWishList.js +2 -2
- package/dist/runtime/server/api/featured.d.ts +2 -0
- package/dist/runtime/server/api/featured.js +16 -0
- package/dist/runtime/server/api/location.js +1 -1
- package/dist/runtime/server/api/nav/[id]/links.js +1 -1
- package/dist/runtime/server/api/page/{[slug].js → [...slug].js} +6 -8
- package/dist/runtime/server/api/product/[...slug].js +8 -5
- package/dist/runtime/server/api/quickview/[slug].d.ts +2 -0
- package/dist/runtime/server/api/quickview/[slug].js +16 -0
- package/dist/runtime/server/api/samples.d.ts +3 -0
- package/dist/runtime/server/api/samples.js +20 -0
- package/dist/runtime/server/api/search.d.ts +3 -0
- package/dist/runtime/server/api/search.js +15 -0
- package/dist/runtime/server/api/service/[slug].js +5 -4
- package/dist/runtime/server/api/service/availability.js +1 -1
- package/dist/runtime/server/api/service/getall.d.ts +3 -0
- package/dist/runtime/server/api/service/getall.js +52 -0
- package/dist/runtime/server/api/shop.d.ts +3 -0
- package/dist/runtime/server/api/shop.js +15 -0
- package/dist/runtime/server/api/subscribe.js +1 -1
- package/dist/runtime/server/api/v2/[...slug].js +3 -1
- package/dist/runtime/server/api/webform.d.ts +3 -0
- package/dist/runtime/server/api/webform.js +16 -0
- package/dist/runtime/stores/Cart.d.ts +12 -0
- package/dist/runtime/stores/Cart.js +50 -16
- package/dist/runtime/stores/Checkout.d.ts +9 -15
- package/dist/runtime/stores/Checkout.js +19 -5
- package/dist/runtime/stores/Search.d.ts +1 -1
- package/dist/runtime/stores/Services.js +2 -2
- package/dist/runtime/stores/auth.d.ts +8 -11
- package/dist/runtime/stores/auth.js +390 -8
- package/dist/runtime/stores/countries.d.ts +1 -3
- package/dist/runtime/stores/countries.js +4 -8
- package/dist/runtime/stores/product/slug.d.ts +1 -17
- package/dist/runtime/stores/wishlists.d.ts +105 -5
- package/dist/runtime/stores/wishlists.js +200 -9
- package/dist/runtime/utils/api.js +9 -13
- package/dist/runtime/utils/htmlCache.d.ts +5 -0
- package/dist/runtime/utils/htmlCache.js +60 -0
- package/dist/types.d.mts +6 -2
- package/package.json +32 -20
- package/dist/runtime/composables/useAuth.d.ts +0 -45
- package/dist/runtime/composables/useAuth.js +0 -180
- package/dist/runtime/composables/useCountries.d.ts +0 -12
- package/dist/runtime/composables/useCountries.js +0 -50
- package/dist/runtime/composables/useOrders.d.ts +0 -21
- package/dist/runtime/composables/useOrders.js +0 -82
- package/dist/runtime/composables/useQuotations.d.ts +0 -14
- package/dist/runtime/composables/useQuotations.js +0 -50
- /package/dist/runtime/server/api/brand/{[slug].d.ts → [...slug].d.ts} +0 -0
- /package/dist/runtime/server/api/{blog/[slug].d.ts → cmspost/[...slug].d.ts} +0 -0
- /package/dist/runtime/server/api/{blog/blog.d.ts → cmspost/all.d.ts} +0 -0
- /package/dist/runtime/server/api/page/{[slug].d.ts → [...slug].d.ts} +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { ref, computed } from "vue";
|
|
2
|
+
import { useAuthStore } from "../../stores/auth.js";
|
|
3
|
+
export function useShippingAddress() {
|
|
4
|
+
const authStore = useAuthStore();
|
|
5
|
+
const user = computed(() => authStore.user);
|
|
6
|
+
const shippingAddresses = computed(() => {
|
|
7
|
+
return user.value?.addresses?.filter((a) => a.billing == 0) ?? [];
|
|
8
|
+
});
|
|
9
|
+
const showModal = ref(false);
|
|
10
|
+
const isEditMode = ref(false);
|
|
11
|
+
const showDeleteModal = ref(false);
|
|
12
|
+
const currentAddress = ref(null);
|
|
13
|
+
const submitAddressReturn = ref(null);
|
|
14
|
+
const loading = ref(false);
|
|
15
|
+
const clearMessages = () => {
|
|
16
|
+
submitAddressReturn.value = null;
|
|
17
|
+
};
|
|
18
|
+
const openAddModal = () => {
|
|
19
|
+
clearMessages();
|
|
20
|
+
isEditMode.value = false;
|
|
21
|
+
currentAddress.value = {
|
|
22
|
+
id: null,
|
|
23
|
+
firstname: "",
|
|
24
|
+
lastname: "",
|
|
25
|
+
address: "",
|
|
26
|
+
suburb: "",
|
|
27
|
+
state: "",
|
|
28
|
+
state_id: null,
|
|
29
|
+
country: "Australia",
|
|
30
|
+
country_id: "",
|
|
31
|
+
postcode: "",
|
|
32
|
+
mobile: "",
|
|
33
|
+
shipping: 1,
|
|
34
|
+
billing: 0
|
|
35
|
+
};
|
|
36
|
+
showModal.value = true;
|
|
37
|
+
};
|
|
38
|
+
const openEditModal = (address) => {
|
|
39
|
+
clearMessages();
|
|
40
|
+
isEditMode.value = true;
|
|
41
|
+
currentAddress.value = {
|
|
42
|
+
...address,
|
|
43
|
+
saddress: address.address
|
|
44
|
+
};
|
|
45
|
+
showModal.value = true;
|
|
46
|
+
};
|
|
47
|
+
const closeModal = () => {
|
|
48
|
+
clearMessages();
|
|
49
|
+
showModal.value = false;
|
|
50
|
+
currentAddress.value = null;
|
|
51
|
+
};
|
|
52
|
+
const openDeleteModal = (address) => {
|
|
53
|
+
clearMessages();
|
|
54
|
+
currentAddress.value = address;
|
|
55
|
+
showDeleteModal.value = true;
|
|
56
|
+
};
|
|
57
|
+
const closeDeleteModal = () => {
|
|
58
|
+
clearMessages();
|
|
59
|
+
showDeleteModal.value = false;
|
|
60
|
+
currentAddress.value = null;
|
|
61
|
+
};
|
|
62
|
+
const submitAddress = async () => {
|
|
63
|
+
if (!currentAddress.value) return;
|
|
64
|
+
loading.value = true;
|
|
65
|
+
clearMessages();
|
|
66
|
+
try {
|
|
67
|
+
const method = currentAddress.value.id ? "update" : "add";
|
|
68
|
+
submitAddressReturn.value = await authStore.setAddress(currentAddress.value, method);
|
|
69
|
+
if (submitAddressReturn.value.status === "Success") {
|
|
70
|
+
await authStore.fetchProfile();
|
|
71
|
+
if (method === "update") {
|
|
72
|
+
submitAddressReturn.value.message = "Address Updated Successfully";
|
|
73
|
+
} else {
|
|
74
|
+
submitAddressReturn.value.message = "Address Created Successfully";
|
|
75
|
+
}
|
|
76
|
+
showModal.value = false;
|
|
77
|
+
}
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.error("Address submission error:", error);
|
|
80
|
+
} finally {
|
|
81
|
+
loading.value = false;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const setShipping = async (address) => {
|
|
85
|
+
loading.value = true;
|
|
86
|
+
clearMessages();
|
|
87
|
+
try {
|
|
88
|
+
submitAddressReturn.value = await authStore.setAddress(address, "setshipping");
|
|
89
|
+
if (submitAddressReturn.value.status === "Success") {
|
|
90
|
+
await authStore.fetchProfile();
|
|
91
|
+
submitAddressReturn.value.message = "Shipping Address Updated Successfully";
|
|
92
|
+
}
|
|
93
|
+
} catch (error) {
|
|
94
|
+
console.error("Set shipping error:", error);
|
|
95
|
+
} finally {
|
|
96
|
+
loading.value = false;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const deleteAddress = async () => {
|
|
100
|
+
if (!currentAddress.value) return;
|
|
101
|
+
loading.value = true;
|
|
102
|
+
clearMessages();
|
|
103
|
+
try {
|
|
104
|
+
submitAddressReturn.value = await authStore.setAddress(currentAddress.value, "delete");
|
|
105
|
+
if (submitAddressReturn.value.status === "Success") {
|
|
106
|
+
await authStore.fetchProfile();
|
|
107
|
+
showDeleteModal.value = false;
|
|
108
|
+
}
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error("Delete address error:", error);
|
|
111
|
+
} finally {
|
|
112
|
+
loading.value = false;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const autoClearMessages = () => {
|
|
116
|
+
if (submitAddressReturn.value?.status !== void 0) {
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
submitAddressReturn.value = null;
|
|
119
|
+
}, 5e3);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
return {
|
|
123
|
+
// State
|
|
124
|
+
showModal,
|
|
125
|
+
isEditMode,
|
|
126
|
+
showDeleteModal,
|
|
127
|
+
currentAddress,
|
|
128
|
+
submitAddressReturn,
|
|
129
|
+
loading,
|
|
130
|
+
// Computed
|
|
131
|
+
user,
|
|
132
|
+
shippingAddresses,
|
|
133
|
+
// Methods
|
|
134
|
+
clearMessages,
|
|
135
|
+
openAddModal,
|
|
136
|
+
openEditModal,
|
|
137
|
+
closeModal,
|
|
138
|
+
openDeleteModal,
|
|
139
|
+
closeDeleteModal,
|
|
140
|
+
submitAddress,
|
|
141
|
+
setShipping,
|
|
142
|
+
deleteAddress,
|
|
143
|
+
autoClearMessages
|
|
144
|
+
};
|
|
145
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare function useUpdatePassword(): {
|
|
2
|
+
form: import("vue").Ref<{
|
|
3
|
+
currentPassword: string;
|
|
4
|
+
newPassword: string;
|
|
5
|
+
confirmPassword: string;
|
|
6
|
+
}, {
|
|
7
|
+
currentPassword: string;
|
|
8
|
+
newPassword: string;
|
|
9
|
+
confirmPassword: string;
|
|
10
|
+
} | {
|
|
11
|
+
currentPassword: string;
|
|
12
|
+
newPassword: string;
|
|
13
|
+
confirmPassword: string;
|
|
14
|
+
}>;
|
|
15
|
+
loading: import("vue").Ref<boolean, boolean>;
|
|
16
|
+
errorMessage: import("vue").Ref<string, string>;
|
|
17
|
+
successMessage: import("vue").Ref<string, string>;
|
|
18
|
+
updatePassword: () => Promise<boolean>;
|
|
19
|
+
clearMessages: () => void;
|
|
20
|
+
resetForm: () => void;
|
|
21
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { ref } from "vue";
|
|
2
|
+
import { useAuthStore } from "../../stores/auth.js";
|
|
3
|
+
export function useUpdatePassword() {
|
|
4
|
+
const authStore = useAuthStore();
|
|
5
|
+
const loading = ref(false);
|
|
6
|
+
const errorMessage = ref("");
|
|
7
|
+
const successMessage = ref("");
|
|
8
|
+
const form = ref({
|
|
9
|
+
currentPassword: "",
|
|
10
|
+
newPassword: "",
|
|
11
|
+
confirmPassword: ""
|
|
12
|
+
});
|
|
13
|
+
const clearMessages = () => {
|
|
14
|
+
errorMessage.value = "";
|
|
15
|
+
successMessage.value = "";
|
|
16
|
+
};
|
|
17
|
+
const resetForm = () => {
|
|
18
|
+
form.value = {
|
|
19
|
+
currentPassword: "",
|
|
20
|
+
newPassword: "",
|
|
21
|
+
confirmPassword: ""
|
|
22
|
+
};
|
|
23
|
+
clearMessages();
|
|
24
|
+
};
|
|
25
|
+
const validateForm = () => {
|
|
26
|
+
if (!form.value.currentPassword?.trim() || !form.value.newPassword?.trim() || !form.value.confirmPassword?.trim()) {
|
|
27
|
+
errorMessage.value = "All password fields are required!";
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (form.value.newPassword !== form.value.confirmPassword) {
|
|
31
|
+
errorMessage.value = "New password and confirm password do not match!";
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
if (form.value.newPassword.length < 8) {
|
|
35
|
+
errorMessage.value = "New password must be at least 8 characters long!";
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
};
|
|
40
|
+
const updatePassword = async () => {
|
|
41
|
+
if (!validateForm()) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
loading.value = true;
|
|
45
|
+
clearMessages();
|
|
46
|
+
try {
|
|
47
|
+
const requestBody = {
|
|
48
|
+
current_password: form.value.currentPassword.trim(),
|
|
49
|
+
password: form.value.newPassword.trim(),
|
|
50
|
+
password_confirmation: form.value.confirmPassword.trim()
|
|
51
|
+
};
|
|
52
|
+
const response = await authStore.changePassword(requestBody);
|
|
53
|
+
if (response && response?.status === "Success") {
|
|
54
|
+
successMessage.value = response.message || "Password updated successfully!";
|
|
55
|
+
resetForm();
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
if (response) {
|
|
59
|
+
successMessage.value = response.message || "Password updated successfully!";
|
|
60
|
+
resetForm();
|
|
61
|
+
return true;
|
|
62
|
+
} else if (response && response.status === "Error") {
|
|
63
|
+
errorMessage.value = response.message || "Failed to update password. Please try again.";
|
|
64
|
+
return false;
|
|
65
|
+
} else {
|
|
66
|
+
errorMessage.value = "Unexpected response from server. Please try again.";
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
console.error("Unexpected error:", err);
|
|
71
|
+
if (err.data && err.data.status === "Error") {
|
|
72
|
+
errorMessage.value = err.data.message || "Failed to update password. Please try again.";
|
|
73
|
+
} else if (err.message) {
|
|
74
|
+
errorMessage.value = err.message;
|
|
75
|
+
} else {
|
|
76
|
+
errorMessage.value = "An unexpected error occurred while updating your password.";
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
} finally {
|
|
80
|
+
loading.value = false;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
// State
|
|
85
|
+
form,
|
|
86
|
+
loading,
|
|
87
|
+
errorMessage,
|
|
88
|
+
successMessage,
|
|
89
|
+
// Methods
|
|
90
|
+
updatePassword,
|
|
91
|
+
clearMessages,
|
|
92
|
+
resetForm
|
|
93
|
+
};
|
|
94
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface Card {
|
|
2
|
+
id: string;
|
|
3
|
+
holder_name: string;
|
|
4
|
+
last_four_digits: string;
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
export declare function useUserCards(): {
|
|
8
|
+
cards: import("vue").ComputedRef<{
|
|
9
|
+
[x: string]: any;
|
|
10
|
+
id: string;
|
|
11
|
+
holder_name: string;
|
|
12
|
+
last_four_digits: string;
|
|
13
|
+
}[]>;
|
|
14
|
+
loading: import("vue").Ref<boolean, boolean>;
|
|
15
|
+
deletingCardId: import("vue").Ref<string | null, string | null>;
|
|
16
|
+
errorMessage: import("vue").Ref<string, string>;
|
|
17
|
+
successMessage: import("vue").Ref<string, string>;
|
|
18
|
+
hasCards: import("vue").ComputedRef<boolean>;
|
|
19
|
+
fetchCards: () => Promise<void>;
|
|
20
|
+
deleteCard: (cardId: string) => Promise<boolean>;
|
|
21
|
+
clearMessages: () => void;
|
|
22
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ref, computed } from "vue";
|
|
2
|
+
import { useAuthStore } from "../../stores/auth.js";
|
|
3
|
+
export function useUserCards() {
|
|
4
|
+
const authStore = useAuthStore();
|
|
5
|
+
const cards = ref([]);
|
|
6
|
+
const loading = ref(false);
|
|
7
|
+
const deletingCardId = ref(null);
|
|
8
|
+
const errorMessage = ref("");
|
|
9
|
+
const successMessage = ref("");
|
|
10
|
+
const cardsData = computed(() => cards.value || []);
|
|
11
|
+
const hasCards = computed(() => cards.value && cards.value.length > 0);
|
|
12
|
+
const clearMessages = () => {
|
|
13
|
+
errorMessage.value = "";
|
|
14
|
+
successMessage.value = "";
|
|
15
|
+
};
|
|
16
|
+
const fetchCards = async () => {
|
|
17
|
+
loading.value = true;
|
|
18
|
+
clearMessages();
|
|
19
|
+
try {
|
|
20
|
+
const cardsData2 = await authStore.fetchUserCards();
|
|
21
|
+
cards.value = Array.isArray(cardsData2) ? cardsData2 : [];
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error("Failed to fetch cards:", error);
|
|
24
|
+
cards.value = [];
|
|
25
|
+
errorMessage.value = "Failed to load cards. Please try again.";
|
|
26
|
+
} finally {
|
|
27
|
+
loading.value = false;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const deleteCard = async (cardId) => {
|
|
31
|
+
deletingCardId.value = cardId;
|
|
32
|
+
clearMessages();
|
|
33
|
+
try {
|
|
34
|
+
const response = await authStore.deleteCard(cardId);
|
|
35
|
+
if (response.status === "Success") {
|
|
36
|
+
successMessage.value = response.message || "Card deleted successfully!";
|
|
37
|
+
cards.value = cards.value.filter((card) => card.id !== cardId);
|
|
38
|
+
return true;
|
|
39
|
+
} else {
|
|
40
|
+
errorMessage.value = response.message || "Failed to delete card. Please try again.";
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
} catch (error) {
|
|
44
|
+
console.error("Delete card error:", error);
|
|
45
|
+
errorMessage.value = error.message || "Failed to delete card. Please try again.";
|
|
46
|
+
return false;
|
|
47
|
+
} finally {
|
|
48
|
+
deletingCardId.value = null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
// State
|
|
53
|
+
cards: cardsData,
|
|
54
|
+
loading,
|
|
55
|
+
deletingCardId,
|
|
56
|
+
errorMessage,
|
|
57
|
+
successMessage,
|
|
58
|
+
// Computed
|
|
59
|
+
hasCards,
|
|
60
|
+
// Methods
|
|
61
|
+
fetchCards,
|
|
62
|
+
deleteCard,
|
|
63
|
+
clearMessages
|
|
64
|
+
};
|
|
65
|
+
}
|
|
@@ -1,19 +1,4 @@
|
|
|
1
|
-
import { type Wishlist, type WishlistProduct } from '
|
|
2
|
-
export interface ApiResponse<T> {
|
|
3
|
-
status: string;
|
|
4
|
-
message: string | Record<string, string[]> | null;
|
|
5
|
-
data: T | null;
|
|
6
|
-
}
|
|
7
|
-
export interface CreateWishlistData {
|
|
8
|
-
title: string;
|
|
9
|
-
default: boolean;
|
|
10
|
-
}
|
|
11
|
-
export interface UpdateWishlistData {
|
|
12
|
-
title: string;
|
|
13
|
-
default: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface AddToWishlistData {
|
|
16
|
-
}
|
|
1
|
+
import { type Wishlist, type WishlistProduct, type CreateWishlistData, type UpdateWishlistData, type AddToWishlistData, type ApiResponse } from '../../stores/wishlists.js';
|
|
17
2
|
export declare function useWishlists(): {
|
|
18
3
|
fetchWishlists: () => Promise<ApiResponse<Wishlist[]>>;
|
|
19
4
|
fetchWishlistProducts: (listId: number) => Promise<ApiResponse<{
|
|
@@ -30,9 +15,11 @@ export declare function useWishlists(): {
|
|
|
30
15
|
deleteWishlist: (id: number) => Promise<ApiResponse<void>>;
|
|
31
16
|
wishlists: import("vue").ComputedRef<{
|
|
32
17
|
id: number;
|
|
33
|
-
|
|
18
|
+
title: string;
|
|
19
|
+
default: boolean;
|
|
20
|
+
created_at: string;
|
|
34
21
|
}[]>;
|
|
35
|
-
wishlistProducts: import("vue").ComputedRef<
|
|
22
|
+
wishlistProducts: (listId: number) => import("vue").ComputedRef<WishlistProduct[]>;
|
|
36
23
|
loading: import("vue").ComputedRef<boolean>;
|
|
37
24
|
error: import("vue").ComputedRef<string | null>;
|
|
38
25
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { computed } from "vue";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
useWishlistsStore
|
|
4
|
+
} from "../../stores/wishlists.js";
|
|
4
5
|
function formatErrorMessage(message) {
|
|
5
6
|
if (!message) return "An error occurred";
|
|
6
7
|
if (typeof message === "string") {
|
|
@@ -18,14 +19,12 @@ function formatErrorMessage(message) {
|
|
|
18
19
|
}
|
|
19
20
|
export function useWishlists() {
|
|
20
21
|
const store = useWishlistsStore();
|
|
21
|
-
const { get, post } = useApi();
|
|
22
22
|
async function fetchWishlists() {
|
|
23
23
|
store.setLoading(true);
|
|
24
24
|
store.setError(null);
|
|
25
25
|
try {
|
|
26
|
-
const response = await
|
|
27
|
-
if (response.status === "Success"
|
|
28
|
-
store.setWishlists(response.data);
|
|
26
|
+
const response = await store.fetchWishlists();
|
|
27
|
+
if (response.status === "Success") {
|
|
29
28
|
return response;
|
|
30
29
|
} else {
|
|
31
30
|
const errorMessage = formatErrorMessage(response.message);
|
|
@@ -45,10 +44,8 @@ export function useWishlists() {
|
|
|
45
44
|
store.setLoading(true);
|
|
46
45
|
store.setError(null);
|
|
47
46
|
try {
|
|
48
|
-
const response = await
|
|
49
|
-
if (response.status === "Success"
|
|
50
|
-
const products = response.data.products || [];
|
|
51
|
-
store.setWishlistProducts(listId, products);
|
|
47
|
+
const response = await store.fetchWishlistProducts(listId);
|
|
48
|
+
if (response.status === "Success") {
|
|
52
49
|
return response;
|
|
53
50
|
} else {
|
|
54
51
|
const errorMessage = formatErrorMessage(response.message);
|
|
@@ -68,9 +65,8 @@ export function useWishlists() {
|
|
|
68
65
|
store.setLoading(true);
|
|
69
66
|
store.setError(null);
|
|
70
67
|
try {
|
|
71
|
-
const response = await
|
|
72
|
-
if (response.status === "Success"
|
|
73
|
-
store.addWishlist(response.data);
|
|
68
|
+
const response = await store.createWishlist(data);
|
|
69
|
+
if (response.status === "Success") {
|
|
74
70
|
return response;
|
|
75
71
|
} else {
|
|
76
72
|
const errorMessage = formatErrorMessage(response.message);
|
|
@@ -90,9 +86,8 @@ export function useWishlists() {
|
|
|
90
86
|
store.setLoading(true);
|
|
91
87
|
store.setError(null);
|
|
92
88
|
try {
|
|
93
|
-
const response = await
|
|
94
|
-
if (response.status === "Success"
|
|
95
|
-
store.addWishlistProduct(listId, response.data);
|
|
89
|
+
const response = await store.addToWishlist(listId, productSlug, data);
|
|
90
|
+
if (response.status === "Success") {
|
|
96
91
|
return response;
|
|
97
92
|
} else {
|
|
98
93
|
const errorMessage = formatErrorMessage(response.message);
|
|
@@ -112,9 +107,8 @@ export function useWishlists() {
|
|
|
112
107
|
store.setLoading(true);
|
|
113
108
|
store.setError(null);
|
|
114
109
|
try {
|
|
115
|
-
const response = await
|
|
110
|
+
const response = await store.removeFromWishlist(listId, productSlug);
|
|
116
111
|
if (response.status === "Success") {
|
|
117
|
-
store.removeWishlistProduct(listId, productSlug);
|
|
118
112
|
return response;
|
|
119
113
|
} else {
|
|
120
114
|
const errorMessage = formatErrorMessage(response.message);
|
|
@@ -134,9 +128,8 @@ export function useWishlists() {
|
|
|
134
128
|
store.setLoading(true);
|
|
135
129
|
store.setError(null);
|
|
136
130
|
try {
|
|
137
|
-
const response = await
|
|
138
|
-
if (response.status === "Success"
|
|
139
|
-
store.updateWishlist(response.data);
|
|
131
|
+
const response = await store.updateWishlist(id, data);
|
|
132
|
+
if (response.status === "Success") {
|
|
140
133
|
return response;
|
|
141
134
|
} else {
|
|
142
135
|
const errorMessage = formatErrorMessage(response.message);
|
|
@@ -156,10 +149,8 @@ export function useWishlists() {
|
|
|
156
149
|
store.setLoading(true);
|
|
157
150
|
store.setError(null);
|
|
158
151
|
try {
|
|
159
|
-
const response = await
|
|
152
|
+
const response = await store.deleteWishlist(id);
|
|
160
153
|
if (response.status === "Success") {
|
|
161
|
-
store.removeWishlist(id);
|
|
162
|
-
store.clearWishlistProducts(id);
|
|
163
154
|
return response;
|
|
164
155
|
} else {
|
|
165
156
|
const errorMessage = formatErrorMessage(response.message);
|
|
@@ -183,9 +174,9 @@ export function useWishlists() {
|
|
|
183
174
|
removeFromWishlist,
|
|
184
175
|
updateWishlist,
|
|
185
176
|
deleteWishlist,
|
|
186
|
-
wishlists: computed(() => store.
|
|
187
|
-
wishlistProducts: computed(() => store.
|
|
188
|
-
loading: computed(() => store.
|
|
189
|
-
error: computed(() => store.
|
|
177
|
+
wishlists: computed(() => store.getWishlists),
|
|
178
|
+
wishlistProducts: (listId) => computed(() => store.getWishlistProducts(listId)),
|
|
179
|
+
loading: computed(() => store.isLoading),
|
|
180
|
+
error: computed(() => store.getError)
|
|
190
181
|
};
|
|
191
182
|
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
interface Country {
|
|
2
|
+
id: number;
|
|
3
|
+
name: string;
|
|
4
|
+
}
|
|
5
|
+
interface UseCountryReturn {
|
|
6
|
+
data: Ref<Country[] | null>;
|
|
7
|
+
error: Ref<Error | null>;
|
|
8
|
+
refresh: () => Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const useCountry: () => UseCountryReturn;
|
|
11
|
+
export {};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { useFetch } from "#imports";
|
|
1
2
|
export const useCountry = () => {
|
|
2
|
-
const { data, error, refresh
|
|
3
|
-
server: true
|
|
3
|
+
const { data, error, refresh } = useFetch("/api/checkout/countries", {
|
|
4
|
+
server: true,
|
|
5
|
+
key: "countries"
|
|
4
6
|
});
|
|
5
7
|
return {
|
|
6
8
|
data,
|
|
7
9
|
error,
|
|
8
|
-
refresh
|
|
9
|
-
execute
|
|
10
|
+
refresh
|
|
10
11
|
};
|
|
11
12
|
};
|
|
@@ -1,28 +1,14 @@
|
|
|
1
1
|
export default function (): {
|
|
2
|
-
NavMenu:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
userData: {};
|
|
8
|
-
menuData: import("vue").ComputedRef<{
|
|
9
|
-
location: string;
|
|
10
|
-
items: {
|
|
11
|
-
title: string;
|
|
12
|
-
url: string;
|
|
13
|
-
sortorder: number;
|
|
14
|
-
children?: /*elided*/ any[] | undefined;
|
|
15
|
-
}[];
|
|
16
|
-
} | undefined>;
|
|
2
|
+
NavMenu: any;
|
|
3
|
+
companyProfile: import("vue").ComputedRef<any>;
|
|
4
|
+
cartStore: any;
|
|
5
|
+
userData: any;
|
|
6
|
+
menuData: import("vue").ComputedRef<any>;
|
|
17
7
|
mobile_menu: import("vue").Ref<boolean, boolean>;
|
|
18
8
|
MainMenu: any;
|
|
19
9
|
wordpressUrl: any;
|
|
20
10
|
OpenMobileMenu: () => void;
|
|
21
|
-
useSearch:
|
|
22
|
-
data: any[];
|
|
23
|
-
}, {}, {
|
|
24
|
-
fetchSearchData(query: string): Promise<any[]>;
|
|
25
|
-
}>;
|
|
11
|
+
useSearch: any;
|
|
26
12
|
getSearchData: (value: string) => void;
|
|
27
13
|
handleSeachInput: (searchValue: string) => void;
|
|
28
14
|
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { defineAsyncComponent, ref, computed } from "vue";
|
|
2
|
-
import { useNavMenu, useCompanyProfile,
|
|
2
|
+
import { useNavMenu, useCompanyProfile, useCartStore, useSearchStore } from "#imports";
|
|
3
|
+
import { useAuthStore } from "../../stores/auth.js";
|
|
3
4
|
export default function() {
|
|
4
5
|
const wordpressUrl = import.meta.env.VITE_APP_WORDPRESS_URL;
|
|
5
6
|
const NavMenu = useNavMenu();
|
|
6
7
|
const CompanyProfile = useCompanyProfile();
|
|
7
|
-
const { user } =
|
|
8
|
+
const { user } = useAuthStore();
|
|
8
9
|
const cartStore = useCartStore();
|
|
9
10
|
const useSearch = useSearchStore();
|
|
10
11
|
const companyProfile = computed(() => CompanyProfile.profile);
|
|
@@ -66,7 +66,7 @@ export default function (product: any, template?: string): {
|
|
|
66
66
|
}>;
|
|
67
67
|
activeStep: import("vue").Ref<number, number>;
|
|
68
68
|
NextStep: (id: number) => false | undefined;
|
|
69
|
-
sortedGroups: (groups: any) =>
|
|
69
|
+
sortedGroups: (groups: any) => never[];
|
|
70
70
|
scrollToPosition: () => void;
|
|
71
71
|
SingleStep: import("vue").Raw<object>;
|
|
72
72
|
AddToCart: import("vue").Raw<object>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useFetch } from "#imports";
|
|
2
|
+
import { readonly } from "vue";
|
|
3
|
+
export const useQuickView = (slug) => {
|
|
4
|
+
const { data, error, refresh, execute, pending } = useFetch(
|
|
5
|
+
`/api/quickview/${slug}`,
|
|
6
|
+
{
|
|
7
|
+
method: "POST",
|
|
8
|
+
body: { slug },
|
|
9
|
+
lazy: true,
|
|
10
|
+
server: false,
|
|
11
|
+
default: () => null
|
|
12
|
+
}
|
|
13
|
+
);
|
|
14
|
+
return {
|
|
15
|
+
data: readonly(data),
|
|
16
|
+
error: readonly(error),
|
|
17
|
+
refresh,
|
|
18
|
+
execute,
|
|
19
|
+
pending: readonly(pending)
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export const useSendQuickValues = async (attributes, slug) => {
|
|
23
|
+
return await $fetch(`/api/quickview/${slug}`, {
|
|
24
|
+
method: "POST",
|
|
25
|
+
body: attributes
|
|
26
|
+
});
|
|
27
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default function (props: any): {
|
|
2
|
-
useCartStore: import("pinia").StoreDefinition<"cart", import("../../stores/
|
|
2
|
+
useCartStore: import("pinia").StoreDefinition<"cart", import("../../stores/Cart.js").CartState, {}, {}>;
|
|
3
3
|
ServiceStore: import("pinia").Store<"ServiceStore", {
|
|
4
4
|
services: never[];
|
|
5
5
|
availability: boolean;
|
|
@@ -2,7 +2,6 @@ import { ref, watch, onMounted, computed } from "vue";
|
|
|
2
2
|
import { useServiceStore } from "../../stores/Services.js";
|
|
3
3
|
import { useCartStore } from "../../stores/Cart.js";
|
|
4
4
|
import { useIpLocation } from "../../stores/IpLocation.js";
|
|
5
|
-
import LocationScript from "../Location";
|
|
6
5
|
export default function(props) {
|
|
7
6
|
const CurrentService = ref([]);
|
|
8
7
|
const ServiceStore = useServiceStore();
|
|
@@ -50,8 +49,6 @@ export default function(props) {
|
|
|
50
49
|
}
|
|
51
50
|
});
|
|
52
51
|
const GetServiceLocations = async () => {
|
|
53
|
-
const { GetLocation } = LocationScript.setup();
|
|
54
|
-
GetLocation();
|
|
55
52
|
};
|
|
56
53
|
return {
|
|
57
54
|
useCartStore,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default function (): {
|
|
2
|
-
route:
|
|
3
|
-
router:
|
|
2
|
+
route: any;
|
|
3
|
+
router: any;
|
|
4
4
|
isChecked: (slug: any, dynamicQueryParam: any) => any;
|
|
5
5
|
toggleCheckbox: (slug: any, parent_slug: any) => void;
|
|
6
6
|
};
|