From 005383f94b3477f09749de247167ca7b7bb85ba8 Mon Sep 17 00:00:00 2001 From: John Knox Date: Fri, 11 Jan 2019 03:55:19 -0800 Subject: [PATCH] Add sessionId to redux store and Logger output Summary: I've left InteractionTracker without a store, so it doesn't know the sessionId. It really should have one, but that will have to be a different change. We don't actually use the InteractionTracker at the moment so it's not a major deal for now. The idea is to be able to get data like what percentage of sessions encounter an error, and how many errors sessions usually have etc. Reviewed By: passy Differential Revision: D13624031 fbshipit-source-id: 664e7ac5023166c2f72df3058c219901be7ff77a --- flow-typed/npm/uuid_v3.x.x.js | 102 ++++++++++++++++++++++++++++++++++ package.json | 1 + src/fb-stubs/Logger.js | 2 +- src/init.js | 2 +- src/reducers/application.js | 3 + 5 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 flow-typed/npm/uuid_v3.x.x.js diff --git a/flow-typed/npm/uuid_v3.x.x.js b/flow-typed/npm/uuid_v3.x.x.js new file mode 100644 index 000000000..bf8d507b3 --- /dev/null +++ b/flow-typed/npm/uuid_v3.x.x.js @@ -0,0 +1,102 @@ +// flow-typed signature: 3cf668e64747095cab0bb360cf2fb34f +// flow-typed version: d659bd0cb8/uuid_v3.x.x/flow_>=v0.32.x + +declare module "uuid" { + declare class uuid { + static ( + options?: {| + random?: number[], + rng?: () => number[] | Buffer + |}, + buffer?: number[] | Buffer, + offset?: number + ): string, + + static v1( + options?: {| + node?: number[], + clockseq?: number, + msecs?: number | Date, + nsecs?: number + |}, + buffer?: number[] | Buffer, + offset?: number + ): string, + + static v4( + options?: {| + random?: number[], + rng?: () => number[] | Buffer + |}, + buffer?: number[] | Buffer, + offset?: number + ): string + } + declare module.exports: Class; +} + +declare module "uuid/v1" { + declare class v1 { + static ( + options?: {| + node?: number[], + clockseq?: number, + msecs?: number | Date, + nsecs?: number + |}, + buffer?: number[] | Buffer, + offset?: number + ): string + } + + declare module.exports: Class; +} + +declare module "uuid/v3" { + declare class v3 { + static ( + name?: string | number[], + namespace?: string | number[], + buffer?: number[] | Buffer, + offset?: number + ): string, + + static name: string, + static DNS: string, + static URL: string + } + + declare module.exports: Class; +} + +declare module "uuid/v4" { + declare class v4 { + static ( + options?: {| + random?: number[], + rng?: () => number[] | Buffer + |}, + buffer?: number[] | Buffer, + offset?: number + ): string + } + + declare module.exports: Class; +} + +declare module "uuid/v5" { + declare class v5 { + static ( + name?: string | number[], + namespace?: string | number[], + buffer?: number[] | Buffer, + offset?: number + ): string, + + static name: string, + static DNS: string, + static URL: string + } + + declare module.exports: Class; +} diff --git a/package.json b/package.json index 6b14697fd..0500b2996 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "socket.io": "^2.0.4", "string-natural-compare": "^2.0.2", "tmp": "^0.0.33", + "uuid": "^3.3.2", "websocket": "^1.0.24", "which": "^1.3.1", "xml2js": "^0.4.19", diff --git a/src/fb-stubs/Logger.js b/src/fb-stubs/Logger.js index f602f2a72..3ddb6ebf5 100644 --- a/src/fb-stubs/Logger.js +++ b/src/fb-stubs/Logger.js @@ -10,7 +10,7 @@ export type TrackType = 'duration' | 'usage' | 'performance'; import ScribeLogger from './ScribeLogger'; export default class LogManager { - constructor() { + constructor(store: ?Store) { this.scribeLogger = new ScribeLogger(this); } diff --git a/src/init.js b/src/init.js index 311029738..5ab00ba6a 100644 --- a/src/init.js +++ b/src/init.js @@ -26,7 +26,7 @@ const store = createStore( ); persistStore(store); -const logger = new Logger(); +const logger = new Logger(store); const bugReporter = new BugReporter(logger, store); dispatcher(store, logger); GK.init(); diff --git a/src/reducers/application.js b/src/reducers/application.js index 2c8073039..6aac10874 100644 --- a/src/reducers/application.js +++ b/src/reducers/application.js @@ -6,6 +6,7 @@ */ import {remote} from 'electron'; +import uuidv1 from 'uuid/v1'; export const ACTIVE_SHEET_PLUGIN_SHEET: 'PLUGIN_SHEET' = 'PLUGIN_SHEET'; export const ACTIVE_SHEET_BUG_REPORTER: 'BUG_REPORTER' = 'BUG_REPORTER'; @@ -24,6 +25,7 @@ export type State = { rightSidebarAvailable: boolean, windowIsFocused: boolean, activeSheet: ActiveSheet, + sessionId: ?string, }; type BooleanActionType = @@ -48,6 +50,7 @@ const initialState: () => State = () => ({ rightSidebarAvailable: false, windowIsFocused: remote.getCurrentWindow().isFocused(), activeSheet: null, + sessionId: uuidv1(), }); export default function reducer(state: State, action: Action): State {