From fa1621c3d1b46703d4346dc5ff30b2328406bfe9 Mon Sep 17 00:00:00 2001 From: Hussain Nagaria Date: Mon, 3 Mar 2025 22:42:43 +0530 Subject: [PATCH] feat: autofill client timezone based on user timezone --- .../src/components/Modals/LiveClassModal.vue | 8 ++++++-- frontend/src/utils/index.js | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Modals/LiveClassModal.vue b/frontend/src/components/Modals/LiveClassModal.vue index 7d16acb7..7d260776 100644 --- a/frontend/src/components/Modals/LiveClassModal.vue +++ b/frontend/src/components/Modals/LiveClassModal.vue @@ -95,8 +95,8 @@ import { FormControl, Autocomplete, } from 'frappe-ui' -import { reactive, inject } from 'vue' -import { getTimezones, createToast } from '@/utils/' +import { reactive, inject, onMounted } from 'vue' +import { getTimezones, createToast, getUserTimezone } from '@/utils/' const liveClasses = defineModel('reloadLiveClasses') const show = defineModel() @@ -122,6 +122,10 @@ let liveClass = reactive({ host: user.data.name, }) +onMounted(() => { + liveClass.timezone = getUserTimezone() +}) + const getTimezoneOptions = () => { return getTimezones().map((timezone) => { return { diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index 97b78e01..c6410c55 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -441,6 +441,22 @@ export function getTimezones() { ] } +export function getUserTimezone() { + try { + const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone + const supportedTimezones = getTimezones() + + if (supportedTimezones.includes(timezone)) { + return timezone // e.g., 'Asia/Calcutta', 'America/New_York', etc. + } else { + throw Error('unsupported timezone') + } + } catch (error) { + console.error('Error getting timezone:', error) + return null + } +} + export function getSidebarLinks() { return [ {