diff options
| author | Abhi <[email protected]> | 2025-06-08 18:01:02 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-08 18:01:02 -0400 |
| commit | 7868ef82299ae1da5a09334f67d57eb3b472563a (patch) | |
| tree | 68e6a007dc0a762ae868cb7313c700686c4a1857 /packages/cli/src/ui/contexts/SessionContext.tsx | |
| parent | 9104ac02f7ac68d84bf9a3a78514bd080c77eec5 (diff) | |
feat: Introduce session context and add session duration stat for `/stats` command (#854)
Diffstat (limited to 'packages/cli/src/ui/contexts/SessionContext.tsx')
| -rw-r--r-- | packages/cli/src/ui/contexts/SessionContext.tsx | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/packages/cli/src/ui/contexts/SessionContext.tsx b/packages/cli/src/ui/contexts/SessionContext.tsx new file mode 100644 index 00000000..c511aa46 --- /dev/null +++ b/packages/cli/src/ui/contexts/SessionContext.tsx @@ -0,0 +1,38 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import React, { createContext, useContext, useState, useMemo } from 'react'; + +interface SessionContextType { + startTime: Date; +} + +const SessionContext = createContext<SessionContextType | null>(null); + +export const SessionProvider: React.FC<{ children: React.ReactNode }> = ({ + children, +}) => { + const [startTime] = useState(new Date()); + + const value = useMemo( + () => ({ + startTime, + }), + [startTime], + ); + + return ( + <SessionContext.Provider value={value}>{children}</SessionContext.Provider> + ); +}; + +export const useSession = () => { + const context = useContext(SessionContext); + if (!context) { + throw new Error('useSession must be used within a SessionProvider'); + } + return context; +}; |
