frontend/src/context/CustomerContext.tsx (34 lines of code) (raw):
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import {
createContext,
Dispatch,
ReactNode,
SetStateAction,
useContext,
useMemo,
useState,
} from 'react';
type CustomerContextType = {
customerId: string;
setCustomerId: Dispatch<SetStateAction<string>>;
};
const CustomerContext = createContext<CustomerContextType>({
customerId: '',
setCustomerId: () => {
// Initial
},
});
type Props = {
children: ReactNode;
};
export const CustomerProvider = ({ children }: Props) => {
const [customerId, setCustomerId] = useState('');
const value = useMemo(
() => ({
customerId,
setCustomerId,
}),
[customerId],
);
return (
<CustomerContext.Provider value={value}>
{children}
</CustomerContext.Provider>
);
};
export const useCustomer = () => useContext(CustomerContext);