Files
htwkalender/frontend/src/api/createFeed.ts
2024-02-02 17:07:53 +01:00

76 lines
1.6 KiB
TypeScript

import { Module } from "../model/module.ts";
export async function createIndividualFeed(modules: Module[]): Promise<string> {
let token = "";
await fetch("/api/createFeed", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(modules),
})
.then((response) => {
return response.json();
})
.then((response) => {
token = response;
});
return token;
}
interface FeedResponse {
modules: FeedModule[];
collectionId: string;
collectionName: string;
id: string;
retrieved: string;
updated: string;
}
interface FeedModule {
course: string;
name: string;
reminder: boolean;
userDefinedName: string;
uuid: string;
}
export async function saveIndividualFeed(
token: string,
modules: Module[],
): Promise<string> {
await fetch("/api/collections/feeds/records/" + token, {
method: "PATCH",
headers: {
"Content-Type": "application/json",
},
body: '{"modules":' + JSON.stringify(modules) + "}",
})
.then(async (response) => {
// parse response.json to FeedResponse
const feedResponse: FeedResponse = await response.json();
return feedResponse;
})
.then((response: FeedResponse) => {
token = response.id;
});
return token;
}
export async function deleteIndividualFeed(token: string): Promise<void> {
await fetch("/api/feed?token=" + token, {
method: "DELETE",
})
.then((response) => {
if (response.ok) {
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
})
.catch((error) => {
return Promise.reject(error);
});
}