Skip to content

Commit 8dc2e50

Browse files
committed
add unstructuredError and errorKind to phx:page-loading-start details
Closes #3910
1 parent 5ed6479 commit 8dc2e50

1 file changed

Lines changed: 22 additions & 27 deletions

File tree

assets/js/phoenix_live_view/view.js

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,22 +1064,20 @@ export default class View {
10641064
}
10651065
this.log("error", () => ["unable to join", resp]);
10661066
if (this.isMain()) {
1067-
this.displayError([
1068-
PHX_LOADING_CLASS,
1069-
PHX_ERROR_CLASS,
1070-
PHX_SERVER_ERROR_CLASS,
1071-
]);
1067+
this.displayError(
1068+
[PHX_LOADING_CLASS, PHX_ERROR_CLASS, PHX_SERVER_ERROR_CLASS],
1069+
{ unstructuredError: resp, errorKind: "server" },
1070+
);
10721071
if (this.liveSocket.isConnected()) {
10731072
this.liveSocket.reloadWithJitter(this);
10741073
}
10751074
} else {
10761075
if (this.joinAttempts >= MAX_CHILD_JOIN_ATTEMPTS) {
10771076
// put the root review into permanent error state, but don't destroy it as it can remain active
1078-
this.root.displayError([
1079-
PHX_LOADING_CLASS,
1080-
PHX_ERROR_CLASS,
1081-
PHX_SERVER_ERROR_CLASS,
1082-
]);
1077+
this.root.displayError(
1078+
[PHX_LOADING_CLASS, PHX_ERROR_CLASS, PHX_SERVER_ERROR_CLASS],
1079+
{ unstructuredError: resp, errorKind: "server" },
1080+
);
10831081
this.log("error", () => [
10841082
`giving up trying to mount after ${MAX_CHILD_JOIN_ATTEMPTS} tries`,
10851083
resp,
@@ -1089,11 +1087,10 @@ export default class View {
10891087
const trueChildEl = DOM.byId(this.el.id);
10901088
if (trueChildEl) {
10911089
DOM.mergeAttrs(trueChildEl, this.el);
1092-
this.displayError([
1093-
PHX_LOADING_CLASS,
1094-
PHX_ERROR_CLASS,
1095-
PHX_SERVER_ERROR_CLASS,
1096-
]);
1090+
this.displayError(
1091+
[PHX_LOADING_CLASS, PHX_ERROR_CLASS, PHX_SERVER_ERROR_CLASS],
1092+
{ unstructuredError: resp, errorKind: "server" },
1093+
);
10971094
this.el = trueChildEl;
10981095
} else {
10991096
this.destroy();
@@ -1126,25 +1123,23 @@ export default class View {
11261123
}
11271124
if (!this.liveSocket.isUnloaded()) {
11281125
if (this.liveSocket.isConnected()) {
1129-
this.displayError([
1130-
PHX_LOADING_CLASS,
1131-
PHX_ERROR_CLASS,
1132-
PHX_SERVER_ERROR_CLASS,
1133-
]);
1126+
this.displayError(
1127+
[PHX_LOADING_CLASS, PHX_ERROR_CLASS, PHX_SERVER_ERROR_CLASS],
1128+
{ unstructuredError: reason, errorKind: "server" },
1129+
);
11341130
} else {
1135-
this.displayError([
1136-
PHX_LOADING_CLASS,
1137-
PHX_ERROR_CLASS,
1138-
PHX_CLIENT_ERROR_CLASS,
1139-
]);
1131+
this.displayError(
1132+
[PHX_LOADING_CLASS, PHX_ERROR_CLASS, PHX_CLIENT_ERROR_CLASS],
1133+
{ unstructuredError: reason, errorKind: "client" },
1134+
);
11401135
}
11411136
}
11421137
}
11431138

1144-
displayError(classes) {
1139+
displayError(classes, details = {}) {
11451140
if (this.isMain()) {
11461141
DOM.dispatchEvent(window, "phx:page-loading-start", {
1147-
detail: { to: this.href, kind: "error" },
1142+
detail: { to: this.href, kind: "error", ...details },
11481143
});
11491144
}
11501145
this.showLoader();

0 commit comments

Comments
 (0)