1
1
import React , { lazy , Suspense } from "react" ;
2
2
3
+ import { ErrorBoundary } from "react-error-boundary" ;
3
4
import { Route } from "react-router-dom" ;
4
5
5
6
import "react-loading-skeleton/dist/skeleton.css" ;
6
7
import "react-toastify/dist/ReactToastify.css" ;
8
+
7
9
import AtlasProvider from "context/AtlasProvider" ;
8
10
import GraphqlBatcherProvider from "context/GraphqlBatcher" ;
9
11
import IsListProvider from "context/IsListProvider" ;
@@ -22,87 +24,90 @@ import Web3Provider from "context/Web3Provider";
22
24
import Loader from "components/Loader" ;
23
25
import Layout from "layout/index" ;
24
26
27
+ import ErrorFallback from "./components/ErrorFallback" ;
25
28
import TranslateProvider from "./context/TranslateProvider" ;
26
29
import { SentryRoutes } from "./utils/sentry" ;
27
30
28
31
const App : React . FC = ( ) => {
29
32
return (
30
33
< StyledComponentsProvider >
31
- < Web3Provider >
32
- < QueryClientProvider >
33
- < GraphqlBatcherProvider >
34
- < AtlasProvider >
35
- < IsListProvider >
36
- < NewDisputeProvider >
37
- < TranslateProvider >
38
- < SentryRoutes >
39
- < Route path = "/" element = { < Layout /> } >
40
- < Route
41
- index
42
- element = {
43
- < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
44
- < Home />
45
- </ Suspense >
46
- }
47
- />
48
- < Route
49
- path = "cases/*"
50
- element = {
51
- < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
52
- < Cases />
53
- </ Suspense >
54
- }
55
- />
56
- < Route
57
- path = "courts/*"
58
- element = {
59
- < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
60
- < Courts />
61
- </ Suspense >
62
- }
63
- />
64
- < Route
65
- path = "dashboard/:page/:order/:filter"
66
- element = {
67
- < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
68
- < Dashboard />
69
- </ Suspense >
70
- }
71
- />
72
- < Route
73
- path = "resolver/*"
74
- element = {
75
- < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
76
- < DisputeResolver />
77
- </ Suspense >
78
- }
79
- />
80
- < Route
81
- path = "get-pnk/*"
82
- element = {
83
- < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
84
- < GetPnk />
85
- </ Suspense >
86
- }
87
- />
88
- < Route
89
- path = "settings/*"
90
- element = {
91
- < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
92
- < Settings />
93
- </ Suspense >
94
- }
95
- />
96
- < Route path = "*" element = { < h1 > Justice not found here ¯\_( ͡° ͜ʖ ͡°)_/¯</ h1 > } />
97
- </ Route >
98
- </ SentryRoutes >
99
- </ TranslateProvider >
100
- </ NewDisputeProvider >
101
- </ IsListProvider >
102
- </ AtlasProvider >
103
- </ GraphqlBatcherProvider >
104
- </ QueryClientProvider >
105
- </ Web3Provider >
34
+ < ErrorBoundary FallbackComponent = { ErrorFallback } >
35
+ < Web3Provider >
36
+ < QueryClientProvider >
37
+ < GraphqlBatcherProvider >
38
+ < AtlasProvider >
39
+ < IsListProvider >
40
+ < NewDisputeProvider >
41
+ < TranslateProvider >
42
+ < SentryRoutes >
43
+ < Route path = "/" element = { < Layout /> } >
44
+ < Route
45
+ index
46
+ element = {
47
+ < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
48
+ < Home />
49
+ </ Suspense >
50
+ }
51
+ />
52
+ < Route
53
+ path = "cases/*"
54
+ element = {
55
+ < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
56
+ < Cases />
57
+ </ Suspense >
58
+ }
59
+ />
60
+ < Route
61
+ path = "courts/*"
62
+ element = {
63
+ < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
64
+ < Courts />
65
+ </ Suspense >
66
+ }
67
+ />
68
+ < Route
69
+ path = "dashboard/:page/:order/:filter"
70
+ element = {
71
+ < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
72
+ < Dashboard />
73
+ </ Suspense >
74
+ }
75
+ />
76
+ < Route
77
+ path = "resolver/*"
78
+ element = {
79
+ < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
80
+ < DisputeResolver />
81
+ </ Suspense >
82
+ }
83
+ />
84
+ < Route
85
+ path = "get-pnk/*"
86
+ element = {
87
+ < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
88
+ < GetPnk />
89
+ </ Suspense >
90
+ }
91
+ />
92
+ < Route
93
+ path = "settings/*"
94
+ element = {
95
+ < Suspense fallback = { < Loader width = { "48px" } height = { "48px" } /> } >
96
+ < Settings />
97
+ </ Suspense >
98
+ }
99
+ />
100
+ < Route path = "*" element = { < h1 > Justice not found here ¯\_( ͡° ͜ʖ ͡°)_/¯</ h1 > } />
101
+ </ Route >
102
+ </ SentryRoutes >
103
+ </ TranslateProvider >
104
+ </ NewDisputeProvider >
105
+ </ IsListProvider >
106
+ </ AtlasProvider >
107
+ </ GraphqlBatcherProvider >
108
+ </ QueryClientProvider >
109
+ </ Web3Provider >
110
+ </ ErrorBoundary >
106
111
</ StyledComponentsProvider >
107
112
) ;
108
113
} ;
0 commit comments