]> Untitled Git - lemmy-ui.git/blob - src/shared/components/app/error-page.tsx
Merge pull request #1766 from LemmyNet/auth-error-message
[lemmy-ui.git] / src / shared / components / app / error-page.tsx
1 import { setIsoData } from "@utils/app";
2 import { removeAuthParam } from "@utils/helpers";
3 import { Component } from "inferno";
4 import { T } from "inferno-i18next-dess";
5 import { Link } from "inferno-router";
6 import { IsoDataOptionalSite } from "../../interfaces";
7 import { I18NextService } from "../../services";
8
9 export class ErrorPage extends Component<any, any> {
10   private isoData: IsoDataOptionalSite = setIsoData(this.context);
11
12   constructor(props: any, context: any) {
13     super(props, context);
14   }
15
16   render() {
17     const { errorPageData } = this.isoData;
18
19     return (
20       <div className="error-page container-lg text-center">
21         <h1>
22           {errorPageData
23             ? I18NextService.i18n.t("error_page_title")
24             : I18NextService.i18n.t("not_found_page_title")}
25         </h1>
26         {errorPageData ? (
27           <T i18nKey="error_page_paragraph" className="p-4" parent="p">
28             #<a href="https://lemmy.ml/c/lemmy_support">#</a>#
29             <a href="https://matrix.to/#/#lemmy-space:matrix.org">#</a>#
30           </T>
31         ) : (
32           <p>{I18NextService.i18n.t("not_found_page_message")}</p>
33         )}
34         {!errorPageData && (
35           <Link to="/" replace>
36             {I18NextService.i18n.t("not_found_return_home_button")}
37           </Link>
38         )}
39         {errorPageData?.adminMatrixIds &&
40           errorPageData.adminMatrixIds.length > 0 && (
41             <>
42               <div>
43                 {I18NextService.i18n.t("error_page_admin_matrix", {
44                   instance:
45                     this.isoData.site_res?.site_view.site.name ??
46                     "this instance",
47                 })}
48               </div>
49               <ul className="mx-auto mt-2" style={{ width: "fit-content" }}>
50                 {errorPageData.adminMatrixIds.map(matrixId => (
51                   <li key={matrixId} className="text-info">
52                     {matrixId}
53                   </li>
54                 ))}
55               </ul>
56             </>
57           )}
58         {errorPageData?.error && (
59           <T
60             i18nKey="error_code_message"
61             parent="p"
62             interpolation={{ error: removeAuthParam(errorPageData.error) }}
63           >
64             #<strong className="text-danger">#</strong>#
65           </T>
66         )}
67       </div>
68     );
69   }
70 }