2022-10-24 10:46:14 +02:00
|
|
|
/*
|
|
|
|
This file is part of GNU Taler
|
2022-12-16 20:59:37 +01:00
|
|
|
(C) 2021-2023 Taler Systems S.A.
|
2022-10-24 10:46:14 +02:00
|
|
|
|
|
|
|
GNU Taler is free software; you can redistribute it and/or modify it under the
|
|
|
|
terms of the GNU General Public License as published by the Free Software
|
|
|
|
Foundation; either version 3, or (at your option) any later version.
|
|
|
|
|
|
|
|
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
|
|
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
|
|
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
|
|
|
*/
|
|
|
|
|
2022-11-04 14:24:29 +01:00
|
|
|
import { WithId } from "../declaration.js";
|
2022-10-24 10:46:14 +02:00
|
|
|
|
|
|
|
/**
|
2022-12-19 16:23:39 +01:00
|
|
|
*
|
|
|
|
* @author Sebastian Javier Marchano (sebasjm)
|
|
|
|
*/
|
2022-10-24 10:46:14 +02:00
|
|
|
|
|
|
|
export interface Actions<T extends WithId> {
|
|
|
|
element: T;
|
2022-12-19 16:23:39 +01:00
|
|
|
type: "DELETE" | "UPDATE";
|
2022-10-24 10:46:14 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function notEmpty<TValue>(value: TValue | null | undefined): value is TValue {
|
|
|
|
return value !== null && value !== undefined;
|
|
|
|
}
|
|
|
|
|
2022-12-19 16:23:39 +01:00
|
|
|
export function buildActions<T extends WithId>(
|
|
|
|
instances: T[],
|
|
|
|
selected: string[],
|
|
|
|
action: "DELETE",
|
|
|
|
): Actions<T>[] {
|
|
|
|
return selected
|
|
|
|
.map((id) => instances.find((i) => i.id === id))
|
2022-10-24 10:46:14 +02:00
|
|
|
.filter(notEmpty)
|
2022-12-19 16:23:39 +01:00
|
|
|
.map((id) => ({ element: id, type: action }));
|
2022-10-24 10:46:14 +02:00
|
|
|
}
|
2022-11-04 15:18:30 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* For any object or array, return the same object if is not empty.
|
2022-12-19 16:23:39 +01:00
|
|
|
* not empty:
|
2022-11-04 15:18:30 +01:00
|
|
|
* - for arrays: at least one element not undefined
|
|
|
|
* - for objects: at least one property not undefined
|
2022-12-19 16:23:39 +01:00
|
|
|
* @param obj
|
|
|
|
* @returns
|
2022-11-04 15:18:30 +01:00
|
|
|
*/
|
2022-12-19 16:23:39 +01:00
|
|
|
export function undefinedIfEmpty<
|
|
|
|
T extends Record<string, unknown> | Array<unknown>,
|
|
|
|
>(obj: T): T | undefined {
|
|
|
|
if (obj === undefined) return undefined;
|
|
|
|
return Object.values(obj).some((v) => v !== undefined) ? obj : undefined;
|
2022-11-04 15:18:30 +01:00
|
|
|
}
|