Skip to content

Commit

Permalink
chore: make archive extract lazy
Browse files Browse the repository at this point in the history
  • Loading branch information
Okabe-Rintarou-0 committed Mar 8, 2024
1 parent d2bd990 commit 9ad5e34
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
},
"package": {
"productName": "SJTU Canvas Helper",
"version": "1.1.2"
"version": "1.1.3"
},
"tauri": {
"allowlist": {
Expand Down
21 changes: 13 additions & 8 deletions src/components/archive_renderer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,14 @@ export default function ArchiveRenderer({
const [selectedPath, setSelectedPath] = useState<string>("");
const [messageApi, contextHolder] = useMessage();
const [treeData, setTreeData] = useState<TreeDataNode | undefined>(undefined);
const [fileMap, setFileMap] = useState<Map<string, File | null> | undefined>(undefined);
const [fileMap, setFileMap] = useState<Map<string, any> | undefined>(undefined);
const [selectedDoc, setSelectedDoc] = useState<IDocument | undefined>(undefined);


useEffect(() => { parse(); }, []);
useEffect(() => {
parse();

}, []);

const checkIsBanned = (fileName: string, isDir: boolean) => {
if (BLACK_LIST.find(banned => banned.name === fileName && banned.dir === isDir)) {
Expand Down Expand Up @@ -72,7 +75,7 @@ export default function ArchiveRenderer({
}
if (!isDir) {
try {
fileMap.set(thisPath, await entry.extract());
fileMap.set(thisPath, entry);
} catch (e) {
fileMap.set(thisPath, null);
messageApi.error(`文件${thisPath}解压失败!🙅🙅🙅`)
Expand Down Expand Up @@ -103,8 +106,9 @@ export default function ArchiveRenderer({

const onSelect: TreeProps['onSelect'] = async (_, info) => {
let path = info.node.key as string;
let file = fileMap?.get(path);
if (file) {
let fileReader = fileMap?.get(path);
if (fileReader) {
let file = await fileReader.extract();
let doc = {
uri: URL.createObjectURL(file),
fileName: file.name,
Expand All @@ -114,19 +118,20 @@ export default function ArchiveRenderer({
setSelectedPath(path);
} else {
setSelectedDoc(undefined);
if (file === null) {
if (fileReader === null) {
messageApi.warning(`当前文件${path}解压失败,无法预览!😩😩😩`);
}
}
};

const handleDownloadSubFile = async () => {
if (selectedDoc) {
let file = fileMap?.get(selectedPath);
if (!file) {
let fileReader = fileMap?.get(selectedPath);
if (!fileReader) {
return;
}
try {
let file = await fileReader.extract();
let buffer = await file.arrayBuffer();
let content = Array.from<number>(new Uint8Array(buffer));
let fileName = selectedDoc.fileName ?? "downloaded";
Expand Down
6 changes: 4 additions & 2 deletions src/components/img_renderer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ import { getBase64Data } from "../lib/utils";

const prefixMap: Record<string, string> = {
svg: "data:image/svg+xml;base64,",
ico: "data:image/x-icon;base64,"
ico: "data:image/x-icon;base64,",
webp: "data:image/webp;base64,",
avif: "data:image/avif;base64,",
}

export default function ImageRenderer({
Expand All @@ -15,5 +17,5 @@ export default function ImageRenderer({
return <img src={base64} />
}

ImageRenderer.fileTypes = ["svg", "ico"];
ImageRenderer.fileTypes = ["svg", "ico", "avif", "webp"];
ImageRenderer.weight = 1;

0 comments on commit 9ad5e34

Please sign in to comment.