aboutsummaryrefslogtreecommitdiff
path: root/docker/nginx/sites/www/src/todos.ts
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2024-12-19 21:42:01 +0800
commita7fb0508867ee53934be18a6606aa8bc12c2645b (patch)
tree5994f0a62733b13f9f330e3515260ae20dc4a0bd /docker/nginx/sites/www/src/todos.ts
parent7692763f83ad1be735b0b9e9ab0af8ce666d8de8 (diff)
downloadcrupest-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.ts29
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;
+ }
+}