summary refs log tree commit diff
path: root/v2/client.ts
blob: 3e09f7e701a6b4c445545d44b654f554836399aa (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

import { Screen } from "./screen.ts";
import type { Text } from "./elements.ts";
import strftime from "./strftime.js";

export let token: string;
export let account;
export const connection = new WebSocket("wss://api.meower.org/v0/cloudlink?v=1")

export let home: any[] = [];

let screen: Screen;

export function setScreen(screenN: Screen) {
    screen = screenN
}

export async function login(username: string, password: string) {
    screen.logs.push(`logging in as ${username}`)
    const authr = await (await fetch("https://api.meower.org/auth/login", {
        method: "post",
        headers: {
            "content-type": "application/json"
        },
        body: JSON.stringify({
            username,
            password
        })
    })).json();
    screen.logs.push(`got auth response (${authr.error ? "error" : "not error"})`)
    token = authr.token;
    account = authr.account;
    screen.logs.push(`Got token ${token}`);
    connection.addEventListener("message", (ev) => {
        const data = JSON.parse(ev.data.toString());
        screen.logs.push("INC: " + JSON.stringify(data))
        if(data.cmd != "post") return;
        home.push(data.val);
        const textHome: string[] = home.map(p => `[${strftime("%H:%M:%S", new Date(p.t.e * 1000))}] ${p.u}: ${p.p}`);
        const homeElem: Text = screen.elements.get("home") as Text;
        homeElem.text = textHome.join("\n")+"\n";
        screen.render()        
    })
}

export async function loadHome(screen: Screen) {
    home = (await (await fetch("https://api.meower.org/home")).json()).autoget.reverse();
    const textHome: string[] = home.map(p => `[${strftime("%H:%M:%S")}] ${p.u}: ${p.p}`);
    const homeElem: Text = screen.elements.get("home") as Text;
    homeElem.text = textHome.join("\n")+"\n";
    screen.logs.push("loadHome ran", home.length.toString())
    screen.render()
}

export async function sendHome(post:string) {
    screen.logs.push("sendHome ran", home.length.toString())
    fetch("https://api.meower.org/home", {
        method: "POST",
        headers: {
            token,
            "content-type": "application/json"
        },
        body: JSON.stringify({
            content: post
        })
    }).then(async r=>screen.logs.push(`Got send response (${r.status} ${r.statusText}) ${await r.text()}`))
}