|
1 | 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. |
2 | 2 | // SPDX-License-Identifier: MIT-0 |
3 | 3 |
|
4 | | -import React, { useState, useEffect } from "react"; |
5 | | -import { BrowserRouter as Router, Switch, Route } from "react-router-dom"; |
6 | | -import AppLayout from "aws-northstar/layouts/AppLayout"; |
7 | | -import NorthStarThemeProvider from "aws-northstar/components/NorthStarThemeProvider"; |
| 4 | +import React, { useState } from "react"; |
8 | 5 | import HomeContainer from "../Home/HomeContainer"; |
9 | | -import { Amplify } from "aws-amplify"; |
10 | | -import { Auth } from "aws-amplify"; |
11 | 6 | import { withAuthenticator } from "@aws-amplify/ui-react"; |
12 | | -import Header from "aws-northstar/components/Header"; |
13 | | -import ButtonDropdown from "aws-northstar/components/ButtonDropdown"; |
14 | 7 | import { ThemeProvider } from "styled-components"; |
15 | | -import { lightTheme, MeetingProvider } from "amazon-chime-sdk-component-library-react"; |
| 8 | +import { darkTheme, MeetingProvider } from "amazon-chime-sdk-component-library-react"; |
| 9 | +import { AmplifyAuthenticator, AmplifySignIn } from '@aws-amplify/ui-react'; |
| 10 | +import { |
| 11 | + AppLayout, |
| 12 | + ButtonDropdown, |
| 13 | + Header, |
| 14 | + NorthStarThemeProvider, |
| 15 | +} from 'aws-northstar'; |
| 16 | +import Amplify, { Auth } from 'aws-amplify'; |
| 17 | +import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; |
16 | 18 |
|
17 | 19 | const menuItems = [ |
18 | 20 | { |
@@ -48,37 +50,52 @@ const awsConfig = { |
48 | 50 | Amplify.configure(awsConfig); |
49 | 51 |
|
50 | 52 | const App: React.FC = () => { |
51 | | - const [username, setUsername] = useState<string>(); |
52 | | - useEffect(() => { |
53 | | - (async () => { |
54 | | - try { |
55 | | - const user = await Auth.currentAuthenticatedUser(); |
56 | | - setUsername(user.username); |
57 | | - } catch (e) { |
58 | | - // No user currently logged in |
59 | | - } |
60 | | - })(); |
61 | | - }, []); |
| 53 | + const [user, setUser] = useState<any>(); |
62 | 54 |
|
63 | | - const rightContent = <ButtonDropdown content={username} items={menuItems} variant="primary" />; |
| 55 | + const rightContent = <ButtonDropdown darkTheme content={user?.attributes?.given_name || user?.username} items={menuItems} />; |
64 | 56 |
|
65 | 57 | return ( |
66 | | - <NorthStarThemeProvider> |
67 | | - <ThemeProvider theme={lightTheme}> |
68 | | - <Router> |
69 | | - <Header title="Cross Talk" rightContent={rightContent} /> |
70 | | - <MeetingProvider> |
71 | | - <AppLayout header={<div></div>}> |
72 | | - <Switch> |
73 | | - <Route exact path="/" component={HomeContainer} /> |
74 | | - </Switch> |
75 | | - </AppLayout> |
76 | | - </MeetingProvider> |
77 | | - </Router> |
78 | | - </ThemeProvider> |
79 | | - </NorthStarThemeProvider> |
| 58 | + <AmplifyAuthenticator |
| 59 | + handleAuthStateChange={async () => { |
| 60 | + try { |
| 61 | + setUser(await Auth.currentAuthenticatedUser()); |
| 62 | + } catch (err) { |
| 63 | + setUser(undefined); |
| 64 | + } |
| 65 | + }} |
| 66 | + > |
| 67 | + <AmplifySignIn slot="sign-in"> |
| 68 | + <div slot="secondary-footer-content"></div> |
| 69 | + <div slot="federated-buttons"></div> |
| 70 | + </AmplifySignIn> |
| 71 | + |
| 72 | + {user ? ( |
| 73 | + <NorthStarThemeProvider> |
| 74 | + <ThemeProvider theme={darkTheme}> |
| 75 | + <Router> |
| 76 | + <MeetingProvider> |
| 77 | + <AppLayout |
| 78 | + header={ |
| 79 | + <Header |
| 80 | + title="Cross Talk" |
| 81 | + rightContent={rightContent} |
| 82 | + /> |
| 83 | + } |
| 84 | + > |
| 85 | + <Switch> |
| 86 | + <Route exact path="/" component={HomeContainer} /> |
| 87 | + </Switch> |
| 88 | + </AppLayout> |
| 89 | + </MeetingProvider> |
| 90 | + </Router> |
| 91 | + </ThemeProvider> |
| 92 | + </NorthStarThemeProvider> |
| 93 | + ) : ( |
| 94 | + <></> |
| 95 | + )} |
| 96 | + </AmplifyAuthenticator> |
80 | 97 | ); |
81 | | -}; |
| 98 | + }; |
82 | 99 |
|
83 | 100 | // Temporarily restrict access via a login page. For unauthenticated |
84 | 101 | // access, replace with the commented line below |
|
0 commit comments