Verified Commit 981da638 authored by Jakob Moser's avatar Jakob Moser
Browse files

Add first draft of dedicated Agenda model class

parent a7a0d69d
Loading
Loading
Loading
Loading
+44 −0
Changes for portal/static/js/model/Agenda.mjs: 44 added lines, 0 removed lines.
Original line number Diff line number Diff line
import { getKey } from "../account.mjs"

export class Agenda {
    items
    message = "Wird geladen..."

    get url() {
        return "/api/v0/agendas/-/items"
    }

    get #headers() {
        return getKey() ? { Authorization: `Bearer ${getKey().secret}` } : {}
    }

    async fetch() {
        try {
            this.items = await m.request({
                method: "GET",
                url: this.url,
                headers: this.#headers,
            })
        } catch (e) {
            if (e.code === 401) {
                this.message =
                    "Melde dich an Portal an, um die Tagesordnung anzuzeigen."
            } else {
                this.message = "Die Tagesordnung konnte nicht geladen werden."
            }
        }
    }

    async save() {
        // TODO Somehow handle error?
        this.items = await m.request({
            method: "PATCH",
            url: this.url,
            headers: this.#headers,
            body: this.items,
        })
    }
}

// Singleton
export const agenda = new Agenda()