summaryrefslogtreecommitdiff
path: root/src/frontend/gateways/Session.gateway.ts
diff options
context:
space:
mode:
authorSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
committerSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
commit82e03978b89938219958032efb1448cc76baa181 (patch)
tree626f3e54d52ecd49be0ed3bee30abacc0453d081 /src/frontend/gateways/Session.gateway.ts
Initial snapshot - OpenTelemetry demo 2.1.3 -f
Diffstat (limited to 'src/frontend/gateways/Session.gateway.ts')
-rw-r--r--src/frontend/gateways/Session.gateway.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/frontend/gateways/Session.gateway.ts b/src/frontend/gateways/Session.gateway.ts
new file mode 100644
index 0000000..d5791b5
--- /dev/null
+++ b/src/frontend/gateways/Session.gateway.ts
@@ -0,0 +1,33 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+import { v4 } from 'uuid';
+
+interface ISession {
+ userId: string;
+ currencyCode: string;
+}
+
+const sessionKey = 'session';
+const defaultSession = {
+ userId: v4(),
+ currencyCode: 'USD',
+};
+
+const SessionGateway = () => ({
+ getSession(): ISession {
+ if (typeof window === 'undefined') return defaultSession;
+ const sessionString = localStorage.getItem(sessionKey);
+
+ if (!sessionString) localStorage.setItem(sessionKey, JSON.stringify(defaultSession));
+
+ return JSON.parse(sessionString || JSON.stringify(defaultSession)) as ISession;
+ },
+ setSessionValue<K extends keyof ISession>(key: K, value: ISession[K]) {
+ const session = this.getSession();
+
+ localStorage.setItem(sessionKey, JSON.stringify({ ...session, [key]: value }));
+ },
+});
+
+export default SessionGateway();