diff --git a/scm-ui/ui-components/src/avatar/AvatarImage.tsx b/scm-ui/ui-components/src/avatar/AvatarImage.tsx index a30a999d18..d85d2279ee 100644 --- a/scm-ui/ui-components/src/avatar/AvatarImage.tsx +++ b/scm-ui/ui-components/src/avatar/AvatarImage.tsx @@ -1,25 +1,26 @@ -import React, {FC} from "react"; -import { binder } from "@scm-manager/ui-extensions"; +import React, { FC } from "react"; import { Image } from ".."; import { Person } from "./Avatar"; import { EXTENSION_POINT } from "./Avatar"; +import { useBinder } from "@scm-manager/ui-extensions"; type Props = { person: Person; representation?: "rounded" | "rounded-border"; }; -const AvatarImage:FC = ({person, representation = "rounded-border"}) => { - const avatarFactory = binder.getExtension(EXTENSION_POINT); - if (avatarFactory) { - const avatar = avatarFactory(person); +const AvatarImage: FC = ({ person, representation = "rounded-border" }) => { + const binder = useBinder(); + const avatarFactory = binder.getExtension(EXTENSION_POINT); + if (avatarFactory) { + const avatar = avatarFactory(person); - const className = representation === "rounded" ? "is-rounded" : "has-rounded-border"; + const className = representation === "rounded" ? "is-rounded" : "has-rounded-border"; - return {person.name}; - } + return {person.name}; + } - return null; + return null; }; export default AvatarImage; diff --git a/scm-ui/ui-components/src/avatar/AvatarWrapper.tsx b/scm-ui/ui-components/src/avatar/AvatarWrapper.tsx index 09ed7391cf..695cb36064 100644 --- a/scm-ui/ui-components/src/avatar/AvatarWrapper.tsx +++ b/scm-ui/ui-components/src/avatar/AvatarWrapper.tsx @@ -1,18 +1,13 @@ -import React, { Component, ReactNode } from "react"; -import { binder } from "@scm-manager/ui-extensions"; +import React, { FC } from "react"; +import { useBinder } from "@scm-manager/ui-extensions"; import { EXTENSION_POINT } from "./Avatar"; -type Props = { - children: ReactNode; +const AvatarWrapper: FC = ({ children }) => { + const binder = useBinder(); + if (binder.hasExtension(EXTENSION_POINT)) { + return <>{children}; + } + return null; }; -class AvatarWrapper extends Component { - render() { - if (binder.hasExtension(EXTENSION_POINT)) { - return <>{this.props.children}; - } - return null; - } -} - export default AvatarWrapper; diff --git a/scm-ui/ui-components/src/layout/Footer.tsx b/scm-ui/ui-components/src/layout/Footer.tsx index a74551198a..3243134353 100644 --- a/scm-ui/ui-components/src/layout/Footer.tsx +++ b/scm-ui/ui-components/src/layout/Footer.tsx @@ -1,7 +1,7 @@ -import React from "react"; +import React, { FC } from "react"; import { Me, Links } from "@scm-manager/ui-types"; import { Link } from "react-router-dom"; -import { binder } from "@scm-manager/ui-extensions"; +import { useBinder } from "@scm-manager/ui-extensions"; import { AvatarWrapper, AvatarImage } from "../avatar"; type Props = { @@ -10,56 +10,53 @@ type Props = { links: Links; }; -class Footer extends React.Component { - render() { - const { me, version, links } = this.props; - if (!me) { - return ""; - } - - const extensionProps = { me, links }; - const extensions = binder.getExtensions("footer.links", extensionProps); - - return ( - - ); +const Footer: FC = ({ me, version, links }) => { + const binder = useBinder(); + if (!me) { + return null; } -} + const extensionProps = { me, links }; + const extensions = binder.getExtensions("footer.links", extensionProps); + + return ( + + ); +}; export default Footer;