summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/contexts/SessionContext.tsx
diff options
context:
space:
mode:
authorAbhi <[email protected]>2025-06-08 18:01:02 -0400
committerGitHub <[email protected]>2025-06-08 18:01:02 -0400
commit7868ef82299ae1da5a09334f67d57eb3b472563a (patch)
tree68e6a007dc0a762ae868cb7313c700686c4a1857 /packages/cli/src/ui/contexts/SessionContext.tsx
parent9104ac02f7ac68d84bf9a3a78514bd080c77eec5 (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.tsx38
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;
+};