diff --git a/client/src/App.tsx b/client/src/App.tsx index 7caae96..7e46d58 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -257,7 +257,8 @@ function App() { Poslední změny:

Dnes je {data.date}

@@ -279,6 +280,7 @@ function App() { + Je možné vybrat jen jednu možnost. Výběr jiné odstraní předchozí. {foodChoiceList && <>

Na co dobrého? (nepovinné)

diff --git a/server/src/service.ts b/server/src/service.ts index e2968bc..7e4d1ef 100644 --- a/server/src/service.ts +++ b/server/src/service.ts @@ -285,6 +285,24 @@ export function removeChoice(login: string, location: Locations, foodIndex: numb return data; } +/** + * Odstraní kompletně volbu uživatele. + * + * @param login login uživatele + */ +function removeChoiceIfPresent(login: string) { + const today = formatDate(getToday()); + let data: ClientData = db.get(today); + for (const key of Object.keys(data.choices)) { + if (login in data.choices[key]) { + delete data.choices[key][login]; + if (Object.keys(data.choices[key]).length === 0) { + delete data.choices[key]; + } + } + } +} + /** * Přidá volbu uživatele. * @@ -295,6 +313,10 @@ export function removeChoice(login: string, location: Locations, foodIndex: numb */ export function addChoice(login: string, location: Locations, foodIndex?: number) { initIfNeeded(); + // Pokud měníme pouze lokaci, mažeme případné předchozí + if (foodIndex == null) { + removeChoiceIfPresent(login); + } const today = formatDate(getToday()); let data: ClientData = db.get(today); if (!(location in data.choices)) {