Skip to content

Commit f1e6c7c

Browse files
Cyrille Bourgoisjleveugle
authored andcommitted
feat: redirect transition's error on error page
1 parent 50b9d62 commit f1e6c7c

File tree

5 files changed

+45
-2
lines changed

5 files changed

+45
-2
lines changed

packages/manager/apps/public-cloud/src/index.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable import/no-webpack-loader-syntax, import/extensions */
22
import 'script-loader!jquery';
33
import angular from 'angular';
4-
import '@uirouter/angularjs';
4+
import '@uirouter/angularjs'; // eslint-disable-line import/no-duplicates
55
import 'script-loader!lodash';
66
import 'script-loader!jquery-ui/ui/minified/core.min';
77
import 'script-loader!jquery-ui/ui/minified/widget.min';
@@ -14,6 +14,10 @@ import 'script-loader!jsplumb';
1414
import 'script-loader!angular-ui-validate/dist/validate.js';
1515
/* eslint-enable import/no-webpack-loader-syntax, import/extensions */
1616

17+
import get from 'lodash/get';
18+
import has from 'lodash/has';
19+
import { RejectType } from '@uirouter/angularjs'; // eslint-disable-line import/no-duplicates
20+
1721
import navbar from '@ovh-ux/manager-navbar';
1822
import ovhManagerCore from '@ovh-ux/manager-core';
1923
import ovhManagerPci from '@ovh-ux/manager-pci';
@@ -53,4 +57,16 @@ angular
5357
.controller('PublicCloudController', controller)
5458
.service('publicCloud', service)
5559
.config(routing)
60+
.run(/* @ngInject */ ($state) => {
61+
$state.defaultErrorHandler((error) => {
62+
if (error.type === RejectType.ERROR) {
63+
$state.go('pci.error', {
64+
detail: {
65+
message: get(error.detail, 'data.message'),
66+
code: has(error.detail, 'headers') ? error.detail.headers('x-ovh-queryId') : null,
67+
},
68+
}, { location: false });
69+
}
70+
});
71+
})
5672
.run(/* @ngTranslationsInject:json ./translations */);

packages/manager/modules/pci/src/error/error.component.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ export default {
99
getAssets: '<',
1010
getCancelHref: '<',
1111
getErrorTranslationValues: '<',
12+
reload: '<',
13+
homeLink: '<',
1214
},
1315
};

packages/manager/modules/pci/src/error/error.html

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div class="pci-error row justify-content-md-center mb-5">
1+
<div class="pci-error row justify-content-md-center py-5">
22
<div class="col-md-6">
33

44
<div class="text-center mb-3">
@@ -16,7 +16,25 @@
1616
data-translate-default="{{ 'pci_error_default' | translate }}"
1717
data-translate-values="$ctrl.getErrorTranslationValues($ctrl.error.code)">
1818
</span>
19+
<strong class="d-block"
20+
data-ng-if="$ctrl.error.detail.message"
21+
data-ng-bind="::$ctrl.error.detail.message"></strong>
22+
<span class="d-block"
23+
data-ng-if="$ctrl.error.detail.code"
24+
data-translate="pci_error_detail_code"
25+
data-translate-values="$ctrl.error.detail"></span>
1926
</oui-message>
27+
<div class="d-flex flex-row-reverse"
28+
data-ng-if="$ctrl.error.detail">
29+
<oui-button
30+
data-variant="primary"
31+
data-on-click="$ctrl.reload()">
32+
<span data-translate="pci_error_action_reload_label"></span>
33+
</oui-button>
34+
<a class="oui-button oui-button_link"
35+
data-ng-href="{{$ctrl.homeLink}}"
36+
data-translate="pci_error_action_home_label"></a>
37+
</div>
2038

2139
<div class="my-3"
2240
data-ng-class="{ 'd-flex flex-row-reverse justify-content-between align-items-center': ['account_not_eligible', 'unpaid_debts', 'max_projects_limit_reached'].indexOf($ctrl.error.code) > -1 }"

packages/manager/modules/pci/src/error/error.routing.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default /* @ngInject */ ($stateProvider) => {
2222
context: {
2323
type: 'any',
2424
},
25+
detail: null,
2526
message: {
2627
type: 'any',
2728
},
@@ -87,6 +88,9 @@ export default /* @ngInject */ ($stateProvider) => {
8788
return {};
8889
}
8990
},
91+
92+
reload: /* @ngInject */ $window => () => $window.location.reload(),
93+
homeLink: /* @ngInject */ $state => $state.href('pci'),
9094
},
9195
});
9296
};

packages/manager/modules/pci/src/error/translations/Messages_fr_FR.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"pci_error_button_cancel": "Annuler",
44
"pci_error_button_action_pay_debt": "Régler ma dette",
55
"pci_error_button_action_contact_support": "Contacter le support",
6+
"pci_error_detail_code": "Code d'erreur : {{code}}",
7+
"pci_error_action_reload_label": "Réessayer",
8+
"pci_error_action_home_label": "Retour à la page d'accueil",
69
"pci_error_default": "Une erreur est survenue lors du chargement de la page.",
710
"pci_error_account_not_eligible": "Malheureusement vous ne pouvez pas créer de projet Public Cloud car vous avez eu des projets fermés pour impayés ou pour une mauvaise utilisation du service. Nous vous invitons à contacter le support.",
811
"pci_error_max_projects_limit_reached": "Malheureusement vous ne pouvez pas créer de projet Public Cloud supplémentaire car vous avez atteint le quota maximum de projets. Pour débloquer ces quotas, nous vous invitons à contacter le support.",

0 commit comments

Comments
 (0)