import { useEffect, useState } from "react"; import { BsmProgressBar } from "renderer/components/progress-bar/bsm-progress-bar.component"; import { BsmImage } from "renderer/components/shared/bsm-image.component"; import TitleBar from "renderer/components/title-bar/title-bar.component"; import { IpcService } from "renderer/services/ipc.service"; import { ProgressBarService } from "renderer/services/progress-bar.service"; import { ThemeService } from "renderer/services/theme.service"; import { ModelSaberService } from "renderer/services/thrird-partys/model-saber.service"; import { MSModel } from "shared/models/model-saber/model-saber.model"; import defaultImage from '../../../../assets/images/default-version-img.jpg' export default function OneClickDownloadModel() { const ipc = IpcService.getInstance(); const themeService = ThemeService.getInstance(); const modelSaber = ModelSaberService.getInstance(); const progress = ProgressBarService.getInstance(); const [model, setModel] = useState(null); const cover = model ? model.thumbnail : null; const title = model ? model.name : null; useEffect(() => { const sub = themeService.theme$.subscribe(() => { if(themeService.isDark || (themeService.isOS && window.matchMedia('(prefers-color-scheme: dark)').matches)){ document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } }); const promise = new Promise(async (resolve, reject) => { const infos = await ipc.send<{id: string, type: string}>("one-click-model-info"); if(!infos.success){ reject(); } const model = await modelSaber.getModelById(infos.data.id); setModel(() => model); progress.open(); // Download model }); promise.finally(() => console.log("close")); return () => { sub.unsubscribe(); } }, []) return (
{cover && }

{title}

) }