Základ zobrazování ověřených uživatelů
This commit is contained in:
@@ -249,6 +249,7 @@ export function initIfNeeded() {
|
||||
export function removeChoices(login: string, location: Locations) {
|
||||
const today = formatDate(getToday());
|
||||
let data: ClientData = db.get(today);
|
||||
// TODO zajistit, že neověřený uživatel se stejným loginem nemůže mazat volby ověřeného
|
||||
if (location in data.choices) {
|
||||
if (login in data.choices[location]) {
|
||||
delete data.choices[location][login]
|
||||
@@ -273,11 +274,12 @@ export function removeChoices(login: string, location: Locations) {
|
||||
export function removeChoice(login: string, location: Locations, foodIndex: number) {
|
||||
const today = formatDate(getToday());
|
||||
let data: ClientData = db.get(today);
|
||||
// TODO řešit ověření uživatele
|
||||
if (location in data.choices) {
|
||||
if (login in data.choices[location]) {
|
||||
const index = data.choices[location][login].indexOf(foodIndex);
|
||||
const index = data.choices[location][login].options.indexOf(foodIndex);
|
||||
if (index > -1) {
|
||||
data.choices[location][login].splice(index, 1)
|
||||
data.choices[location][login].options.splice(index, 1)
|
||||
db.set(today, data);
|
||||
}
|
||||
}
|
||||
@@ -309,24 +311,41 @@ function removeChoiceIfPresent(login: string) {
|
||||
* @param login login uživatele
|
||||
* @param location vybrané "umístění"
|
||||
* @param foodIndex volitelný index jídla v daném umístění
|
||||
* @param trusted příznak, zda se jedná o ověřeného uživatele
|
||||
* @returns aktuální data
|
||||
*/
|
||||
export function addChoice(login: string, location: Locations, foodIndex?: number) {
|
||||
export function addChoice(login: string, trusted: boolean, location: Locations, foodIndex?: number) {
|
||||
initIfNeeded();
|
||||
const today = formatDate(getToday());
|
||||
let data: ClientData = db.get(today);
|
||||
// Ověření, že se neověřený užívatel nepokouší přepsat údaje ověřeného
|
||||
const locations = Object.values(data?.choices);
|
||||
let found = false;
|
||||
if (!trusted) {
|
||||
for (const location of locations) {
|
||||
if (Object.keys(location).includes(login) && location[login].trusted) {
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!trusted && found) {
|
||||
throw Error("Nelze změnit volbu ověřeného uživatele");
|
||||
}
|
||||
// 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)) {
|
||||
data.choices[location] = {};
|
||||
}
|
||||
if (!(login in data.choices[location])) {
|
||||
data.choices[location][login] = [];
|
||||
data.choices[location][login] = {
|
||||
trusted,
|
||||
options: []
|
||||
};
|
||||
}
|
||||
if (foodIndex != null && !data.choices[location][login].includes(foodIndex)) {
|
||||
data.choices[location][login].push(foodIndex);
|
||||
if (foodIndex != null && !data.choices[location][login].options.includes(foodIndex)) {
|
||||
data.choices[location][login].options.push(foodIndex);
|
||||
}
|
||||
db.set(today, data);
|
||||
return data;
|
||||
|
||||
Reference in New Issue
Block a user