From dc489baa5e38f02e18525b0178aa441f502e20ba Mon Sep 17 00:00:00 2001 From: Md Gulam Gaush Date: Sat, 7 Feb 2026 15:00:55 +0530 Subject: [PATCH 1/6] chore: migrated useBookingFormStorgage composables and its imports --- dashboard/src/components/BookingForm.vue | 2 +- .../{useBookingFormStorage.js => useBookingFormStorage.ts} | 2 +- dashboard/src/pages/BookingDetails.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename dashboard/src/composables/{useBookingFormStorage.js => useBookingFormStorage.ts} (96%) diff --git a/dashboard/src/components/BookingForm.vue b/dashboard/src/components/BookingForm.vue index 1009c4c5..f5e34d20 100644 --- a/dashboard/src/components/BookingForm.vue +++ b/dashboard/src/components/BookingForm.vue @@ -372,7 +372,7 @@ import CustomFieldsSection from "./CustomFieldsSection.vue"; import PaymentGatewayDialog from "./PaymentGatewayDialog.vue"; import { createResource, toast, FormControl } from "frappe-ui"; import { formatPriceOrFree, formatCurrency } from "@/utils/currency"; -import { useBookingFormStorage } from "../composables/useBookingFormStorage.js"; +import { useBookingFormStorage } from "@/composables/useBookingFormStorage.js"; import { useRouter, useRoute } from "vue-router"; import { userResource } from "@/data/user"; import { redirectToLogin, clearBookingCache } from "@/utils/index"; diff --git a/dashboard/src/composables/useBookingFormStorage.js b/dashboard/src/composables/useBookingFormStorage.ts similarity index 96% rename from dashboard/src/composables/useBookingFormStorage.js rename to dashboard/src/composables/useBookingFormStorage.ts index bba83890..e78ecba2 100644 --- a/dashboard/src/composables/useBookingFormStorage.js +++ b/dashboard/src/composables/useBookingFormStorage.ts @@ -5,7 +5,7 @@ import { useStorage } from "@vueuse/core"; * This allows components to access and clear booking form data stored in localStorage * @param {string} eventRoute - The event route to scope the storage keys */ -export function useBookingFormStorage(eventRoute) { +export function useBookingFormStorage(eventRoute: string) { if (!eventRoute) { throw new Error("eventRoute is required for useBookingFormStorage"); } diff --git a/dashboard/src/pages/BookingDetails.vue b/dashboard/src/pages/BookingDetails.vue index eb38f690..08abc4ab 100644 --- a/dashboard/src/pages/BookingDetails.vue +++ b/dashboard/src/pages/BookingDetails.vue @@ -67,7 +67,7 @@ import { ref, computed } from "vue"; import { createResource, Spinner } from "frappe-ui"; import { useRoute } from "vue-router"; import { usePaymentSuccess } from "../composables/usePaymentSuccess.js"; -import { useBookingFormStorage } from "../composables/useBookingFormStorage.js"; +import { useBookingFormStorage } from "@/composables/useBookingFormStorage.js"; import BookingHeader from "../components/BookingHeader.vue"; import SuccessMessage from "../components/SuccessMessage.vue"; import CancellationRequestNotice from "../components/CancellationRequestNotice.vue"; From a5e736f82758e12663b1aae22b75a7be1d817a4e Mon Sep 17 00:00:00 2001 From: Md Gulam Gaush Date: Sat, 7 Feb 2026 15:02:37 +0530 Subject: [PATCH 2/6] chore: migrated useLanguage composables to TS --- .../composables/{useLanguage.js => useLanguage.ts} | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) rename dashboard/src/composables/{useLanguage.js => useLanguage.ts} (67%) diff --git a/dashboard/src/composables/useLanguage.js b/dashboard/src/composables/useLanguage.ts similarity index 67% rename from dashboard/src/composables/useLanguage.js rename to dashboard/src/composables/useLanguage.ts index 3bf2d582..9d206a82 100644 --- a/dashboard/src/composables/useLanguage.js +++ b/dashboard/src/composables/useLanguage.ts @@ -1,8 +1,15 @@ import { createResource } from "frappe-ui"; -import { computed } from "vue"; +import { computed, type ComputedRef } from "vue"; import { userResource } from "@/data/user"; -export function useLanguage() { +interface LanguageComposable { + availableLanguages: any; + currentLanguage: ComputedRef; + changeLanguage: (languageCode: string) => void; + isSwitching: ComputedRef; +} + +export function useLanguage(): LanguageComposable { const availableLanguages = createResource({ url: "buzz.api.get_enabled_languages", auto: true, @@ -21,7 +28,7 @@ export function useLanguage() { }, }); - function changeLanguage(languageCode) { + function changeLanguage(languageCode: string) { switchLanguage.submit({ language_code: languageCode }); } From 760a4b219677a9d8bf6a186a03b7b5ed45b70332 Mon Sep 17 00:00:00 2001 From: Md Gulam Gaush Date: Sat, 7 Feb 2026 15:08:36 +0530 Subject: [PATCH 3/6] chore: migrated usePaymentSuccess composables to TS --- ...PaymentSuccess.js => usePaymentSuccess.ts} | 19 +++++++++++++++++-- dashboard/src/pages/BookingDetails.vue | 2 +- dashboard/src/pages/SponsorshipDetails.vue | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) rename dashboard/src/composables/{usePaymentSuccess.js => usePaymentSuccess.ts} (82%) diff --git a/dashboard/src/composables/usePaymentSuccess.js b/dashboard/src/composables/usePaymentSuccess.ts similarity index 82% rename from dashboard/src/composables/usePaymentSuccess.js rename to dashboard/src/composables/usePaymentSuccess.ts index efe27573..7f718613 100644 --- a/dashboard/src/composables/usePaymentSuccess.js +++ b/dashboard/src/composables/usePaymentSuccess.ts @@ -1,7 +1,22 @@ -import { ref, onMounted } from "vue"; +import { ref, onMounted, type Ref } from "vue"; import { useRoute, useRouter } from "vue-router"; import { triggerCelebrationConfetti } from "@/utils/confetti"; +interface PaymentSuccessOptions { + onSuccess?: () => void; + messageDuration?: number; + enableConfetti?: boolean; + cleanupUrl?: boolean; +} + +interface PaymentSuccessReturn { + showSuccessMessage: Ref; + triggerSuccessFlow: () => void; + checkForSuccess: () => void; + hideSuccessMessage: () => void; + showSuccess: () => void; +} + /** * Composable for handling payment success flow * Handles success message display, confetti animation, URL cleanup, and data refresh @@ -13,7 +28,7 @@ import { triggerCelebrationConfetti } from "@/utils/confetti"; * @param {boolean} options.cleanupUrl - Whether to clean up success parameter from URL (default: true) * @returns {Object} - Returns reactive state and helper functions */ -export function usePaymentSuccess(options = {}) { +export function usePaymentSuccess(options: PaymentSuccessOptions = {}): PaymentSuccessReturn { const { onSuccess, messageDuration = 10000, diff --git a/dashboard/src/pages/BookingDetails.vue b/dashboard/src/pages/BookingDetails.vue index 08abc4ab..4a0440cf 100644 --- a/dashboard/src/pages/BookingDetails.vue +++ b/dashboard/src/pages/BookingDetails.vue @@ -66,7 +66,7 @@ import { ref, computed } from "vue"; import { createResource, Spinner } from "frappe-ui"; import { useRoute } from "vue-router"; -import { usePaymentSuccess } from "../composables/usePaymentSuccess.js"; +import { usePaymentSuccess } from "@/composables/usePaymentSuccess"; import { useBookingFormStorage } from "@/composables/useBookingFormStorage.js"; import BookingHeader from "../components/BookingHeader.vue"; import SuccessMessage from "../components/SuccessMessage.vue"; diff --git a/dashboard/src/pages/SponsorshipDetails.vue b/dashboard/src/pages/SponsorshipDetails.vue index fa4e1bb3..22d89dbc 100644 --- a/dashboard/src/pages/SponsorshipDetails.vue +++ b/dashboard/src/pages/SponsorshipDetails.vue @@ -376,7 +376,7 @@ import LucideCheckCircle from "~icons/lucide/check-circle"; import LucideClock from "~icons/lucide/clock"; import LucideXCircle from "~icons/lucide/x-circle"; import SponsorshipPaymentDialog from "../components/SponsorshipPaymentDialog.vue"; -import { usePaymentSuccess } from "../composables/usePaymentSuccess.js"; +import { usePaymentSuccess } from "@/composables/usePaymentSuccess"; import BackButton from "../components/common/BackButton.vue"; const props = defineProps({ From 5a381d2885ff08c6903bfd31023de0dabc1a2566 Mon Sep 17 00:00:00 2001 From: Md Gulam Gaush Date: Sat, 7 Feb 2026 22:48:17 +0530 Subject: [PATCH 4/6] chore: migrated useCustomFields composables to TS --- .../src/components/AttendeeFormControl.vue | 2 +- dashboard/src/components/CustomFieldInput.vue | 2 +- .../src/components/CustomFieldsSection.vue | 2 +- ...{useCustomFields.js => useCustomFields.ts} | 30 +++++++++++++++---- 4 files changed, 27 insertions(+), 9 deletions(-) rename dashboard/src/composables/{useCustomFields.js => useCustomFields.ts} (81%) diff --git a/dashboard/src/components/AttendeeFormControl.vue b/dashboard/src/components/AttendeeFormControl.vue index 790918af..86304e66 100644 --- a/dashboard/src/components/AttendeeFormControl.vue +++ b/dashboard/src/components/AttendeeFormControl.vue @@ -111,7 +111,7 @@ import { Tooltip } from "frappe-ui"; import { formatPriceOrFree } from "@/utils/currency"; import CustomFieldInput from "./CustomFieldInput.vue"; -import { getFieldDefaultValue } from "@/composables/useCustomFields.js"; +import { getFieldDefaultValue } from "@/composables/useCustomFields"; const props = defineProps({ attendee: { type: Object, required: true }, diff --git a/dashboard/src/components/CustomFieldInput.vue b/dashboard/src/components/CustomFieldInput.vue index 83d4fcaf..d87ffcbd 100644 --- a/dashboard/src/components/CustomFieldInput.vue +++ b/dashboard/src/components/CustomFieldInput.vue @@ -68,7 +68,7 @@ import { getFieldPlaceholder, isDateField, isDateTimeField, -} from "@/composables/useCustomFields.js"; +} from "@/composables/useCustomFields"; const props = defineProps({ field: { diff --git a/dashboard/src/components/CustomFieldsSection.vue b/dashboard/src/components/CustomFieldsSection.vue index 22e02773..4826b495 100644 --- a/dashboard/src/components/CustomFieldsSection.vue +++ b/dashboard/src/components/CustomFieldsSection.vue @@ -18,7 +18,7 @@