Skip to content

Commit

Permalink
tweaking mapbox error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
kturney committed Oct 3, 2019
1 parent 7c0838f commit 1b1ef76
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 7 deletions.
14 changes: 11 additions & 3 deletions addon/-private/mapbox-loader.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
import { bind, next } from '@ember/runloop';
import EmberObject, { set } from '@ember/object';
import EmberObject, { get, set } from '@ember/object';
import { Promise as RsvpPromise } from 'rsvp';

class MapboxLoaderCancelledError extends Error {}
class MapboxSupportError extends Error {
isMapboxSupportError = true;
}
class MapboxError extends Error {
constructor(ev) {
super(get(ev, 'error.message') || 'unknown mapbox error');

this.event = ev;
}
}

export default EmberObject.extend({
map: null,
Expand Down Expand Up @@ -67,10 +74,11 @@ export default EmberObject.extend({
map.off('error', listeners.onError);
resolve();
},
onError(err) {
onError(ev) {
map.off('load', listeners.onLoad);
map.off('error', listeners.onError);
reject(err);

reject(new MapboxError(ev));
}
};

Expand Down
21 changes: 19 additions & 2 deletions tests/helpers/create-map.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { Promise } from 'rsvp';
import Config from '../../config/environment';
import QUnit from 'qunit';
import { get } from '@ember/object';

const ALLOWED_ERRORS = [
'The operation was aborted',
'Failed to fetch'
];

export default function setupMap(hooks) {
hooks.before(async function() {
Expand All @@ -20,8 +26,19 @@ export default function setupMap(hooks) {

this.map.style.once('data', () => resolve());

const onErr = (data) => {
QUnit.onUnhandledRejection((data && data.error) || data || 'Empty error event from mapbox-gl-js');
const onErr = (ev) => {
const err = {
message: get(ev, 'error.message') || 'unknown mapbox error',
event: ev,
stack: get(ev, 'error.stack')
};

if (ALLOWED_ERRORS.includes(err.message)) {
// eslint-disable-next-line no-console
console.error(err.message, ev.error);
} else {
QUnit.onUnhandledRejection(err);
}
};

this.map.style.on('error', onErr);
Expand Down
2 changes: 0 additions & 2 deletions tests/integration/components/mapbox-gl-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ module('Integration | Component | mapbox gl', function(hooks) {
test('it renders', async function(assert) {
assert.expect(0);

await render(hbs`{{mapbox-gl}}`);

// Template block usage:
await render(hbs`
{{#mapbox-gl as |map|}}
Expand Down

0 comments on commit 1b1ef76

Please sign in to comment.