File tree 2 files changed +20
-12
lines changed
2 files changed +20
-12
lines changed Original file line number Diff line number Diff line change 1
- import React , { useEffect } from "react" ;
2
- import { withRouter } from "react-router-dom" ;
1
+ import React , { useEffect , useState } from "react" ;
3
2
import * as ResolverService from "./services/resolver" ;
4
3
5
4
function Resolver ( props ) {
6
5
const slug = props . match . params . slug ;
6
+ const [ status , setStatus ] = useState ( 'Redirecting...' ) ;
7
7
8
8
// look up url
9
9
useEffect ( ( ) => {
10
- // TODO: error handling
11
10
ResolverService . resolve ( slug , ( originalUrl ) => {
12
11
console . debug ( `original url: ${ originalUrl } .` )
13
12
14
13
window . location . replace ( originalUrl ) ;
15
- } )
16
- } ) ;
14
+ } , ( error ) => {
15
+ setStatus ( 'Incorrect URL.' )
16
+ console . error ( error ) ;
17
+ } ) ;
18
+ } , [ slug ] ) ;
17
19
18
20
return (
19
- < div >
20
- < p > Redirecting... </ p >
21
+ < div className = "resolver" >
22
+ < p > { status } </ p >
21
23
</ div >
22
24
) ;
23
25
}
24
26
25
- export default withRouter ( Resolver ) ;
27
+ export default Resolver ;
Original file line number Diff line number Diff line change @@ -4,13 +4,19 @@ import * as FirestoreService from "./firestore";
4
4
* resolves slug to original url
5
5
*
6
6
* @param slug
7
- * @param observer
7
+ * @param resolve
8
+ * @param reject
8
9
*/
9
- export const resolve = ( slug , observer ) => {
10
+ export const resolve = ( slug , resolve , reject ) => {
10
11
FirestoreService . get ( 'urls' , slug ) . then ( ( snapshot ) => {
11
- observer ( snapshot . get ( 'original' ) ) ;
12
+ if ( ! snapshot . exists ) {
13
+ reject ( `URL ${ slug } not found in db.` ) ;
14
+ return ;
15
+ }
16
+
17
+ resolve ( snapshot . get ( 'original' ) ) ;
12
18
} ) . catch ( ( error ) => {
13
- console . error ( error ) ;
19
+ reject ( error ) ;
14
20
} ) ;
15
21
}
16
22
You can’t perform that action at this time.
0 commit comments