X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fapp%2Fapp.tsx;h=3452f9627c3159d672b676b98b75e3a8c0d166f8;hb=b1292b958af008763028df9591f5778be9d117f5;hp=e0c4f15b81c2db32e92d1533f125dd4450b6f08b;hpb=3526baf465aa13494bc627e282ed8cd8366f3b0d;p=lemmy-ui.git diff --git a/src/shared/components/app/app.tsx b/src/shared/components/app/app.tsx index e0c4f15..3452f96 100644 --- a/src/shared/components/app/app.tsx +++ b/src/shared/components/app/app.tsx @@ -1,49 +1,93 @@ -import { Component } from "inferno"; -import { Helmet } from "inferno-helmet"; +import { isAuthPath, setIsoData } from "@utils/app"; +import { dataBsTheme } from "@utils/browser"; +import { Component, RefObject, createRef, linkEvent } from "inferno"; import { Provider } from "inferno-i18next-dess"; import { Route, Switch } from "inferno-router"; -import { i18n } from "../../i18next"; +import { IsoDataOptionalSite } from "../../interfaces"; import { routes } from "../../routes"; -import { favIconPngUrl, favIconUrl, setIsoData } from "../../utils"; +import { FirstLoadService, I18NextService, UserService } from "../../services"; +import AuthGuard from "../common/auth-guard"; +import ErrorGuard from "../common/error-guard"; +import { ErrorPage } from "./error-page"; import { Footer } from "./footer"; import { Navbar } from "./navbar"; -import { NoMatch } from "./no-match"; import "./styles.scss"; import { Theme } from "./theme"; export class App extends Component { - private isoData = setIsoData(this.context); + private isoData: IsoDataOptionalSite = setIsoData(this.context); + private readonly mainContentRef: RefObject; constructor(props: any, context: any) { super(props, context); + this.mainContentRef = createRef(); } + + handleJumpToContent(event) { + event.preventDefault(); + this.mainContentRef.current?.focus(); + } + + user = UserService.Instance.myUserInfo; + + componentDidMount() { + this.setState({ bsTheme: dataBsTheme(this.user) }); + } + render() { - let siteRes = this.isoData.site_res; - let siteView = siteRes.site_view; - let icon = siteView.site.icon; + const siteRes = this.isoData.site_res; + const siteView = siteRes?.site_view; return ( <> - -
- - {icon && ( - - - - + +
+ + {siteView && ( + )}
- {routes.map(({ path, component }) => ( - - ))} - + {routes.map( + ({ path, component: RouteComponent, fetchInitialData }) => ( + { + if (!fetchInitialData) { + FirstLoadService.falsify(); + } + + return ( + +
+ {RouteComponent && + (isAuthPath(path ?? "") ? ( + + + + ) : ( + + ))} +
+
+ ); + }} + /> + ) + )} +