add clear cache button for session

This commit is contained in:
Bruno Windels 2019-10-13 07:48:49 +02:00
parent ad7a150aaa
commit e2b9e9dfdc
2 changed files with 40 additions and 3 deletions

View file

@ -7,6 +7,7 @@ class SessionItemViewModel extends EventEmitter {
this._pickerVM = pickerVM; this._pickerVM = pickerVM;
this._sessionInfo = sessionInfo; this._sessionInfo = sessionInfo;
this._isDeleting = false; this._isDeleting = false;
this._isClearing = false;
this._error = null; this._error = null;
} }
@ -29,10 +30,29 @@ class SessionItemViewModel extends EventEmitter {
} }
} }
async clear() {
this._isClearing = true;
this.emit("change", "isClearing");
try {
await this._pickerVM.clear(this.id);
} catch(err) {
this._error = err;
console.error(err);
this.emit("change", "error");
} finally {
this._isClearing = false;
this.emit("change", "isClearing");
}
}
get isDeleting() { get isDeleting() {
return this._isDeleting; return this._isDeleting;
} }
get isClearing() {
return this._isClearing;
}
get id() { get id() {
return this._sessionInfo.id; return this._sessionInfo.id;
} }
@ -73,6 +93,10 @@ export default class SessionPickerViewModel {
this._sessions.remove(idx); this._sessions.remove(idx);
} }
async clear(id) {
await this._storageFactory.delete(id);
}
get sessions() { get sessions() {
return this._sessions; return this._sessions;
} }

View file

@ -5,22 +5,35 @@ class SessionPickerItem extends TemplateView {
constructor(vm) { constructor(vm) {
super(vm, true); super(vm, true);
this._onDeleteClick = this._onDeleteClick.bind(this); this._onDeleteClick = this._onDeleteClick.bind(this);
this._onClearClick = this._onClearClick.bind(this);
} }
_onDeleteClick(event) { _onDeleteClick(event) {
event.stopPropagation(); event.stopPropagation();
event.preventDefault(); event.preventDefault();
this.viewModel.delete(); if (confirm("Are you sure?")) {
this.viewModel.delete();
}
}
_onClearClick(event) {
event.stopPropagation();
event.preventDefault();
this.viewModel.clear();
} }
render(t) { render(t) {
const deleteButton = t.button({ const deleteButton = t.button({
disabled: vm => vm.isDeleting, disabled: vm => vm.isDeleting,
onClick: event => this._onDeleteClick(event) onClick: this._onDeleteClick,
}, "Delete"); }, "Delete");
const clearButton = t.button({
disabled: vm => vm.isClearing,
onClick: this._onClearClick,
}, "Clear");
const userName = t.span({className: "userId"}, vm => vm.userId); const userName = t.span({className: "userId"}, vm => vm.userId);
const errorMessage = t.if(vm => vm.error, t => t.span({className: "error"}, vm => vm.error)); const errorMessage = t.if(vm => vm.error, t => t.span({className: "error"}, vm => vm.error));
return t.li([userName, errorMessage, deleteButton]); return t.li([userName, errorMessage, clearButton, deleteButton]);
} }
} }