You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import {Device} from "../models/Devices"; import {deleteRequest, getRequest, postRequest, putRequest} from "./shared";
interface DeviceRepository { fetchAll(): Promise<Device[]> save(device: Partial<Device>): Promise<boolean> delete(id: string): Promise<boolean> }
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<Device>): Promise<boolean> { 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<boolean> { try { await deleteRequest(`/devices/${id}`); return true; } catch (e) { return false; } }, };
|