mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender-pwa.git
synced 2026-01-16 20:22:24 +01:00
82 lines
1.8 KiB
TypeScript
82 lines
1.8 KiB
TypeScript
import { Module } from "../model/module.ts";
|
|
|
|
export async function createIndividualFeed(modules: Module[]): Promise<string> {
|
|
try {
|
|
const response = await fetch("/api/createFeed", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify(modules),
|
|
});
|
|
|
|
if (
|
|
response.status === 429 ||
|
|
response.status === 500 ||
|
|
response.status != 200
|
|
) {
|
|
return Promise.reject(response.statusText);
|
|
}
|
|
|
|
return await response.json();
|
|
} catch (error) {
|
|
// Catch possible errors and return an unfilled promise
|
|
return Promise.reject(error);
|
|
}
|
|
}
|
|
|
|
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);
|
|
});
|
|
}
|