@@ -107,10 +107,13 @@ export const emptyApi: PullRequestDetailsControllerApi = {
107
107
108
108
export const PullRequestDetailsControllerContext = React . createContext ( emptyApi ) ;
109
109
110
- export interface PullRequestDetailsState extends PullRequestDetailsInitMessage { }
110
+ export interface PullRequestDetailsState extends PullRequestDetailsInitMessage {
111
+ isCheckingOutBranch : boolean ;
112
+ }
111
113
112
114
const emptyState : PullRequestDetailsState = {
113
115
...emptyPullRequestDetailsInitMessage ,
116
+ isCheckingOutBranch : false ,
114
117
} ;
115
118
116
119
export enum PullRequestDetailsUIActionType {
@@ -131,6 +134,7 @@ export enum PullRequestDetailsUIActionType {
131
134
UpdateMergeStrategies = 'updateMergeStrategies' ,
132
135
UpdateRelatedJiraIssues = 'updateRelatedJiraIssues' ,
133
136
UpdateRelatedBitbucketIssues = 'updateRelatedBitbucketIssues' ,
137
+ SetCheckoutLoading = 'setCheckoutLoading' ,
134
138
}
135
139
136
140
export type PullRequestDetailsUIAction =
@@ -160,7 +164,8 @@ export type PullRequestDetailsUIAction =
160
164
PullRequestDetailsUIActionType . UpdateRelatedBitbucketIssues ,
161
165
{ data : PullRequestDetailsRelatedBitbucketIssuesMessage }
162
166
>
163
- | ReducerAction < PullRequestDetailsUIActionType . Loading > ;
167
+ | ReducerAction < PullRequestDetailsUIActionType . Loading >
168
+ | ReducerAction < PullRequestDetailsUIActionType . SetCheckoutLoading , { data : { isLoading : boolean } } > ;
164
169
165
170
function pullRequestDetailsReducer (
166
171
state : PullRequestDetailsState ,
@@ -283,6 +288,12 @@ function pullRequestDetailsReducer(
283
288
loadState : { ...state . loadState , relatedBitbucketIssues : false } ,
284
289
} ;
285
290
}
291
+ case PullRequestDetailsUIActionType . SetCheckoutLoading : {
292
+ return {
293
+ ...state ,
294
+ isCheckingOutBranch : action . data . isLoading ,
295
+ } ;
296
+ }
286
297
default :
287
298
return defaultStateGuard ( state , action ) ;
288
299
}
@@ -459,8 +470,16 @@ export function usePullRequestDetailsController(): [PullRequestDetailsState, Pul
459
470
460
471
const checkoutBranch = useCallback ( ( ) => {
461
472
dispatch ( { type : PullRequestDetailsUIActionType . Loading } ) ;
462
- postMessage ( { type : PullRequestDetailsActionType . CheckoutBranch } ) ;
463
- } , [ postMessage ] ) ;
473
+ dispatch ( { type : PullRequestDetailsUIActionType . SetCheckoutLoading , data : { isLoading : true } } ) ;
474
+
475
+ postMessagePromise (
476
+ { type : PullRequestDetailsActionType . CheckoutBranch } ,
477
+ PullRequestDetailsMessageType . CheckoutBranch ,
478
+ ConnectionTimeout ,
479
+ ) . finally ( ( ) => {
480
+ dispatch ( { type : PullRequestDetailsUIActionType . SetCheckoutLoading , data : { isLoading : false } } ) ;
481
+ } ) ;
482
+ } , [ postMessagePromise ] ) ;
464
483
465
484
const postComment = useCallback (
466
485
( rawText : string , parentId ?: string ) : Promise < void > => {
0 commit comments