From 82e03978b89938219958032efb1448cc76baa181 Mon Sep 17 00:00:00 2001 From: Saumit Date: Sat, 27 Sep 2025 02:14:26 +0530 Subject: Initial snapshot - OpenTelemetry demo 2.1.3 -f --- src/react-native-app/gateways/Session.gateway.ts | 43 ++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/react-native-app/gateways/Session.gateway.ts (limited to 'src/react-native-app/gateways/Session.gateway.ts') 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 { + 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(key: K, value: ISession[K]) { + const session = this.getSession(); + + return AsyncStorage.setItem( + sessionKey, + JSON.stringify({ ...session, [key]: value }), + ); + }, +}); + +export default SessionGateway(); -- cgit v1.2.3