!1258 优化:文件缓存到浏览器DB

pull/1258/MERGE
ZoeLeeFZ 4 years ago committed by ChenX
parent b8cd012141
commit 21330b230a

@ -24,9 +24,10 @@ export class ReOpen implements Command
if (fileServer.m_CurFileId) if (fileServer.m_CurFileId)
{ {
let id = fileServer.m_CurFileId; let id = fileServer.m_CurFileId;
let md5 = fileServer.CurrentFileMd5;
app.CreateDocument(); app.CreateDocument();
fileServer.Clear(); fileServer.Clear();
fileServer.OpenFile(id); fileServer.OpenFile(id, md5);
} }
} }
} }

@ -1,5 +1,4 @@
import { app } from "../ApplicationServices/Application"; import { app } from "../ApplicationServices/Application";
import { appCache } from "../Common/AppCache";
import { FileUrls } from "../Common/HostUrl"; import { FileUrls } from "../Common/HostUrl";
import { DirectoryId, PostJson, RequestStatus } from "../Common/Request"; import { DirectoryId, PostJson, RequestStatus } from "../Common/Request";
import { inflate } from "../Common/SerializeMaterial"; import { inflate } from "../Common/SerializeMaterial";
@ -11,6 +10,8 @@ import { AppConfirm } from "../UI/Components/Common/Confirm";
import { TempEditor } from "../Editor/TempEditor"; import { TempEditor } from "../Editor/TempEditor";
import { AppToaster } from "../UI/Components/Toaster"; import { AppToaster } from "../UI/Components/Toaster";
import { Intent } from "@blueprintjs/core"; import { Intent } from "@blueprintjs/core";
import { IndexedDbStore, StoreName } from "../IndexedDb/IndexedDbStore";
import { GetIndexDBID } from "../Common/Utils";
export interface IFileInfo export interface IFileInfo
{ {
@ -118,9 +119,14 @@ export class FileServer extends Singleton
} }
async GetFileInfo(fid: string, md5: string): Promise<{ name: string; file?: string; code: string; }> async GetFileInfo(fid: string, md5: string): Promise<{ name: string; file?: string; code: string; }>
{ {
let key = `f${fid}-${md5}`; let store = await IndexedDbStore.CADStore();
if (md5 && appCache.has(key))
return appCache.get(key); let fileCache = await store.Get(StoreName.Dwg, GetIndexDBID(fid));
if (fileCache?.code === md5)
{
return fileCache;
}
else else
{ {
let data = await PostJson(FileUrls.detail, { file_id: fid }); let data = await PostJson(FileUrls.detail, { file_id: fid });
@ -131,12 +137,17 @@ export class FileServer extends Singleton
file: inflate(data.files.file), file: inflate(data.files.file),
code: data.files.code code: data.files.code
}; };
appCache.set(`f${fid}-${data.files.code}`, f); await this.CacheFileInfo(fid, f);
return f; return f;
} }
} }
return null; return null;
} }
async CacheFileInfo(fid: string, info: IFileInfo)
{
let dbStore = await IndexedDbStore.CADStore();
await dbStore.Put(StoreName.Dwg, GetIndexDBID(fid), info);
}
async UploadFile(fileInfo: IFileInfo) async UploadFile(fileInfo: IFileInfo)
{ {
let info: IFileInfo = { let info: IFileInfo = {
@ -151,14 +162,12 @@ export class FileServer extends Singleton
let data = await PostJson(FileUrls.create, info); let data = await PostJson(FileUrls.create, info);
if (data.err_code === RequestStatus.Ok) if (data.err_code === RequestStatus.Ok)
{ {
let finfo: any = {}; let finfo: IFileInfo = {
if (info.file) file: inflate(info.file),
finfo.file = inflate(info.file); name: info.name,
code: data.files.code
if (info.name) };
finfo.name = info.name; await this.CacheFileInfo(data.files.file_id, finfo);
appCache.set(`f${data.files.file_id}-${data.files.code}`, finfo);
} }
return data; return data;
} }
@ -169,13 +178,13 @@ export class FileServer extends Singleton
let data = await PostJson(FileUrls.update, fileInfo); let data = await PostJson(FileUrls.update, fileInfo);
if (data.err_code === RequestStatus.Ok) if (data.err_code === RequestStatus.Ok)
{ {
let key = `f${data.files.file_id}-${data.files.code}`; let finfo: IFileInfo = {
let finfo: IFileInfo = {}; file: inflate(fileInfo.file),
if (fileInfo.file) name: data.files.name,
finfo.file = inflate(fileInfo.file); code: data.files.code
if (fileInfo.name) };
finfo.name = fileInfo.name;
appCache.set(key, finfo); await this.CacheFileInfo(data.files.file_id, finfo);
} }
return data; return data;
} }

@ -157,11 +157,13 @@ export class IndexedDbStore
Put(storeName: StoreName, key: string, value: any) Put(storeName: StoreName, key: string, value: any)
{ {
if (!key) return;
let tr = this.db.transaction(storeName, DbMode.ReadWrite); let tr = this.db.transaction(storeName, DbMode.ReadWrite);
return tr.objectStore(storeName).put(value, key); return tr.objectStore(storeName).put(value, key);
} }
async Get(storeName: StoreName, key: string) async Get(storeName: StoreName, key: string)
{ {
if (!key) return;
return new Promise<any>((res) => return new Promise<any>((res) =>
{ {
let tr = this.db.transaction(storeName, DbMode.ReadOnly); let tr = this.db.transaction(storeName, DbMode.ReadOnly);

@ -441,7 +441,7 @@ export class UserConfigStore extends Singleton
{ {
let indexDbStore = await IndexedDbStore.CADStore(); let indexDbStore = await IndexedDbStore.CADStore();
let data = await indexDbStore.Get(StoreName.FileCache, localStorage.getItem(StoreageKeys.Uid)); let data = await indexDbStore.Get(StoreName.FileCache, localStorage.getItem(StoreageKeys.Uid) || "");
if (data) if (data)
{ {

Loading…
Cancel
Save