/******************************************************************************** * Copyright (c) 2019 TypeFox and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * SPDX-License-Identifier: EPL-2.0 ********************************************************************************/ import { FunctionComponent, ReactNode, useContext } from 'react'; import { Helmet } from 'react-helmet-async'; import { Grid, Container, Box, Typography, Link } from '@mui/material'; import { useParams } from 'react-router-dom'; import { DelayedLoadIndicator } from '../../components/delayed-load-indicator'; import { UserSettingTabs } from './user-setting-tabs'; import { UserSettingsTokens } from './user-settings-tokens'; import { UserSettingsProfile } from './user-settings-profile'; import { UserSettingsNamespaces } from './user-settings-namespaces'; import { UserSettingsExtensions } from './user-settings-extensions'; import { UserSettingsCustomers } from './user-settings-customers'; import { MainContext } from '../../context'; import { UserData } from '../../extension-registry-types'; import { LoginComponent } from '../../default/login'; import { UserSettingsDeleteExtension } from './user-settings-delete-extension'; export const UserSettings: FunctionComponent = props => { const { pageSettings, user, loginProviders } = useContext(MainContext); const { tab, namespace, extension } = useParams(); const renderTab = (user: UserData, tab?: string, namespace?: string, extension?: string): ReactNode => { if (tab == null && namespace != null && extension != null) { return ; } switch (tab) { case 'profile': return ; case 'tokens': return ; case 'namespaces': return ; case 'extensions': return ; case 'customers': return ; default: return null; } }; const renderContent = (): ReactNode => { if (props.userLoading) { return ; } if (!user) { return loginProviders ? Not Logged In Please { return (log in); }}/> to access your account settings. : null; } return {renderTab(user, tab, namespace, extension)} ; }; return <> Settings – { pageSettings.pageTitle } { renderContent() } ; }; export interface UserSettingsProps { userLoading: boolean; }