Skip to content

Commit 6f89aea

Browse files
authored
Merge pull request #463 from nyaruka/modax-errors
Reject responses that aren't 200s
2 parents 89f6d46 + 2848e1c commit 6f89aea

File tree

6 files changed

+32
-15
lines changed

6 files changed

+32
-15
lines changed

Diff for: src/dialog/Modax.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,8 @@ export class Modax extends RapidElement {
278278
// this.cancelToken = CancelToken.source();
279279
this.fetching = true;
280280
this.body = this.getLoading();
281-
getUrl(this.endpoint, null, this.getHeaders()).then(
282-
(response: WebResponse) => {
281+
getUrl(this.endpoint, null, this.getHeaders())
282+
.then((response: WebResponse) => {
283283
// if it's a full page, breakout of the modal
284284
if (response.body.indexOf('<!DOCTYPE HTML>') == 0) {
285285
this.open = false;
@@ -294,8 +294,12 @@ export class Modax extends RapidElement {
294294
});
295295
});
296296
}
297-
}
298-
);
297+
})
298+
.catch((error) => {
299+
this.fetching = false;
300+
this.open = false;
301+
this.fireCustomEvent(CustomEventType.Error, { error });
302+
});
299303
}
300304

301305
public submit(extra = {}): void {

Diff for: src/interfaces.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -279,5 +279,6 @@ export enum CustomEventType {
279279
DragStart = 'temba-drag-start',
280280
DragStop = 'temba-drag-stop',
281281
Resized = 'temba-resized',
282-
DetailsChanged = 'temba-details-changed'
282+
DetailsChanged = 'temba-details-changed',
283+
Error = 'temba-error'
283284
}

Diff for: src/list/ContentMenu.ts

+5
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ export class ContentMenu extends RapidElement {
129129
});
130130
})
131131
.catch((error: any) => {
132+
this.fireCustomEvent(CustomEventType.Loaded, {
133+
buttons: this.buttons,
134+
items: this.items
135+
});
136+
132137
console.error(error);
133138
});
134139
}

Diff for: src/list/TembaList.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ export class TembaList extends RapidElement {
308308
this.items = newItems;
309309
}
310310
} catch (error) {
311-
// console.error(error);
311+
this.paused = true;
312312
}
313313
}
314314

@@ -332,7 +332,6 @@ export class TembaList extends RapidElement {
332332

333333
try {
334334
const page = await fetchResultsPage(endpoint, controller);
335-
336335
// sanitize our options if necessary
337336
if (this.sanitizeOption) {
338337
page.results.forEach(this.sanitizeOption);
@@ -350,10 +349,10 @@ export class TembaList extends RapidElement {
350349
} catch (error) {
351350
// aborted
352351
this.reset();
353-
console.log(error);
352+
this.paused = true;
353+
this.loading = false;
354354
return;
355355
}
356-
357356
this.nextPage = nextPage;
358357
}
359358
this.pages = pages;

Diff for: src/list/TembaMenu.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -772,8 +772,8 @@ export class TembaMenu extends ResizeElement {
772772
private loadItems(item: MenuItem, event: MouseEvent = null) {
773773
if (item && item.endpoint) {
774774
item.loading = true;
775-
this.httpComplete = fetchResults(item.endpoint).then(
776-
(items: MenuItem[]) => {
775+
this.httpComplete = fetchResults(item.endpoint)
776+
.then((items: MenuItem[]) => {
777777
items.forEach((newItem) => {
778778
if (!newItem.items) {
779779
const prevItem = (item.items || []).find(
@@ -811,8 +811,10 @@ export class TembaMenu extends ResizeElement {
811811

812812
this.requestUpdate('root');
813813
this.scrollSelectedIntoView();
814-
}
815-
);
814+
})
815+
.catch((error) => {
816+
this.fireCustomEvent(CustomEventType.Error, { error });
817+
});
816818
}
817819
}
818820

Diff for: src/utils/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,11 @@ export const getUrl = (
123123

124124
fetch(url, options)
125125
.then((response) => {
126+
if (response.status < 200 || response.status >= 300) {
127+
reject(response);
128+
return;
129+
}
130+
126131
response.text().then((body: string) => {
127132
let json = {};
128133
try {
@@ -177,7 +182,9 @@ export const fetchResultsPage = (
177182
next: response.json.next
178183
});
179184
})
180-
.catch((error) => reject(error));
185+
.catch((error) => {
186+
return reject(error);
187+
});
181188
});
182189
};
183190

@@ -326,7 +333,6 @@ export const postFormData = (
326333
}
327334
})
328335
.catch((err) => {
329-
console.error(err);
330336
reject(err);
331337
});
332338
});

0 commit comments

Comments
 (0)