Files
hydra/src/main/events/misc/get-or-cache-image.ts
2024-04-21 06:26:29 +01:00

38 lines
751 B
TypeScript

import { imageCacheRepository } from "@main/repository";
import { registerEvent } from "../register-event";
import { getImageBase64 } from "@main/helpers";
import { logger } from "@main/services";
const getOrCacheImage = async (
_event: Electron.IpcMainInvokeEvent,
url: string
) => {
const cache = await imageCacheRepository.findOne({
where: {
url,
},
});
if (cache) return cache.data;
getImageBase64(url).then((data) =>
imageCacheRepository
.save({
url,
data,
})
.catch(() => {
logger.error(`Failed to cache image "${url}"`, {
method: "getOrCacheImage",
});
})
);
return url;
};
registerEvent(getOrCacheImage, {
name: "getOrCacheImage",
});