diff options
| author | Alex Yatskov <alex@foosoft.net> | 2017-09-09 11:36:50 -0700 | 
|---|---|---|
| committer | Alex Yatskov <alex@foosoft.net> | 2017-09-09 11:36:50 -0700 | 
| commit | 9a5a9aa47fd9a6c7ea6830a821689321e8fd9fbb (patch) | |
| tree | b91dc77ea6498cf60a6d842e55d148e2d9d73256 /ext | |
| parent | 124ecaf8247af673109085eee8fab8d5f2bc7caa (diff) | |
better error handling
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/api.js | 7 | ||||
| -rw-r--r-- | ext/sb/js/sandbox.js | 13 | 
2 files changed, 17 insertions, 3 deletions
| diff --git a/ext/bg/js/api.js b/ext/bg/js/api.js index 5a307df3..6ab130a7 100644 --- a/ext/bg/js/api.js +++ b/ext/bg/js/api.js @@ -104,7 +104,12 @@ async function apiTemplateRender(template, data, dynamic) {              const sequence = utilBackend().sequenceNew();              const handler = event => {                  if (event.data.sequence === sequence) { -                    resolve(event.data.result); +                    if (event.data.command === 'error') { +                        reject(event.data.result); +                    } else { +                        resolve(event.data.result); +                    } +                      window.removeEventListener('message', handler);                  }              }; diff --git a/ext/sb/js/sandbox.js b/ext/sb/js/sandbox.js index 0a0ff31b..c3430afe 100644 --- a/ext/sb/js/sandbox.js +++ b/ext/sb/js/sandbox.js @@ -31,7 +31,16 @@ window.addEventListener('message', event => {              window.yomichan_cache[event.data.template] = template;          } -        const result = template(event.data.data || {}); -        event.source.postMessage({result, sequence: event.data.sequence}, '*'); +        let result = null; +        let command = null; +        try { +            command = 'render'; +            result = template(event.data.data || {}); +        } catch (e) { +            command = 'error'; +            result = e; +        } + +        event.source.postMessage({result, command, sequence: event.data.sequence}, '*');      }  }); |