/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import { createContext, useContext, Context, useState } from 'react'; import { User, unknownUser } from '../models/User'; export interface AuthenticationProps { user: User; signIn: (user: User) => void; signOut: () => void; } const AuthenticationContext: Context = createContext({ user: unknownUser, signIn: (user: User) => {}, signOut: () => {} }); export function AuthenticationProvider({ children }: { children: React.ReactNode }): JSX.Element { const [user, setUser] = useState(unknownUser); const signIn = (user: User): void => setUser(user); const signOut = (): void => setUser(unknownUser); return ( {children} ); } export function useAuthentication(): AuthenticationProps { return useContext(AuthenticationContext); }