Skip to content

Commit

Permalink
app: Bubble main thread user to renderer
Browse files Browse the repository at this point in the history
  • Loading branch information
evanpurkhiser committed Nov 19, 2020
1 parent 6b067ff commit 89854c2
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 15 deletions.
7 changes: 6 additions & 1 deletion src/main/main.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
import 'regenerator-runtime/runtime';
import 'src/shared/sentry/main';
import {userInfo} from 'src/shared/sentry/main';

import * as path from 'path';
import * as url from 'url';
import {app, BrowserWindow, shell} from 'electron';
import {bringOnline, NetworkState, ProlinkNetwork} from 'prolink-connect';
import isDev from 'electron-is-dev';
import {set} from 'mobx';

import {startOverlayServer} from 'main/overlayServer';
import {registerMainIpc, observeStore, loadMainConfig} from 'src/shared/store/ipc';
import connectNetworkStore from 'src/shared/store/network';
import store from 'src/shared/store';
import {registerDebuggingEventsService} from 'src/main/debugEvents';

// Update the store with user details ASAP
(async () => set(store, {user: await userInfo}))();

// Intialize the store for the main thread immedaitely.
store.isInitalized = true;

Expand Down Expand Up @@ -57,6 +61,7 @@ const createWindow = () => {

return win;
};

app.on('ready', async () => {
createWindow();

Expand Down
6 changes: 6 additions & 0 deletions src/renderer/app.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'regenerator-runtime/runtime';
import 'src/shared/sentry/web';

import * as Sentry from '@sentry/browser';
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import {when} from 'mobx';
Expand All @@ -18,6 +19,11 @@ ReactDOM.render(<Application />, mainElement);

registerRendererIpc();

when(
() => store.user !== undefined,
() => Sentry.setUser(store.user!)
);

when(
() => store.isInitalized,
() => registerRendererConfigIpc()
Expand Down
25 changes: 14 additions & 11 deletions src/shared/sentry/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import publicIp from 'public-ip';

import {dsn} from './dsn';

export let userInfo: undefined | Promise<Sentry.User>;
let userInfo: undefined | Promise<Sentry.User>;

async function loadUserInfo() {
const user: Sentry.User = {
Expand All @@ -16,17 +16,20 @@ async function loadUserInfo() {
return user;
}

async function setupSentry() {
Sentry.init({
dsn,
release: process.env.RELEASE,
environment: process.env.RELEASE_CHANNEL,
sampleRate: 1,
tracesSampleRate: 1,
});
Sentry.init({
dsn,
release: process.env.RELEASE,
environment: process.env.RELEASE_CHANNEL,
sampleRate: 1,
tracesSampleRate: 1,
});

(async () => {
userInfo = loadUserInfo();
Sentry.setUser(await userInfo);
}
})();

setupSentry();
/**
* Export user info to be bubbled up to the renderer
*/
export {userInfo};
2 changes: 0 additions & 2 deletions src/shared/sentry/web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,3 @@ Sentry.init({
tracesSampleRate: 1,
autoSessionTracking: true,
});

export const setSentryUser = (user: User) => Sentry.setUser(user);
8 changes: 7 additions & 1 deletion src/shared/store/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {User} from '@sentry/types';
import {observable, toJS, computed} from 'mobx';
import {map, mapAsArray, object, list, custom, serializable, date} from 'serializr';
import * as ip from 'ip-address';
Expand All @@ -10,7 +11,6 @@ import {
HydrationProgress,
MediaSlot,
NetworkState,
MixstatusConfig,
} from 'prolink-connect/lib/types';

import {OverlayInstance} from 'src/overlay';
Expand Down Expand Up @@ -185,6 +185,12 @@ export class AppStore {
@serializable(object(AppConfig))
@observable
config = new AppConfig();
/**
* Sentry user information
*/
@serializable(rawJS)
@observable
user?: User;
}

export default observable(new AppStore());

0 comments on commit 89854c2

Please sign in to comment.