diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2022-05-28 22:22:15 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-28 22:22:15 -0400 | 
| commit | 47194926f35d0d6abfe9a8424c5e8af882a99f1e (patch) | |
| tree | 9e16acbf8ae3d716dc505c9503ee8bad3fe0a13e /ext/js | |
| parent | 0d82c52a7624d80ec48dc774fb23db5244bc14f9 (diff) | |
Add an issues page with information about some errors (#2163)
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/background/backend.js | 5 | ||||
| -rw-r--r-- | ext/js/display/display-generator.js | 18 | 
2 files changed, 21 insertions, 2 deletions
| diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index c0f286f8..cff8a586 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -1909,7 +1909,10 @@ class Backend {                          // The message logged to the console looks like this:                          //  Access to fetch at '<URL>' from origin 'chrome-extension://<ID>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.                          const result = new Error('Audio download failed due to possible extension permissions error'); -                        result.data = {errors}; +                        result.data = { +                            errors, +                            referenceUrl: '/issues.html' +                        };                          return result;                      }                  } diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index 3fabdbb0..95080e27 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -220,7 +220,23 @@ class DisplayGenerator {          for (const error of errors) {              const div = document.createElement('li');              div.className = 'anki-note-error-message'; -            this._setTextContent(div, isObject(error) && typeof error.message === 'string' ? error.message : `${error}`); +            let message = isObject(error) && typeof error.message === 'string' ? error.message : `${error}`; +            let link = null; +            if (isObject(error) && isObject(error.data)) { +                const {referenceUrl} = error.data; +                if (typeof referenceUrl === 'string') { +                    message = message.trimEnd(); +                    if (!/[.!?]^/.test()) { message += '.'; } +                    message += ' '; +                    link = document.createElement('a'); +                    link.href = referenceUrl; +                    link.target = '_blank'; +                    link.rel = 'noreferrer noopener'; +                    link.textContent = 'More info'; +                } +            } +            this._setTextContent(div, message); +            if (link !== null) { div.appendChild(link); }              list.appendChild(div);          } |