8dce7d59ed
Before, when a 401 was received by a ujs-enabled link (like `link_to …, method: :delete, data: { remote: true }`, rails-ujs tried to insert the response text as a Javascript script. As the script was something like `Please sign-in`, which is not valid Javascript, the browser would throw an "Unexpected token" error. The typical use-case is: 1. The user open a form in a tab, 2. The user disconnects in another tab, 3. In the first tab, the user clicks on a remote "Delete" link_to In that case the browser raised an error in the console (and in Sentry), but the user would see nothing. With this commit, all 401 ujs errors are turned into redirects to the sign-in page. Fix https://sentry.io/organizations/demarches-simplifiees/issues/2522512693/activity/
66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
import '../shared/polyfills';
|
|
import Rails from '@rails/ujs';
|
|
import * as ActiveStorage from '@rails/activestorage';
|
|
import 'whatwg-fetch'; // window.fetch polyfill
|
|
import ReactRailsUJS from 'react_ujs';
|
|
|
|
import '../shared/page-update-event';
|
|
import '../shared/activestorage/ujs';
|
|
import '../shared/remote-poller';
|
|
import '../shared/safari-11-file-xhr-workaround';
|
|
import '../shared/remote-input';
|
|
import '../shared/franceconnect';
|
|
import '../shared/toggle-target';
|
|
import '../shared/ujs-error-handling';
|
|
|
|
import '../new_design/chartkick';
|
|
import '../new_design/dropdown';
|
|
import '../new_design/form-validation';
|
|
import '../new_design/procedure-context';
|
|
import '../new_design/procedure-form';
|
|
import '../new_design/spinner';
|
|
import '../new_design/support';
|
|
import '../new_design/messagerie';
|
|
import '../new_design/dossiers/auto-save';
|
|
import '../new_design/dossiers/auto-upload';
|
|
|
|
import '../new_design/champs/carte';
|
|
import '../new_design/champs/linked-drop-down-list';
|
|
import '../new_design/champs/repetition';
|
|
|
|
import {
|
|
toggleCondidentielExplanation,
|
|
replaceSemicolonByComma
|
|
} from '../new_design/avis';
|
|
import {
|
|
showMotivation,
|
|
motivationCancel,
|
|
showImportJustificatif
|
|
} from '../new_design/state-button';
|
|
import {
|
|
acceptEmailSuggestion,
|
|
discardEmailSuggestionBox
|
|
} from '../new_design/user-sign_up';
|
|
|
|
// This is the global application namespace where we expose helpers used from rails views
|
|
const DS = {
|
|
fire: (eventName, data) => Rails.fire(document, eventName, data),
|
|
toggleCondidentielExplanation,
|
|
showMotivation,
|
|
motivationCancel,
|
|
showImportJustificatif,
|
|
replaceSemicolonByComma,
|
|
acceptEmailSuggestion,
|
|
discardEmailSuggestionBox
|
|
};
|
|
|
|
// Start Rails helpers
|
|
Rails.start();
|
|
ActiveStorage.start();
|
|
|
|
// Expose globals
|
|
window.DS = window.DS || DS;
|
|
|
|
// eslint-disable-next-line no-undef, react-hooks/rules-of-hooks
|
|
ReactRailsUJS.useContext(require.context('loaders', true));
|
|
addEventListener('ds:page:update', ReactRailsUJS.handleMount);
|