11import * as PropTypes from 'prop-types' ;
22import * as React from 'react' ;
3- import { isPromise } from '../../utils' ;
43
54export interface IResolveProps {
65 /** The promise. */
7- promise ? : Promise < any > ;
6+ promise : Promise < any > ;
87
98 /** Returns content when promise is resolved. */
10- resolved ?: ( value ) => React . ReactNode ;
9+ resolved ?: ( value : any ) => React . ReactNode ;
1110
1211 /** Returns content while promise is being handled. */
1312 pending ?: React . ReactNode ;
1413
1514 /** Returns content when promise is rejected. */
16- rejected ?: ( error ) => React . ReactNode ;
15+ rejected ?: ( error : any ) => React . ReactNode ;
1716}
1817
19- const statusTypes = {
18+ export const statusTypes = {
2019 none : 'none' ,
2120 pending : 'pending' ,
2221 rejected : 'rejected' ,
2322 resolved : 'resolved' ,
2423} ;
2524
26- const initialState = {
25+ export const initialState = {
2726 status : statusTypes . none ,
2827 value : '' ,
2928} ;
3029
31- type IResolveState = Readonly < typeof initialState > ;
30+ export type IResolveState = Readonly < typeof initialState > ;
3231
3332/**
3433 * Semantic helper component that returns content based on the status of the specified promise.
3534 */
3635class Resolve extends React . Component < IResolveProps , IResolveState > {
3736 public static propTypes = {
3837 pending : PropTypes . oneOfType ( [ PropTypes . func , PropTypes . node ] ) ,
39- promise : isPromise ,
38+ promise : PropTypes . instanceOf ( Promise ) . isRequired ,
4039 rejected : PropTypes . func ,
4140 resolved : PropTypes . func ,
4241 } ;
@@ -52,7 +51,7 @@ class Resolve extends React.Component<IResolveProps, IResolveState> {
5251 this . handlePromise ( this . props . promise ) ;
5352 }
5453
55- public componentDidUpdate ( prevProps ) {
54+ public componentDidUpdate ( prevProps : IResolveProps ) {
5655 if ( this . props . promise !== prevProps . promise ) {
5756 this . setState ( {
5857 status : statusTypes . none ,
@@ -95,7 +94,7 @@ class Resolve extends React.Component<IResolveProps, IResolveState> {
9594 }
9695
9796 // Promise resolver function
98- private handlePromise ( promise ) {
97+ private handlePromise ( promise : Promise < any > ) {
9998 // Store the current promise to fast exit if promise is change during handling
10099 const currentPromise = promise ;
101100 this . setState ( {
0 commit comments