40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
|
export class Theme {
|
||
|
constructor(res) {
|
||
|
if (res) {
|
||
|
this.update(res);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
update({ id, name, urlid, path, authors, intro, headline, image, partner_img, partner_href, partner_txt }) {
|
||
|
this.id = id;
|
||
|
this.name = name;
|
||
|
this.urlid = urlid;
|
||
|
this.path = path;
|
||
|
this.authors = authors;
|
||
|
this.intro = intro;
|
||
|
this.headline = headline;
|
||
|
this.image = image;
|
||
|
this.partner_img = partner_img;
|
||
|
this.partner_href = partner_href;
|
||
|
this.partner_txt = partner_txt;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export async function getThemes() {
|
||
|
const res = await fetch(`api/themes`, {headers: {'Accept': 'application/json'}})
|
||
|
if (res.status == 200) {
|
||
|
return (await res.json()).map((t) => new Theme(t));
|
||
|
} else {
|
||
|
throw new Error((await res.json()).errmsg);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export async function getTheme(tid) {
|
||
|
const res = await fetch(`api/themes/${tid}`, {headers: {'Accept': 'application/json'}})
|
||
|
if (res.status == 200) {
|
||
|
return new Theme(await res.json());
|
||
|
} else {
|
||
|
throw new Error((await res.json()).errmsg);
|
||
|
}
|
||
|
}
|