|
@@ -11,7 +11,7 @@ class Media {
|
|
|
this.version = data.version;
|
|
this.version = data.version;
|
|
|
|
|
|
|
|
this.tags = [];
|
|
this.tags = [];
|
|
|
- this.writeAccess = data.accessType === 2;
|
|
|
|
|
|
|
+ this.writeAccess = data.writeAccess !== undefined ? data.writeAccess : (data.accessType === 2);
|
|
|
this.thumbnail = `/api/media/thumbnail/${data.fixedSum}.jpg`;
|
|
this.thumbnail = `/api/media/thumbnail/${data.fixedSum}.jpg`;
|
|
|
this.original = `/api/media/original/${data.fixedSum}`;
|
|
this.original = `/api/media/original/${data.fixedSum}`;
|
|
|
this.ui = null;
|
|
this.ui = null;
|
|
@@ -74,7 +74,7 @@ class MediaStorage extends EventTarget
|
|
|
medias = [];
|
|
medias = [];
|
|
|
oldest = null;
|
|
oldest = null;
|
|
|
newest = null;
|
|
newest = null;
|
|
|
- dbVersion = 0;
|
|
|
|
|
|
|
+ #dbVersion = 0;
|
|
|
loadingVersion = 0;
|
|
loadingVersion = 0;
|
|
|
|
|
|
|
|
constructor() {
|
|
constructor() {
|
|
@@ -89,12 +89,13 @@ class MediaStorage extends EventTarget
|
|
|
this.medias = [];
|
|
this.medias = [];
|
|
|
this.oldest = null;
|
|
this.oldest = null;
|
|
|
this.newest = null;
|
|
this.newest = null;
|
|
|
- this.dbVersion = 0;
|
|
|
|
|
|
|
+ this.#dbVersion = 0;
|
|
|
this.loadingVersion = 0;
|
|
this.loadingVersion = 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- rebuildMetaList() {
|
|
|
|
|
|
|
+ async rebuildMetaList() {
|
|
|
this.#reset();
|
|
this.#reset();
|
|
|
|
|
+ await window.indexedData.clean();
|
|
|
this.dispatchEvent(new CustomEvent("rebuildMedia"));
|
|
this.dispatchEvent(new CustomEvent("rebuildMedia"));
|
|
|
window.chronology.reset();
|
|
window.chronology.reset();
|
|
|
this.downloadMetaList();
|
|
this.downloadMetaList();
|
|
@@ -104,6 +105,24 @@ class MediaStorage extends EventTarget
|
|
|
this.downloadMetaList(true);
|
|
this.downloadMetaList(true);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ async restoreMetaList() {
|
|
|
|
|
+ if (this.isLoading())
|
|
|
|
|
+ return;
|
|
|
|
|
+ this.#isLoading = true;
|
|
|
|
|
+ document.getElementById("pch-infiniteScrollLoading").classList.remove("hidden");
|
|
|
|
|
+ try {
|
|
|
|
|
+ await LoadingTasks.push(async () => {
|
|
|
|
|
+ let data = await window.indexedData.listMedias();
|
|
|
|
|
+ this.pushAll(data.medias.map(x => new Media(x)));
|
|
|
|
|
+ this.#updateDbVersion(data.version);
|
|
|
|
|
+ this.#isLoading = false;
|
|
|
|
|
+ });
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ console.error(err);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.downloadMetaList(true);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
downloadMetaList(isUpdate) {
|
|
downloadMetaList(isUpdate) {
|
|
|
if (this.isLoading())
|
|
if (this.isLoading())
|
|
|
return;
|
|
return;
|
|
@@ -115,15 +134,16 @@ class MediaStorage extends EventTarget
|
|
|
let oldest = isUpdate !== true ? (this.oldest?.date?.getTime() || 0) : 0;
|
|
let oldest = isUpdate !== true ? (this.oldest?.date?.getTime() || 0) : 0;
|
|
|
let oldestArg = oldest ? `&from=${oldest}` : "";
|
|
let oldestArg = oldest ? `&from=${oldest}` : "";
|
|
|
let requestCount = 300;
|
|
let requestCount = 300;
|
|
|
- $.get(`/api/media/list?count=${requestCount}${chronology}${oldestArg}&version=${this.dbVersion}`, data => {
|
|
|
|
|
|
|
+ $.get(`/api/media/list?count=${requestCount}${chronology}${oldestArg}&version=${this.#dbVersion}`, data => {
|
|
|
this.pushAll(data.data.map(i => new Media(i)));
|
|
this.pushAll(data.data.map(i => new Media(i)));
|
|
|
if (data.first || data.last)
|
|
if (data.first || data.last)
|
|
|
window.chronology.rebuildRange(data.first, data.last);
|
|
window.chronology.rebuildRange(data.first, data.last);
|
|
|
this.#isLoading = false;
|
|
this.#isLoading = false;
|
|
|
if ((data.data?.length || 0) < requestCount) {
|
|
if ((data.data?.length || 0) < requestCount) {
|
|
|
document.getElementById("pch-infiniteScrollLoading").classList.add("hidden");
|
|
document.getElementById("pch-infiniteScrollLoading").classList.add("hidden");
|
|
|
- this.dbVersion = Math.max(this.dbVersion, this.loadingVersion);
|
|
|
|
|
|
|
+ this.#updateDbVersion(this.loadingVersion);
|
|
|
window.ReloadFilters(MediaStorage.Instance);
|
|
window.ReloadFilters(MediaStorage.Instance);
|
|
|
|
|
+ this.dispatchEvent(new CustomEvent("doneLoading"));
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
setTimeout(this.downloadMetaList.bind(this, isUpdate), 25);
|
|
setTimeout(this.downloadMetaList.bind(this, isUpdate), 25);
|
|
@@ -133,6 +153,12 @@ class MediaStorage extends EventTarget
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ getDbVersion() { return this.#dbVersion; }
|
|
|
|
|
+
|
|
|
|
|
+ #updateDbVersion(version) {
|
|
|
|
|
+ this.#dbVersion = Math.max(this.#dbVersion, version);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
#pushMeta(metaKey, metaVal) {
|
|
#pushMeta(metaKey, metaVal) {
|
|
|
if (metaKey === 'dateTime')
|
|
if (metaKey === 'dateTime')
|
|
|
return;
|
|
return;
|