Use a pinia store to manage account state
Refactor the existing scattered code dealing with the account state into a pinia store.
This commit is contained in:
parent
fae8b4e2e4
commit
e722876aae
12 changed files with 126 additions and 98 deletions
|
@ -424,12 +424,8 @@ function removeSlot(eventChanges: ChangeRecord<ScheduleEvent>[], event: Schedule
|
|||
return eventChanges;
|
||||
}
|
||||
|
||||
const sessionStore = useSessionStore();
|
||||
const accountStore = useAccountStore();
|
||||
const schedule = await useSchedule();
|
||||
const runtimeConfig = useRuntimeConfig();
|
||||
const timezone = computed(
|
||||
() => sessionStore.account?.timezone ?? runtimeConfig.public.defaultTimezone
|
||||
);
|
||||
|
||||
type EventSlotChange = { op: "set" | "del", data: EventSlot } ;
|
||||
|
||||
|
@ -466,12 +462,12 @@ const newEventStart = ref("");
|
|||
const newEventDuration = ref("01:00");
|
||||
const newEventEnd = computed({
|
||||
get: () => (
|
||||
DateTime.fromISO(newEventStart.value, { zone: timezone.value })
|
||||
DateTime.fromISO(newEventStart.value, { zone: accountStore.activeTimezone })
|
||||
.plus(Duration.fromISOTime(newEventDuration.value))
|
||||
.toFormat("HH:mm")
|
||||
),
|
||||
set: (value: string) => {
|
||||
const start = DateTime.fromISO(newEventStart.value, { zone: timezone.value });
|
||||
const start = DateTime.fromISO(newEventStart.value, { zone: accountStore.activeTimezone });
|
||||
const end = endFromTime(start, value);
|
||||
newEventDuration.value = dropDay(end.diff(start)).toFormat("hh:mm");
|
||||
},
|
||||
|
@ -508,7 +504,7 @@ function editEventSlot(
|
|||
}
|
||||
) {
|
||||
if (edits.start) {
|
||||
const start = DateTime.fromISO(edits.start, { zone: timezone.value });
|
||||
const start = DateTime.fromISO(edits.start, { zone: accountStore.activeTimezone });
|
||||
eventSlot = {
|
||||
...eventSlot,
|
||||
start,
|
||||
|
@ -577,7 +573,7 @@ function newEventSlot(options: { start?: DateTime, end?: DateTime } = {}) {
|
|||
end = options.end;
|
||||
start = options.end.minus(duration);
|
||||
} else {
|
||||
start = DateTime.fromISO(newEventStart.value, { zone: timezone.value });
|
||||
start = DateTime.fromISO(newEventStart.value, { zone: accountStore.activeTimezone });
|
||||
end = endFromTime(start, newEventEnd.value);
|
||||
}
|
||||
if (!start.isValid || !end.isValid) {
|
||||
|
@ -641,8 +637,8 @@ const eventSlots = computed(() => {
|
|||
location,
|
||||
assigned: slot.assigned ?? [],
|
||||
origLocation: location,
|
||||
start: DateTime.fromISO(slot.start, { zone: timezone.value }),
|
||||
end: DateTime.fromISO(slot.end, { zone: timezone.value }),
|
||||
start: DateTime.fromISO(slot.start, { zone: accountStore.activeTimezone }),
|
||||
end: DateTime.fromISO(slot.end, { zone: accountStore.activeTimezone }),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue