summaryrefslogtreecommitdiff
path: root/src/react-native-app/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/react-native-app/gateways/Session.gateway.ts
Initial snapshot - OpenTelemetry demo 2.1.3 -f
Diffstat (limited to 'src/react-native-app/gateways/Session.gateway.ts')
-rw-r--r--src/react-native-app/gateways/Session.gateway.ts43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/react-native-app/gateways/Session.gateway.ts b/src/react-native-app/gateways/Session.gateway.ts
new file mode 100644
index 0000000..d6da9e1
--- /dev/null
+++ b/src/react-native-app/gateways/Session.gateway.ts
@@ -0,0 +1,43 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+/**
+ * Copied with modification from src/frontend/gateways/Session.gateway.ts
+ */
+import "react-native-get-random-values"; // Must be imported before 'uuid', see https://stackoverflow.com/a/68097811
+import { v4 } from "uuid";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+
+interface ISession {
+ userId: string;
+ currencyCode: string;
+}
+
+const sessionKey = "session";
+const defaultSession = {
+ userId: v4(),
+ currencyCode: "USD",
+};
+
+const SessionGateway = () => ({
+ async getSession(): Promise<ISession> {
+ const sessionString = await AsyncStorage.getItem(sessionKey);
+
+ if (!sessionString) {
+ await AsyncStorage.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();
+
+ return AsyncStorage.setItem(
+ sessionKey,
+ JSON.stringify({ ...session, [key]: value }),
+ );
+ },
+});
+
+export default SessionGateway();