1
1
import type { UmbWebhookDetailModel , UmbWebhookEventModel } from '../../types.js' ;
2
- import { UmbWebhookDetailRepository } from '../../repository/index.js' ;
2
+ import type { UmbWebhookDetailRepository } from '../../repository/index.js' ;
3
+ import { UMB_WEBHOOK_DETAIL_REPOSITORY_ALIAS } from '../../repository/index.js' ;
4
+ import { UMB_WEBHOOK_ENTITY_TYPE , UMB_WEBHOOK_ROOT_ENTITY_TYPE , UMB_WEBHOOK_WORKSPACE_ALIAS } from '../../entity.js' ;
3
5
import { UmbWebhookWorkspaceEditorElement } from './webhook-workspace-editor.element.js' ;
4
6
import {
5
7
type UmbSubmittableWorkspaceContext ,
6
- UmbSubmittableWorkspaceContextBase ,
7
8
UmbWorkspaceIsNewRedirectController ,
8
9
type UmbRoutableWorkspaceContext ,
10
+ UmbEntityDetailWorkspaceContextBase ,
9
11
} from '@umbraco-cms/backoffice/workspace' ;
10
- import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api' ;
11
12
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api' ;
12
13
13
14
export class UmbWebhookWorkspaceContext
14
- extends UmbSubmittableWorkspaceContextBase < UmbWebhookDetailModel >
15
+ extends UmbEntityDetailWorkspaceContextBase < UmbWebhookDetailModel , UmbWebhookDetailRepository >
15
16
implements UmbSubmittableWorkspaceContext , UmbRoutableWorkspaceContext
16
17
{
17
- public readonly repository : UmbWebhookDetailRepository = new UmbWebhookDetailRepository ( this ) ;
18
-
19
- #data = new UmbObjectState < UmbWebhookDetailModel | undefined > ( undefined ) ;
20
- readonly data = this . #data. asObservable ( ) ;
21
-
22
- readonly unique = this . #data. asObservablePart ( ( data ) => data ?. unique ) ;
18
+ readonly data = this . _data . current ;
19
+ readonly unique = this . _data . createObservablePartOfCurrent ( ( data ) => data ?. unique ) ;
23
20
24
21
constructor ( host : UmbControllerHost ) {
25
- super ( host , 'Umb.Workspace.Webhook' ) ;
22
+ super ( host , {
23
+ workspaceAlias : UMB_WEBHOOK_WORKSPACE_ALIAS ,
24
+ entityType : UMB_WEBHOOK_ENTITY_TYPE ,
25
+ detailRepositoryAlias : UMB_WEBHOOK_DETAIL_REPOSITORY_ALIAS ,
26
+ } ) ;
26
27
27
28
this . routes . setRoutes ( [
28
29
{
29
30
path : 'create' ,
30
31
component : UmbWebhookWorkspaceEditorElement ,
31
32
setup : async ( ) => {
32
- this . create ( ) ;
33
+ this . createScaffold ( { parent : { entityType : UMB_WEBHOOK_ROOT_ENTITY_TYPE , unique : null } } ) ;
33
34
34
35
new UmbWorkspaceIsNewRedirectController (
35
36
this ,
@@ -49,84 +50,24 @@ export class UmbWebhookWorkspaceContext
49
50
] ) ;
50
51
}
51
52
52
- protected override resetState ( ) : void {
53
- super . resetState ( ) ;
54
- this . #data. setValue ( undefined ) ;
55
- }
56
-
57
- async load ( unique : string ) {
58
- this . resetState ( ) ;
59
- const { data } = await this . repository . requestByUnique ( unique ) ;
60
- if ( data ) {
61
- this . setIsNew ( false ) ;
62
- this . #data. update ( data ) ;
63
- }
64
- }
65
-
66
- async create ( ) {
67
- this . resetState ( ) ;
68
- const { data } = await this . repository . createScaffold ( ) ;
69
- if ( ! data ) return ;
70
- this . setIsNew ( true ) ;
71
- this . #data. update ( data ) ;
72
- return { data } ;
73
- }
74
-
75
- getData ( ) {
76
- return this . #data. getValue ( ) ;
77
- }
78
-
79
- getEntityType ( ) {
80
- return 'webhook' ;
81
- }
82
-
83
- getUnique ( ) {
84
- return this . #data. getValue ( ) ?. unique ;
85
- }
86
-
87
53
setEvents ( events : Array < UmbWebhookEventModel > ) {
88
- this . #data . update ( { events } ) ;
54
+ this . _data . updateCurrent ( { events } ) ;
89
55
}
90
56
91
57
setHeaders ( headers : { [ key : string ] : string } ) {
92
- this . #data . update ( { headers } ) ;
58
+ this . _data . updateCurrent ( { headers } ) ;
93
59
}
94
60
95
61
setTypes ( types : string [ ] ) {
96
- this . #data . update ( { contentTypes : types } ) ;
62
+ this . _data . updateCurrent ( { contentTypes : types } ) ;
97
63
}
98
64
99
65
setUrl ( url : string ) {
100
- this . #data . update ( { url } ) ;
66
+ this . _data . updateCurrent ( { url } ) ;
101
67
}
102
68
103
69
setEnabled ( enabled : boolean ) {
104
- this . #data. update ( { enabled } ) ;
105
- }
106
-
107
- async submit ( ) {
108
- const newData = this . getData ( ) ;
109
- if ( ! newData ) {
110
- throw new Error ( 'No data to submit' ) ;
111
- }
112
-
113
- if ( this . getIsNew ( ) ) {
114
- const { error } = await this . repository . create ( newData ) ;
115
- if ( error ) {
116
- throw new Error ( error . message ) ;
117
- }
118
- this . setIsNew ( false ) ;
119
- } else {
120
- const { error } = await this . repository . save ( newData ) ;
121
- if ( error ) {
122
- throw new Error ( error . message ) ;
123
- }
124
- }
125
- }
126
-
127
- override destroy ( ) : void {
128
- this . #data. destroy ( ) ;
129
- super . destroy ( ) ;
70
+ this . _data . updateCurrent ( { enabled } ) ;
130
71
}
131
72
}
132
73
0 commit comments