@@ -12,6 +12,7 @@ import idx from 'idx';
12
12
import { NotificationContainer } from './Notifications' ;
13
13
import OneGraphLogo from './oneGraphLogo' ;
14
14
import { Grommet , Grid , Box , Heading , Text , Anchor } from 'grommet' ;
15
+ import { StatusCritical } from 'grommet-icons' ;
15
16
import ScrollMemory from 'react-router-scroll-memory' ;
16
17
import { matchPath } from 'react-router-dom' ;
17
18
import UserContext from './UserContext' ;
@@ -42,6 +43,16 @@ const postsRootQuery = graphql`
42
43
}
43
44
` ;
44
45
46
+ const ErrorBox = ( { error} ) => {
47
+ const relayError = idx ( error , _ => _ . source . errors [ 0 ] . message ) ;
48
+ return (
49
+ < Box gap = "xsmall" justify = "center" align = "center" direction = "row" >
50
+ < StatusCritical color = "status-error" /> { ' ' }
51
+ < Text size = "medium" > { relayError || error . message } </ Text >
52
+ </ Box >
53
+ ) ;
54
+ } ;
55
+
45
56
const PostsRoot = ( {
46
57
error,
47
58
props,
@@ -50,16 +61,14 @@ const PostsRoot = ({
50
61
props : ?App_ViewerQueryResponse ,
51
62
} ) => {
52
63
if ( error ) {
53
- // TODO: better errors
54
- return < div > Error!</ div > ;
64
+ return < ErrorBox error = { error } /> ;
55
65
}
56
66
if ( ! props ) {
57
67
return null ;
58
68
}
59
69
const respository = props . gitHub ? props . gitHub . repository : null ;
60
70
if ( ! respository ) {
61
- // TODO: better errors
62
- return < div > repository not found</ div > ;
71
+ return < ErrorBox error = { new Error ( 'Repository not found.' ) } /> ;
63
72
} else {
64
73
return < Posts repository = { respository } /> ;
65
74
}
@@ -93,16 +102,15 @@ const PostRoot = ({
93
102
props : ?App_ViewerQueryResponse ,
94
103
} ) => {
95
104
if ( error ) {
96
- return < div > Error! </ div > ;
105
+ return < ErrorBox error = { error } / >;
97
106
}
98
107
if ( ! props ) {
99
108
return null ;
100
109
}
101
110
const post = idx ( props , _ => _ . gitHub . repository . issue ) ;
102
111
const labels = idx ( post , _ => _ . labels . nodes ) || [ ] ;
103
112
if ( ! post || ! labels . map ( l => l . name ) . includes ( 'publish' ) ) {
104
- // TODO: better errors
105
- return < div > Post not found</ div > ;
113
+ return < ErrorBox error = { new Error ( 'Missing post.' ) } /> ;
106
114
} else {
107
115
return < Post post = { post } /> ;
108
116
}
0 commit comments