Better deletion
This commit is contained in:
parent
aab3803786
commit
8b5ee62931
@ -146,7 +146,7 @@ class Database {
|
||||
return Promise.reject('database not initialized');
|
||||
}
|
||||
|
||||
this.db.dictionaries.where('title').equals(title).first(info => {
|
||||
return this.db.dictionaries.where('title').equals(title).first(info => {
|
||||
if (!info) {
|
||||
return;
|
||||
}
|
||||
@ -167,34 +167,42 @@ class Database {
|
||||
|
||||
let termDeleter = Promise.resolve();
|
||||
if (info.hasTerms) {
|
||||
termDeleter = () => {
|
||||
this.db.terms.where('dictionary').equals(title).limit(1000).delete(count => {
|
||||
if (count > 0) {
|
||||
return termDeleter();
|
||||
} else {
|
||||
deletedCount += count;
|
||||
if (callback) {
|
||||
callback(deletedCount / totalCount);
|
||||
}
|
||||
const termDeleterFunc = () => {
|
||||
return this.db.terms.where('dictionary').equals(title).limit(1000).delete().then(count => {
|
||||
if (count === 0) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
deletedCount += count;
|
||||
if (callback) {
|
||||
callback(totalCount, deletedCount);
|
||||
}
|
||||
|
||||
return termDeleterFunc();
|
||||
});
|
||||
};
|
||||
|
||||
termDeleter = termDeleterFunc();
|
||||
}
|
||||
|
||||
let kanjiDeleter = Promise.resolve();
|
||||
if (info.hasKanji) {
|
||||
kanjiDeleter = () => {
|
||||
this.db.terms.where('dictionary').equals(title).limit(1000).delete(count => {
|
||||
if (count > 0) {
|
||||
return kanjiDeleter();
|
||||
} else {
|
||||
deletedCount += count;
|
||||
if (callback) {
|
||||
callback(deletedCount / totalCount);
|
||||
}
|
||||
const kanjiDeleterFunc = () => {
|
||||
return this.db.kanji.where('dictionary').equals(title).limit(1000).delete().then(count => {
|
||||
if (count === 0) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
deletedCount += count;
|
||||
if (callback) {
|
||||
callback(totalCount, deletedCount);
|
||||
}
|
||||
|
||||
return kanjiDeleterFunc();
|
||||
});
|
||||
};
|
||||
|
||||
kanjiDeleter = kanjiDeleterFunc();
|
||||
}
|
||||
|
||||
return Promise.all([termDeleter, kanjiDeleter]);
|
||||
|
@ -164,7 +164,11 @@ function onDictionaryDelete() {
|
||||
const dictControls = dictGroup.find('.dict-controls');
|
||||
dictControls.hide();
|
||||
|
||||
database().deleteDictionary(dictGroup.data('title')).then(() => {
|
||||
const callback = (total, current) => {
|
||||
dictProgress.find('div').css('width', `${current / total * 100.0}%`);
|
||||
};
|
||||
|
||||
database().deleteDictionary(dictGroup.data('title'), callback).then(() => {
|
||||
dictGroup.slideUp();
|
||||
}).catch(error => {
|
||||
dictError.show().find('span').text(error);
|
||||
|
Loading…
Reference in New Issue
Block a user