diff options
author | crupest <crupest@outlook.com> | 2024-11-11 01:12:29 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2024-12-19 21:42:01 +0800 |
commit | a7fb0508867ee53934be18a6606aa8bc12c2645b (patch) | |
tree | 5994f0a62733b13f9f330e3515260ae20dc4a0bd /docker/nginx/sites/www/src/todos.ts | |
parent | 7692763f83ad1be735b0b9e9ab0af8ce666d8de8 (diff) | |
download | crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.gz crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.bz2 crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.zip |
HALF WORK: 2024.12.19
Re-organize file structure.
Diffstat (limited to 'docker/nginx/sites/www/src/todos.ts')
-rw-r--r-- | docker/nginx/sites/www/src/todos.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/docker/nginx/sites/www/src/todos.ts b/docker/nginx/sites/www/src/todos.ts new file mode 100644 index 0000000..b69f524 --- /dev/null +++ b/docker/nginx/sites/www/src/todos.ts @@ -0,0 +1,29 @@ +export interface Todo { + status: string; + title: string; + closed: boolean; + color: string; +} + +export async function fetchTodos(): Promise<Todo[]> { + console.log("Try to fetch TODOs from server."); + + if (process.env.NODE_ENV !== "production") { + console.log("YaY! We are developers. 🍻 Use mock TODOs. (After 2s)"); + // await new Promise((resolve) => setTimeout(resolve, 2000)); + return (await import("./mock-todos")).default; + } else { + const res = await fetch("/api/todos"); + const body: Todo[] = await res.json(); + + if (res.status !== 200) { + console.error( + `Failed to get TODOs. Status: ${res.status}. Body: ${body}`, + ); + throw new Error( + "Failed to fetch TODOs. (Maybe due to rate limit. Please try later.)", + ); + } + return body; + } +} |