Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit f1afc43

Browse files
feat: initial rollbar setup
1 parent a8328e5 commit f1afc43

File tree

4 files changed

+82
-45
lines changed

4 files changed

+82
-45
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ jobs:
2020
node-version: 14
2121
- name: Install Packages
2222
run: npm install
23+
- name: Add Rollbar
24+
env:
25+
ROLLBAR_TOKEN: ${{ secrets.ROLLBAR_TOKEN }}
26+
run: echo export default '$ROLLBAR_TOKEN'; > ./src/renderer/lib/rollbarAccessToken.ts
2327
- name: Build and Test
2428
run: npm run build && npm test
2529
- name: Lint

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@
3131
"package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never",
3232
"prepare": "husky install",
3333
"rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app",
34-
"start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer",
34+
"setup-rollbar": "echo export default 'ROLLBAR_TOKEN'; > ./src/renderer/lib/rollbarAccessToken.ts",
35+
"start": "npm run setup-rollbar && ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer",
3536
"start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .",
3637
"start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts",
3738
"start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts",
38-
"test": "jest"
39+
"test": "npm run setup-rollbar && jest"
3940
},
4041
"lint-staged": {
4142
"*.{js,jsx,ts,tsx}": [

src/renderer/App.tsx

Lines changed: 55 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { ApolloProvider } from '@apollo/client';
22
import { ChakraProvider, ColorModeScript } from '@chakra-ui/react';
33
import { theme } from '@codiga/components';
44
import { MemoryRouter as Router, Routes, Route } from 'react-router-dom';
5+
import { Provider as RollbarProvider, ErrorBoundary } from '@rollbar/react';
56

67
// PAGES
78
import Home from './pages/Home';
@@ -21,6 +22,7 @@ import './styles/app.css';
2122

2223
// OTHER
2324
import client from './graphql/client';
25+
import { rollbarConfig } from './lib/rollbar';
2426
import Layout from './components/Layout';
2527
import Filters from './components/Filters/Filters';
2628
import { UserProvider } from './components/UserContext';
@@ -29,49 +31,59 @@ import { FiltersProvider } from './components/FiltersContext';
2931

3032
export default function App() {
3133
return (
32-
<ApolloProvider client={client}>
33-
<ColorModeScript initialColorMode="system" />
34-
<ChakraProvider theme={theme}>
35-
<UserProvider>
36-
<ThemeProvider>
37-
<FiltersProvider>
38-
<Router>
39-
<Layout>
40-
<Routes>
41-
<Route element={<Filters />}>
42-
<Route path="/" element={<Home />} />
43-
<Route path="/my-snippets" element={<MySnippets />} />
44-
<Route
45-
path="/favorite-snippets"
46-
element={<FavoriteSnippets />}
47-
/>
48-
<Route path="/my-cookbooks" element={<MyCookbooks />} />
49-
<Route
50-
path="/favorite-cookbooks"
51-
element={<FavoriteCookbooks />}
52-
/>
53-
<Route path="/team-snippets" element={<TeamSnippets />} />
54-
<Route
55-
path="/team-cookbooks"
56-
element={<TeamCookbooks />}
57-
/>
58-
</Route>
34+
<RollbarProvider config={rollbarConfig}>
35+
<ErrorBoundary>
36+
<ApolloProvider client={client}>
37+
<ColorModeScript initialColorMode="system" />
38+
<ChakraProvider theme={theme}>
39+
<UserProvider>
40+
<ThemeProvider>
41+
<FiltersProvider>
42+
<Router>
43+
<Layout>
44+
<Routes>
45+
<Route element={<Filters />}>
46+
<Route path="/" element={<Home />} />
47+
<Route path="/my-snippets" element={<MySnippets />} />
48+
<Route
49+
path="/favorite-snippets"
50+
element={<FavoriteSnippets />}
51+
/>
52+
<Route
53+
path="/my-cookbooks"
54+
element={<MyCookbooks />}
55+
/>
56+
<Route
57+
path="/favorite-cookbooks"
58+
element={<FavoriteCookbooks />}
59+
/>
60+
<Route
61+
path="/team-snippets"
62+
element={<TeamSnippets />}
63+
/>
64+
<Route
65+
path="/team-cookbooks"
66+
element={<TeamCookbooks />}
67+
/>
68+
</Route>
5969

60-
<Route
61-
path="/view-snippet/:snippetId"
62-
element={<ViewSnippet />}
63-
/>
64-
<Route
65-
path="/view-cookbook/:cookbookId"
66-
element={<ViewCookbookSnippets />}
67-
/>
68-
</Routes>
69-
</Layout>
70-
</Router>
71-
</FiltersProvider>
72-
</ThemeProvider>
73-
</UserProvider>
74-
</ChakraProvider>
75-
</ApolloProvider>
70+
<Route
71+
path="/view-snippet/:snippetId"
72+
element={<ViewSnippet />}
73+
/>
74+
<Route
75+
path="/view-cookbook/:cookbookId"
76+
element={<ViewCookbookSnippets />}
77+
/>
78+
</Routes>
79+
</Layout>
80+
</Router>
81+
</FiltersProvider>
82+
</ThemeProvider>
83+
</UserProvider>
84+
</ChakraProvider>
85+
</ApolloProvider>
86+
</ErrorBoundary>
87+
</RollbarProvider>
7688
);
7789
}

src/renderer/lib/rollbar.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import rollbarAccessToken from './rollbarAccessToken';
2+
3+
export const rollbarConfig = {
4+
accessToken: rollbarAccessToken,
5+
captureUncaught: true,
6+
captureUnhandledRejections: true,
7+
payload: { environment: process.env.NODE_ENV || 'development' },
8+
autoInstrument: {
9+
network: true,
10+
networkResponseHeaders: true,
11+
// networkResponseBody: true,
12+
networkRequestBody: true,
13+
log: true,
14+
dom: true,
15+
navigation: true,
16+
connectivity: true,
17+
contentSecurityPolicy: true,
18+
errorOnContentSecurityPolicy: true,
19+
},
20+
};

0 commit comments

Comments
 (0)