Добавление событий, рефакторинг

This commit is contained in:
Book Pauk
2019-03-20 14:57:40 +07:00
parent b12198fdcf
commit 090ffa9921
3 changed files with 21 additions and 11 deletions

View File

@@ -127,7 +127,6 @@ class HistoryPage extends Vue {
init() {
this.updateTableData();
this.mostRecentBook = bookManager.mostRecentBook();
this.$nextTick(() => {
this.$refs.input.focus();
});
@@ -239,13 +238,7 @@ class HistoryPage extends Vue {
await bookManager.delRecentBook({key});
this.updateTableData();
const newRecent = bookManager.mostRecentBook();
if (!(this.mostRecentBook && newRecent && this.mostRecentBook.key == newRecent.key))
this.$emit('load-book', newRecent);
this.mostRecentBook = newRecent;
if (!this.mostRecentBook)
if (!bookManager.mostRecentBook())
this.close();
}

View File

@@ -207,6 +207,7 @@ class Reader extends Vue {
mounted() {
(async() => {
await bookManager.init(this.settings);
bookManager.addEventListener(this.bookManagerEvent);
await this.$refs.serverStorage.init();
if (this.$root.rootRoute == '/reader') {
@@ -288,6 +289,17 @@ class Reader extends Vue {
this.debouncedUpdateRoute();
}
bookManagerEvent(eventName) {
if (eventName == 'recent-changed') {
const oldBook = this.mostRecentBookReactive;
const newBook = bookManager.mostRecentBook();
if (oldBook && newBook && oldBook.key != newBook.key) {
this.loadBook(newBook);
}
}
}
get toolBarActive() {
return this.reader.toolBarActive;
}

View File

@@ -255,16 +255,20 @@ class BookManager {
await bmRecentStore.setItem(result.key, result);
//кэшируем, аккуратно
let saveRecent = false;
if (!(this.recentLast && this.recentLast.key == result.key)) {
await bmCacheStore.setItem('recent', this.recent);
this.emit('recent-changed');
saveRecent = true;
}
this.recentLast = result;
await bmCacheStore.setItem('recent-last', this.recentLast);
this.emit('recent-last-changed');
this.mostRecentCached = result;
this.recentChanged2 = true;
if (saveRecent)
this.emit('save-recent');
this.emit('recent-changed');
return result;
}
@@ -281,10 +285,11 @@ class BookManager {
this.recent[value.key].deleted = 1;
await bmRecentStore.setItem(value.key, this.recent[value.key].deleted);
await bmCacheStore.setItem('recent', this.recent);
this.emit('recent-changed');
this.mostRecentCached = null;
this.recentChanged2 = true;
this.emit('recent-changed');
}
async cleanRecentBooks() {