| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 | 2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
99×
| var AppActions, AppStore, BS, BindStoreMixin, Dialog, React, ServerErrorMessage, _, ref;
React = require('react');
BindStoreMixin = require('../bind-store-mixin');
BS = require('react-bootstrap');
_ = require('underscore');
ref = require('../../flux/app'), AppStore = ref.AppStore, AppActions = ref.AppActions;
Dialog = require('../tutor-dialog');
ServerErrorMessage = React.createClass({
displayName: 'ServerErrorMessage',
propTypes: {
statusCode: React.PropTypes.number.isRequired,
message: React.PropTypes.string.isRequired,
request: React.PropTypes.object.isRequired,
supportLink: React.PropTypes.string,
debug: React.PropTypes.bool
},
getDefaultProps: function() {
return {
supportLink: 'https://openstaxtutor.zendesk.com/hc/en-us/requests/new',
debug: true
};
},
render: function() {
var dataMessage, debug, debugInfo, errorMessage, message, ref1, request, statusCode, supportLink;
ref1 = this.props, statusCode = ref1.statusCode, message = ref1.message, request = ref1.request, supportLink = ref1.supportLink, debug = ref1.debug;
if (request.opts.data != null) {
dataMessage = React.createElement("span", null, "with ", React.createElement("pre", null, request.opts.data));
}
if (debug) {
debugInfo = [
React.createElement("p", null, "Additional error messages returned from the server is:"), React.createElement("pre", {
"className": 'response'
}, message || 'No response was received'), React.createElement("div", {
"className": 'request'
}, React.createElement("kbd", null, request.opts.method), " on ", request.url, " ", dataMessage)
];
}
return errorMessage = React.createElement("div", {
"className": 'server-error'
}, React.createElement("h3", null, "An error with code ", statusCode, " has occured"), React.createElement("p", null, "Please visit ", React.createElement("a", {
"target": '_blank',
"href": supportLink
}, "our support page"), " to file a bug report."), debugInfo);
}
});
module.exports = React.createClass({
displayName: 'ServerErrorMonitoring',
mixins: [BindStoreMixin],
bindStore: AppStore,
bindEvent: 'server-error',
bindUpdate: function() {
var dismissError, serverErr;
serverErr = AppStore.getError();
if (!(serverErr && -1 === window.location.search.indexOf('reloaded'))) {
return;
}
dismissError = function() {
var join, navigation;
navigation = AppStore.errorNavigation();
if (_.isEmpty(navigation)) {
return;
}
if (navigation.shouldReload) {
join = window.location.search ? '&' : '?';
return window.location.href = window.location.href + join + 'reloaded';
} else if (navigation.href) {
return window.location.href = navigation.href;
}
};
return Dialog.show({
title: 'Server Error',
body: React.createElement(ServerErrorMessage, React.__spread({}, serverErr)),
buttons: [
React.createElement(BS.Button, {
"key": 'ok',
"onClick": (function() {
return Dialog.hide();
}),
"bsStyle": 'primary'
}, "OK")
]
}).then(dismissError, dismissError);
},
render: function() {
return null;
}
});
|