Adding Sentry/Raven for error tracking
This commit is contained in:
@ -32,7 +32,15 @@ export function startSearch(search_type, query, only_mopidy = false){
|
||||
}
|
||||
}
|
||||
|
||||
export function debugResponse( response ){
|
||||
export function handleException(message, data = {}){
|
||||
return {
|
||||
type: 'HANDLE_EXCEPTION',
|
||||
message: message,
|
||||
data: data
|
||||
}
|
||||
}
|
||||
|
||||
export function debugResponse(response){
|
||||
return {
|
||||
type: 'DEBUG',
|
||||
response: response
|
||||
|
||||
@ -18,6 +18,27 @@ const CoreMiddleware = (function(){
|
||||
|
||||
switch(action.type){
|
||||
|
||||
case 'HANDLE_EXCEPTION':
|
||||
var data = Object.assign(
|
||||
{},
|
||||
action.data,
|
||||
{
|
||||
state: store.getState()
|
||||
}
|
||||
);
|
||||
|
||||
Raven.captureException(
|
||||
new Error(action.message),
|
||||
{
|
||||
extra: data
|
||||
}
|
||||
);
|
||||
|
||||
store.dispatch(uiActions.createNotification(action.message,'bad'))
|
||||
|
||||
console.error(action.message, data);
|
||||
break;
|
||||
|
||||
case 'CORE_START_SERVICES':
|
||||
store.dispatch(mopidyActions.connect())
|
||||
store.dispatch(pusherActions.connect())
|
||||
|
||||
@ -5,6 +5,7 @@ import { hashHistory } from 'react-router'
|
||||
import * as helpers from '../../helpers'
|
||||
|
||||
var mopidyActions = require('./actions.js')
|
||||
var coreActions = require('../core/actions.js')
|
||||
var uiActions = require('../ui/actions.js')
|
||||
var spotifyActions = require('../spotify/actions.js')
|
||||
var pusherActions = require('../pusher/actions.js')
|
||||
@ -128,7 +129,7 @@ const MopidyMiddleware = (function(){
|
||||
|
||||
return new Promise( (resolve, reject) => {
|
||||
|
||||
if( model in ws ){
|
||||
if (model in ws){
|
||||
if( method in ws[model] ){
|
||||
var mopidyObject = ws[model][method]
|
||||
var property = method;
|
||||
@ -136,13 +137,19 @@ const MopidyMiddleware = (function(){
|
||||
var mopidyObject = ws[model]
|
||||
var property = model;
|
||||
}
|
||||
}else{
|
||||
|
||||
} else {
|
||||
var error = {
|
||||
message: 'Call to an invalid object. Check you are calling a valid Mopidy object.',
|
||||
call: call,
|
||||
value: value
|
||||
}
|
||||
console.error(error)
|
||||
|
||||
store.dispatch(coreActions.handleException(
|
||||
error.message,
|
||||
error
|
||||
));
|
||||
|
||||
reject(error)
|
||||
}
|
||||
|
||||
|
||||
@ -21,13 +21,25 @@ const PusherMiddleware = (function(){
|
||||
// if debug enabled
|
||||
if (store.getState().ui.log_pusher) console.log('Pusher', message)
|
||||
|
||||
// error
|
||||
if (message.status == 0){
|
||||
store.dispatch(coreActions.handleException(
|
||||
message.message,
|
||||
message
|
||||
));
|
||||
}
|
||||
|
||||
// response to a request [we] made
|
||||
if (typeof(message.request_id) !== 'undefined' && message.request_id){
|
||||
if (message.request_id !== undefined && message.request_id){
|
||||
if (typeof( deferredRequests[ message.request_id ]) !== 'undefined' ){
|
||||
store.dispatch(uiActions.stopLoading(message.request_id))
|
||||
deferredRequests[ message.request_id ].resolve( message )
|
||||
|
||||
} else {
|
||||
console.error('Pusher: Response with no matching request', message);
|
||||
store.dispatch(coreActions.handleException(
|
||||
'Pusher response received with no matching request',
|
||||
message
|
||||
));
|
||||
}
|
||||
|
||||
// general message
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
|
||||
var coreActions = require('../../services/core/actions')
|
||||
var uiActions = require('../../services/ui/actions')
|
||||
var mopidyActions = require('../../services/mopidy/actions')
|
||||
var lastfmActions = require('../../services/lastfm/actions')
|
||||
@ -64,14 +65,20 @@ const sendRequest = ( dispatch, getState, endpoint, method = 'GET', data = false
|
||||
status = response.error.status
|
||||
}
|
||||
|
||||
dispatch(coreActions.handleException(
|
||||
message,
|
||||
{
|
||||
config: config,
|
||||
response: response
|
||||
}
|
||||
))
|
||||
|
||||
// TODO: Instead of allowing request to fail before renewing the token, once refreshed
|
||||
// we should retry the original request(s)
|
||||
if (message == 'The access token expired'){
|
||||
dispatch(refreshToken(dispatch, getState))
|
||||
}
|
||||
|
||||
dispatch(uiActions.createNotification(message,'bad'))
|
||||
console.error( endpoint+' failed', response)
|
||||
reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user