@@ -2,14 +2,17 @@ import Controller from '@ember/controller';
22import { inject as service } from '@ember/service' ;
33import { tracked } from '@glimmer/tracking' ;
44
5- import { dropTask } from 'ember-concurrency' ;
5+ import { didCancel , dropTask } from 'ember-concurrency' ;
66import { alias } from 'macro-decorators' ;
77
8+ import { AjaxError } from '../../utils/ajax' ;
9+
810function defaultVersionsContext ( ) {
911 return { data : [ ] , next_page : undefined } ;
1012}
1113
1214export default class SearchController extends Controller {
15+ @service sentry ;
1316 @service store ;
1417
1518 queryParams = [ 'per_page' , 'sort' ] ;
@@ -60,24 +63,32 @@ export default class SearchController extends Controller {
6063 per_page,
6164 } ;
6265 }
63- let versions = await this . store . query ( 'version' , query ) ;
64- let meta = versions . meta ;
65-
66- let ids = versions . map ( it => it . id ) ;
67- if ( sort === 'semver' ) {
68- this . bySemver = {
69- ...versionsContext ,
70- data : data . concat ( ids ) ,
71- next_page : meta . next_page ,
72- } ;
73- } else {
74- this . byDate = {
75- ...versionsContext ,
76- data : data . concat ( ids ) ,
77- next_page : meta . next_page ,
78- } ;
66+
67+ try {
68+ let versions = await this . store . query ( 'version' , query ) ;
69+ let meta = versions . meta ;
70+
71+ let ids = versions . map ( it => it . id ) ;
72+ if ( sort === 'semver' ) {
73+ this . bySemver = {
74+ ...versionsContext ,
75+ data : data . concat ( ids ) ,
76+ next_page : meta . next_page ,
77+ } ;
78+ } else {
79+ this . byDate = {
80+ ...versionsContext ,
81+ data : data . concat ( ids ) ,
82+ next_page : meta . next_page ,
83+ } ;
84+ }
85+ return versions ;
86+ } catch ( error ) {
87+ // report unexpected errors to Sentry and ignore `ajax()` errors
88+ if ( ! didCancel ( error ) && ! ( error instanceof AjaxError ) ) {
89+ this . sentry . captureException ( error ) ;
90+ }
7991 }
80- return versions ;
8192 } ) ;
8293
8394 reset ( ) {
0 commit comments