import NoteContextAwareWidget from "./note_context_aware_widget.js"; import protectedSessionService from "../services/protected_session.js"; import attributeService from "../services/attributes.js"; const TPL = `
Bookmark  
Bookmark  
`; export default class BookmarkSwitchWidget extends NoteContextAwareWidget { doRender() { this.$widget = $(TPL); this.$addBookmarkButton = this.$widget.find(".add-bookmark-button"); this.$addBookmarkButton.on('click', () => attributeService.setLabel(this.noteId, 'bookmarked')); this.$removeBookmarkButton = this.$widget.find(".remove-bookmark-button"); this.$removeBookmarkButton.on('click', async () => { for (const label of this.note.getLabels('bookmarked')) { await attributeService.removeAttributeById(this.noteId, label.attributeId); } }); } refreshWithNote(note) { const isBookmarked = note.hasLabel('bookmarked'); this.$addBookmarkButton.toggle(!isBookmarked); this.$removeBookmarkButton.toggle(isBookmarked); } entitiesReloadedEvent({loadResults}) { for (const attr of loadResults.getAttributes()) { if (attr.type === 'label' && attr.name === 'bookmarked' && attributeService.isAffecting(attr, this.note)) { this.refresh(); break; } } } }