aboutsummaryrefslogtreecommitdiff
path: root/docker/nginx/sites/www/src/todos.ts
blob: b69f5241535aa5fd2a20caa753268c755a9008ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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;
  }
}