X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fapp%2Fapp.tsx;h=3452f9627c3159d672b676b98b75e3a8c0d166f8;hb=b1292b958af008763028df9591f5778be9d117f5;hp=a788636193bbb5f2c56dd064e0e546bfb1e7c807;hpb=62139df0c322101e805bde7f13399b86562e7c44;p=lemmy-ui.git diff --git a/src/shared/components/app/app.tsx b/src/shared/components/app/app.tsx index a788636..3452f96 100644 --- a/src/shared/components/app/app.tsx +++ b/src/shared/components/app/app.tsx @@ -1,56 +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; + const siteRes = this.isoData.site_res; + const siteView = siteRes?.site_view; return ( <> - -
- - {siteView.site.icon.match({ - some: icon => ( - - - - - ), - none: <>, - })} + +
+ + {siteView && ( + + )}
- {routes.map(({ path, exact, component: C, ...rest }) => ( - } - /> - ))} - } /> + {routes.map( + ({ path, component: RouteComponent, fetchInitialData }) => ( + { + if (!fetchInitialData) { + FirstLoadService.falsify(); + } + + return ( + +
+ {RouteComponent && + (isAuthPath(path ?? "") ? ( + + + + ) : ( + + ))} +
+
+ ); + }} + /> + ) + )} +