diff --git a/src/logger/metadata/index.ts b/src/logger/metadata/index.ts index 66027eb104..9b101fbc0d 100644 --- a/src/logger/metadata/index.ts +++ b/src/logger/metadata/index.ts @@ -41,12 +41,13 @@ let baseMetadata: BaseMetadata = { country: device.get(['mergedGeolocation'])?.countryCode || 'unknown', } export function updateBaseMetadata( - metadata: Omit, + metadata: Partial>, ) { baseMetadata = { - deviceId: getDeviceId() || 'unknown', - sessionId: getSessionId(), + ...baseMetadata, ...metadata, + sessionId: metadata.sessionId || getSessionId(), + deviceId: getDeviceId() || 'unknown', } __onMetadataChange() } diff --git a/src/logger/metadata/sessionId.ts b/src/logger/metadata/sessionId.ts index 3a7d3bf012..c4494ddcf3 100644 --- a/src/logger/metadata/sessionId.ts +++ b/src/logger/metadata/sessionId.ts @@ -1,6 +1,7 @@ import uuid from 'react-native-uuid' import {onAppStateChange} from '#/lib/appState' +import {updateBaseMetadata} from '#/logger/metadata' import {device} from '#/storage' const TTL = 5 * 60 * 1e3 // 5 min on native @@ -14,6 +15,7 @@ let sessionId = (() => { const lastEvent = device.get(['nativeSessionIdLastEventAt']) const id = existing && !expired(lastEvent) ? existing : uuid.v4() device.set(['nativeSessionId'], id) + updateBaseMetadata({sessionId: id}) return id })() @@ -23,6 +25,7 @@ onAppStateChange(state => { if (expired(lastEvent)) { sessionId = uuid.v4() device.set(['nativeSessionId'], sessionId) + updateBaseMetadata({sessionId}) } } else { device.set(['nativeSessionIdLastEventAt'], Date.now()) diff --git a/src/logger/metadata/sessionId.web.ts b/src/logger/metadata/sessionId.web.ts index 60702539c8..e45096792e 100644 --- a/src/logger/metadata/sessionId.web.ts +++ b/src/logger/metadata/sessionId.web.ts @@ -1,6 +1,7 @@ import uuid from 'react-native-uuid' import {onAppStateChange} from '#/lib/appState' +import {updateBaseMetadata} from '#/logger/metadata' const TTL = 30 * 60 * 1e3 // 30 min on web const SESSION_ID_KEY = 'bsky_session_id' @@ -17,6 +18,7 @@ let sessionId = (() => { const lastEvent = lastEventStr ? Number(lastEventStr) : undefined const id = existing && !expired(lastEvent) ? existing : uuid.v4() window.sessionStorage.setItem(SESSION_ID_KEY, id) + updateBaseMetadata({sessionId: id}) return id })() @@ -27,6 +29,7 @@ onAppStateChange(state => { if (expired(lastEvent)) { sessionId = uuid.v4() window.sessionStorage.setItem(SESSION_ID_KEY, sessionId) + updateBaseMetadata({sessionId}) } } else { window.sessionStorage.setItem(LAST_EVENT_KEY, String(Date.now()))