fix(webui): submit scheduling option revisions

This commit is contained in:
2026-07-20 18:36:10 +02:00
parent bbf503a7d7
commit d0b95eee58
3 changed files with 13 additions and 2 deletions

View File

@@ -52,6 +52,7 @@ assert.match(page, /type="email"[\s\S]*aria-label=\{I18N\.participantEmail\}/);
assert.doesNotMatch(page, /header: I18N\.required|<table|scheduling-table|scheduling-card(?:\s|"|`)/);
assert.match(page, /aria-label=\{i18nMessage\("i18n:govoplan-scheduling\.decide_on_value/);
assert.match(page, /submitSchedulingAvailability\(settings, selected\.id/);
assert.match(page, /option_revision: slot\.revision/);
assert.match(page, /getSchedulingAvailabilityResponse\(settings, selected\.id\)/);
assert.match(page, /setAvailability\(Object\.fromEntries\(response\.answers\.map/);
assert.doesNotMatch(page, /<p>\{selected\.calendar_id\}<\/p>/);

View File

@@ -12,6 +12,7 @@ export type SchedulingCandidateSlot = {
timezone: string;
location?: string | null;
position: number;
revision: string;
freebusy_checked_at?: string | null;
freebusy_status?: string | null;
freebusy_conflicts: Record<string, unknown>[];
@@ -121,6 +122,7 @@ export type SchedulingAvailabilityPayload = {
answers: Array<{
slot_id: string;
value: SchedulingAvailabilityValue;
option_revision: string;
}>;
};

View File

@@ -403,8 +403,16 @@ export default function SchedulingPage({ settings, auth }: { settings: ApiSettin
event.preventDefault();
if (!selected || !selectedParticipant || !canRespond || availabilityLoading) return;
const answers = selected.slots
.map((slot) => ({ slot_id: slot.id, value: availability[slot.id] }))
.filter((answer): answer is { slot_id: string; value: SchedulingAvailabilityValue } => Boolean(answer.value));
.map((slot) => ({
slot_id: slot.id,
value: availability[slot.id],
option_revision: slot.revision
}))
.filter((answer): answer is {
slot_id: string;
value: SchedulingAvailabilityValue;
option_revision: string;
} => Boolean(answer.value));
if (!answers.length) {
setError(I18N.selectResponse);
return;