diff --git a/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue b/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue
index edf0e182..6ac25e0b 100644
--- a/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue
+++ b/client/components/Reader/HelpPage/CommonHelpPage/CommonHelpPage.vue
@@ -4,7 +4,8 @@
- загрузка любой страницы интернета
- изменение цвета фона, текста, размер и тип шрифта и прочее
- - установка и запоминание текущей позиции и настроек в браузере (в будущем планируется сохранение и на сервер)
+ - установка и запоминание текущей позиции и настроек в браузере и на сервере
+ - синхронизация данных (настроек и читаемых книг) между различными устройствами
- кэширование файлов книг на клиенте и на сервере
- открытие книг с локального диска
- плавный скроллинг текста
diff --git a/client/components/Reader/ServerStorage/ServerStorage.vue b/client/components/Reader/ServerStorage/ServerStorage.vue
index ac7810a1..d59b598d 100644
--- a/client/components/Reader/ServerStorage/ServerStorage.vue
+++ b/client/components/Reader/ServerStorage/ServerStorage.vue
@@ -37,6 +37,7 @@ export default @Component({
class ServerStorage extends Vue {
created() {
this.inited = false;
+ this.keyInited = false;
this.commit = this.$store.commit;
this.prevServerStorageKey = null;
this.$root.$on('generateNewServerStorageKey', () => {this.generateNewServerStorageKey()});
@@ -88,6 +89,7 @@ class ServerStorage extends Vue {
if (this.prevServerStorageKey != this.serverStorageKey) {
this.prevServerStorageKey = this.serverStorageKey;
this.hashedStorageKey = utils.toBase58(cryptoUtils.sha256(this.serverStorageKey));
+ this.keyInited = true;
await this.loadProfiles(force);
this.checkCurrentProfile();
@@ -163,7 +165,7 @@ class ServerStorage extends Vue {
}
async loadSettings(force) {
- if (!this.serverSyncEnabled || !this.currentProfile)
+ if (!this.keyInited || !this.serverSyncEnabled || !this.currentProfile)
return;
const setsId = `settings-${this.currentProfile}`;
@@ -206,7 +208,7 @@ class ServerStorage extends Vue {
}
async saveSettings() {
- if (!this.serverSyncEnabled || !this.currentProfile || this.savingSettings)
+ if (!this.keyInited || !this.serverSyncEnabled || !this.currentProfile || this.savingSettings)
return;
const diff = utils.getObjDiff(this.oldSettings, this.settings);
@@ -252,7 +254,7 @@ class ServerStorage extends Vue {
}
async loadProfiles(force) {
- if (!this.serverSyncEnabled)
+ if (!this.keyInited || !this.serverSyncEnabled)
return;
const oldRev = this.profilesRev;
@@ -294,7 +296,7 @@ class ServerStorage extends Vue {
}
async saveProfiles() {
- if (!this.serverSyncEnabled || this.savingProfiles)
+ if (!this.keyInited || !this.serverSyncEnabled || this.savingProfiles)
return;
const diff = utils.getObjDiff(this.oldProfiles, this.profiles);
@@ -346,7 +348,7 @@ class ServerStorage extends Vue {
}
async loadRecent(force) {
- if (!this.serverSyncEnabled)
+ if (!this.keyInited || !this.serverSyncEnabled)
return;
const oldRev = bookManager.recentRev;
@@ -416,7 +418,7 @@ class ServerStorage extends Vue {
}
async saveRecent() {
- if (!this.serverSyncEnabled || this.savingRecent)
+ if (!this.keyInited || !this.serverSyncEnabled || this.savingRecent)
return;
const bm = bookManager;
@@ -462,7 +464,7 @@ class ServerStorage extends Vue {
}
async saveRecentLast(force = false) {
- if (!this.serverSyncEnabled || this.savingRecentLast)
+ if (!this.keyInited || !this.serverSyncEnabled || this.savingRecentLast)
return;
const bm = bookManager;
diff --git a/client/components/Reader/SettingsPage/SettingsPage.vue b/client/components/Reader/SettingsPage/SettingsPage.vue
index c8a4b91b..67ee8932 100644
--- a/client/components/Reader/SettingsPage/SettingsPage.vue
+++ b/client/components/Reader/SettingsPage/SettingsPage.vue
@@ -452,7 +452,7 @@
- Установить по-умолчанию
+ Установить по умолчанию
diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js
index 49bab084..59ad205e 100644
--- a/client/components/Reader/share/bookManager.js
+++ b/client/components/Reader/share/bookManager.js
@@ -79,19 +79,22 @@ class BookManager {
}
}
- let key = null;
- len = await bmRecentStore.length();
- for (let i = 0; i < len; i++) {
- key = await bmRecentStore.key(i);
- if (key) {
- let r = await bmRecentStore.getItem(key);
- if (_.isObject(r) && r.key) {
- this.recent[r.key] = r;
+ //"ленивая" загрузка
+ (async() => {
+ let key = null;
+ len = await bmRecentStore.length();
+ for (let i = 0; i < len; i++) {
+ key = await bmRecentStore.key(i);
+ if (key) {
+ let r = await bmRecentStore.getItem(key);
+ if (_.isObject(r) && r.key) {
+ this.recent[r.key] = r;
+ }
+ } else {
+ await bmRecentStore.removeItem(key);
}
- } else {
- await bmRecentStore.removeItem(key);
}
- }
+ })();
//размножение для дебага
/*if (key) {
@@ -410,6 +413,11 @@ class BookManager {
this.recentLast = value;
await bmCacheStore.setItem('recent-last', this.recentLast);
if (value && value.key) {
+ //гарантия переключения книги
+ const mostRecent = this.mostRecentBook();
+ if (mostRecent)
+ this.recent[mostRecent.key].touchTime = value.touchTime - 1;
+
this.recent[value.key] = value;
await bmRecentStore.setItem(value.key, value);
await bmCacheStore.setItem('recent', this.recent);
diff --git a/package.json b/package.json
index a456c383..0a58b078 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "Liberama",
- "version": "0.6.4",
+ "version": "0.6.5",
"engines": {
"node": ">=10.0.0"
},