mirror of
https://github.com/Finsys/dockhand.git
synced 2026-06-17 19:09:33 +03:00
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { resolve } from 'path';
|
|
import { existsSync, mkdirSync, writeFileSync, unlinkSync, readFileSync } from 'fs';
|
|
|
|
function getIconsDir(): string {
|
|
const dataDir = process.env.DATA_DIR || './data';
|
|
const dir = resolve(dataDir, 'icons');
|
|
if (!existsSync(dir)) {
|
|
mkdirSync(dir, { recursive: true });
|
|
}
|
|
return dir;
|
|
}
|
|
|
|
export function saveEnvironmentIcon(envId: number, base64Data: string): void {
|
|
const dir = getIconsDir();
|
|
// Strip data URL prefix if present
|
|
const base64 = base64Data.replace(/^data:image\/\w+;base64,/, '');
|
|
const buffer = Buffer.from(base64, 'base64');
|
|
writeFileSync(resolve(dir, `env-${envId}.webp`), buffer);
|
|
}
|
|
|
|
export function deleteEnvironmentIcon(envId: number): void {
|
|
const dir = getIconsDir();
|
|
const path = resolve(dir, `env-${envId}.webp`);
|
|
if (existsSync(path)) {
|
|
unlinkSync(path);
|
|
}
|
|
}
|
|
|
|
export function getEnvironmentIconBuffer(envId: number): Buffer | null {
|
|
const dir = getIconsDir();
|
|
const path = resolve(dir, `env-${envId}.webp`);
|
|
if (!existsSync(path)) {
|
|
return null;
|
|
}
|
|
return readFileSync(path);
|
|
}
|