mlpcardgame/src/mlpccg/images.ts

38 lines
912 B
TypeScript

import { Database } from "./database";
const imgBaseURL = "https://mcg.zyg.ovh/images/cards/";
let imageSource: "local" | "remote" = "remote";
export function remoteImageURL(cardid: string): string {
return `${imgBaseURL}${cardid}.webp`;
}
export async function cardImageURL(cardid: string): Promise<string> {
if (!Database) {
return remoteImageURL(cardid);
}
switch (cardImageSource()) {
case "local":
const card = await Database.images.get(`${cardid}.webp`);
if (!card) {
return remoteImageURL(cardid);
}
return URL.createObjectURL(card.image);
//TODO
case "remote":
return remoteImageURL(cardid);
}
}
export function cardImageSource() {
return imageSource;
}
export async function refreshCardSource() {
if (!Database) {
return;
}
const count = await Database.images.count();
imageSource = count > 1900 ? "local" : "remote";
}