Disable editing of public events in UI for crew

This commit is contained in:
Hornwitser 2025-03-15 14:28:27 +01:00
parent b22d32dada
commit 27d853d102

View file

@ -23,12 +23,14 @@
<input
type="text"
:value="event.name"
:disabled="!canEdit(event)"
@input="editEvent(event, { name: ($event as any).target.value })"
>
</td>
<td>
<input
type="text"
:disabled="!canEdit(event)"
:value="event.description"
@input="editEvent(event, { description: ($event as any).target.value })"
>
@ -36,6 +38,7 @@
<td>
<input
type="checkbox"
:disabled="!canEditPublic"
:value="!event.crew"
:checked="!event.crew"
@change="editEvent(event, { crew: !($event as any).target.value })"
@ -45,7 +48,7 @@
<td>
<button
type="button"
:disabled="removed.has(event.id)"
:disabled="!canEdit(event) || removed.has(event.id)"
@click="delEvent(event.id)"
>Delete</button>
<button
@ -72,6 +75,7 @@
<td>
<input
type="checkbox"
:disabled="!canEditPublic"
v-model="newEventPublic"
>
</td>
@ -131,6 +135,12 @@ defineProps<{
}>();
const schedule = await useSchedule();
const { data: session } = await useAccountSession();
const canEditPublic = computed(() => session.value?.account.type === "admin");
function canEdit(event: ScheduleEvent) {
return event.crew || canEditPublic.value;
}
const changes = ref<ChangeRecord<ScheduleEvent>[]>([]);
const removed = computed(() => new Set(changes.value.filter(c => c.op === "del").map(c => c.data.id)));