@@ -8,14 +8,17 @@ import {
8
8
ReviewRequestService ,
9
9
ReviewRequestSourceCodeService
10
10
} from '@code-review/shared' ;
11
- import { Observable , forkJoin , tap } from 'rxjs' ;
11
+ import monacoLoader from '@monaco-editor/loader' ;
12
+ import { Observable , forkJoin , from , switchMap , tap } from 'rxjs' ;
12
13
import { OverviewParamEnum } from '../enums' ;
13
14
import { MonacoThemeLoaderService } from '../services' ;
14
15
import {
16
+ MonacoApiState ,
15
17
OpenedReviewRequestState ,
16
18
ProjectEntitiesState ,
17
19
ReviewRequestCommentsState
18
20
} from '../states' ;
21
+ import { MonacoApi } from '../types' ;
19
22
20
23
@Injectable ( )
21
24
export class DependenciesFacade {
@@ -29,18 +32,29 @@ export class DependenciesFacade {
29
32
private readonly commentsService : ReviewRequestCommentsService ,
30
33
private readonly sourceCodeService : ReviewRequestSourceCodeService ,
31
34
private readonly monacoThemeLoaderService : MonacoThemeLoaderService ,
35
+ private readonly monacoApiState : MonacoApiState ,
32
36
private readonly commentsState : ReviewRequestCommentsState ,
33
37
private readonly projectEntitiesState : ProjectEntitiesState ,
34
38
private readonly openedReviewRequestState : OpenedReviewRequestState
35
39
) { }
36
40
37
41
public loadAll ( ) : Observable < unknown > {
38
- return forkJoin ( [
39
- this . loadOpenedReviewRequestInfo ( ) ,
40
- this . loadSourceCode ( ) ,
41
- this . loadComments ( ) ,
42
- this . monacoThemeLoaderService . loadAndDefine ( )
43
- ] ) ;
42
+ return this . loadMonacoApi ( ) . pipe (
43
+ switchMap ( ( ) =>
44
+ forkJoin ( [
45
+ this . loadOpenedReviewRequestInfo ( ) ,
46
+ this . loadSourceCode ( ) ,
47
+ this . loadComments ( ) ,
48
+ this . monacoThemeLoaderService . loadAndDefine ( )
49
+ ] )
50
+ )
51
+ ) ;
52
+ }
53
+
54
+ private loadMonacoApi ( ) : Observable < MonacoApi > {
55
+ return from ( monacoLoader . init ( ) ) . pipe (
56
+ tap ( ( monacoApi ) => this . monacoApiState . set ( monacoApi ) )
57
+ ) ;
44
58
}
45
59
46
60
private loadComments ( ) : Observable < CommentsAmountDictionary > {
0 commit comments