import {Device} from "../models/Devices"; import {deleteRequest, getRequest, postRequest, putRequest} from "./shared"; interface DeviceRepository { fetchAll(): Promise save(device: Partial): Promise delete(id: string): Promise } export default function deviceRepo(): DeviceRepository { switch (import.meta.env.VITE_MODE) { case "webapp": return defaultImpl; case "chrome-plugin": default: throw new Error("Not implemented"); } } const defaultImpl: DeviceRepository = { fetchAll() { return getRequest("/devices") || null; }, async save({id, name, connectionString}: Partial): Promise { try { if (id) { await putRequest(`/devices/${id}`, {name, connectionString}); return true; } else if (name && connectionString) { await postRequest("/devices", {name, connectionString}); return true; } return false; } catch (e) { return false; } }, async delete(id: string): Promise { try { await deleteRequest(`/devices/${id}`); return true; } catch (e) { return false; } }, };