You've already forked AstralRinth
forked from xxxOFFxxx/AstralRinth
* refactor: start refactor of pyro servers module-based class * refactor: finish modules * refactor: start on type checking + matching api * refactor: finish pyro servers composable refactor * refactor: pyro -> modrinth * fix: import not refactored * fix: broken power action enums * fix: remove pyro mentions * fix: lint * refactor: fix option pages * fix: error renames * remove empty pyro-servers.ts file --------- Signed-off-by: IMB11 <hendersoncal117@gmail.com> Co-authored-by: Prospector <prospectordev@gmail.com>
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import type { Mod, ContentType } from "@modrinth/utils";
|
|
import { useServersFetch } from "../servers-fetch.ts";
|
|
import { ServerModule } from "./base.ts";
|
|
|
|
export class ContentModule extends ServerModule {
|
|
data: Mod[] = [];
|
|
|
|
async fetch(): Promise<void> {
|
|
const mods = await useServersFetch<Mod[]>(`servers/${this.serverId}/mods`, {}, "content");
|
|
this.data = mods.sort((a, b) => (a?.name ?? "").localeCompare(b?.name ?? ""));
|
|
}
|
|
|
|
async install(contentType: ContentType, projectId: string, versionId: string): Promise<void> {
|
|
await useServersFetch(`servers/${this.serverId}/mods`, {
|
|
method: "POST",
|
|
body: {
|
|
rinth_ids: { project_id: projectId, version_id: versionId },
|
|
install_as: contentType,
|
|
},
|
|
});
|
|
}
|
|
|
|
async remove(path: string): Promise<void> {
|
|
await useServersFetch(`servers/${this.serverId}/deleteMod`, {
|
|
method: "POST",
|
|
body: { path },
|
|
});
|
|
}
|
|
|
|
async reinstall(replace: string, projectId: string, versionId: string): Promise<void> {
|
|
await useServersFetch(`servers/${this.serverId}/mods/update`, {
|
|
method: "POST",
|
|
body: { replace, project_id: projectId, version_id: versionId },
|
|
});
|
|
}
|
|
}
|