diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2022-05-29 21:24:41 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-29 21:24:41 -0400 | 
| commit | 331a2e62941e04a4d50a21faefed663a92ddc00a (patch) | |
| tree | 1212a1e7cd57ea2331fab2101afdc325cb3a4766 /ext/js/display/display-anki.js | |
| parent | f3024c50186344aa6a6b09500ea02540463ce5c9 (diff) | |
Add support for guiEditNote to view notes (#2143)
* Add AnkiConnect.guiEditNote
* Update _onApiNoteView to first try guiEditNote
* Add setting
* Update noteView API
* Use setting
* Return which mode was used
* Update DisplayGenerator
* Handle errors in DisplayAnki
* Update docs
* Add isErrorUnsupportedAction function
* Add an allowFallback option to noteView
* Disambiguate
* Simplify now that preferredMode isn't used
* Update settings info
* Implement test buttons
* Update styles
* Update status visibility
* Wrap layout
* Update description
* Update date
Diffstat (limited to 'ext/js/display/display-anki.js')
| -rw-r--r-- | ext/js/display/display-anki.js | 24 | 
1 files changed, 19 insertions, 5 deletions
| diff --git a/ext/js/display/display-anki.js b/ext/js/display/display-anki.js index 0af8831a..12133ad0 100644 --- a/ext/js/display/display-anki.js +++ b/ext/js/display/display-anki.js @@ -47,6 +47,7 @@ class DisplayAnki {          this._screenshotFormat = 'png';          this._screenshotQuality = 100;          this._scanLength = 10; +        this._noteGuiMode = 'browse';          this._noteTags = [];          this._modeOptions = new Map();          this._dictionaryEntryTypeModeMap = new Map([ @@ -132,7 +133,7 @@ class DisplayAnki {      _onOptionsUpdated({options}) {          const {              general: {resultOutputMode, glossaryLayoutMode, compactTags}, -            anki: {tags, duplicateScope, duplicateScopeCheckAllModels, suspendNewCards, checkForDuplicates, displayTags, kanji, terms, screenshot: {format, quality}}, +            anki: {tags, duplicateScope, duplicateScopeCheckAllModels, suspendNewCards, checkForDuplicates, displayTags, kanji, terms, noteGuiMode, screenshot: {format, quality}},              scanning: {length: scanLength}          } = options; @@ -147,6 +148,7 @@ class DisplayAnki {          this._screenshotFormat = format;          this._screenshotQuality = quality;          this._scanLength = scanLength; +        this._noteGuiMode = noteGuiMode;          this._noteTags = [...tags];          this._modeOptions.clear();          this._modeOptions.set('kanji', kanji); @@ -418,7 +420,9 @@ class DisplayAnki {          return error;      } -    _showErrorNotification(errors) { +    _showErrorNotification(errors, displayErrors) { +        if (typeof displayErrors === 'undefined') { displayErrors = errors; } +          if (this._errorNotificationEventListeners !== null) {              this._errorNotificationEventListeners.removeAllEventListeners();          } @@ -428,7 +432,7 @@ class DisplayAnki {              this._errorNotificationEventListeners = new EventListenerCollection();          } -        const content = this._display.displayGenerator.createAnkiNoteErrorsNotificationContent(errors); +        const content = this._display.displayGenerator.createAnkiNoteErrorsNotificationContent(displayErrors);          for (const node of content.querySelectorAll('.anki-note-error-log-link')) {              this._errorNotificationEventListeners.addEventListener(node, 'click', () => {                  console.log({ankiNoteErrors: errors}); @@ -634,10 +638,20 @@ class DisplayAnki {          }      } -    _viewNote(node) { +    async _viewNote(node) {          const noteIds = this._getNodeNoteIds(node);          if (noteIds.length === 0) { return; } -        yomichan.api.noteView(noteIds[0]); +        try { +            await yomichan.api.noteView(noteIds[0], this._noteGuiMode, false); +        } catch (e) { +            const displayErrors = ( +                e.message === 'Mode not supported' ? +                [this._display.displayGenerator.instantiateTemplateFragment('footer-notification-anki-view-note-error')] : +                void 0 +            ); +            this._showErrorNotification([e], displayErrors); +            return; +        }      }      _showViewNoteMenu(node) { |