// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React, {createContext} from 'react'; type WithServerUrlProps = { serverUrl: string; } type GetProps = C extends React.ComponentType ? P : never type ServerContextType = { displayName: string; url: string; } type Props = { server: ServerContextType; children: React.ReactNode; } const ServerContext = createContext({displayName: '', url: ''}); const {Provider, Consumer} = ServerContext; function ServerUrlProvider({server, children}: Props) { return ( {children} ); } export function withServerUrl, P = GetProps>(Component: C) { return function ServerUrlComponent(props: JSX.LibraryManagedAttributes) { return ( {(server: ServerContextType) => ( )} ); }; } export function useServerDisplayName(): string { const server = React.useContext(ServerContext); return server.displayName; } export function useServerUrl(): string { const server = React.useContext(ServerContext); return server.url; } export default ServerUrlProvider;