1
- import { UmbLanguageDetailRepository } from '../../repository/index.js' ;
1
+ import { UMB_LANGUAGE_DETAIL_REPOSITORY_ALIAS , UmbLanguageDetailRepository } from '../../repository/index.js' ;
2
2
import type { UmbLanguageDetailModel } from '../../types.js' ;
3
+ import { UMB_LANGUAGE_ENTITY_TYPE , UMB_LANGUAGE_ROOT_ENTITY_TYPE } from '../../entity.js' ;
3
4
import { UmbLanguageWorkspaceEditorElement } from './language-workspace-editor.element.js' ;
4
5
import { UMB_LANGUAGE_WORKSPACE_ALIAS } from './constants.js' ;
5
6
import {
6
7
type UmbSubmittableWorkspaceContext ,
7
- UmbSubmittableWorkspaceContextBase ,
8
8
UmbWorkspaceIsNewRedirectController ,
9
9
type UmbRoutableWorkspaceContext ,
10
+ UmbEntityDetailWorkspaceContextBase ,
10
11
} from '@umbraco-cms/backoffice/workspace' ;
11
- import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api' ;
12
12
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api' ;
13
13
14
14
export class UmbLanguageWorkspaceContext
15
- extends UmbSubmittableWorkspaceContextBase < UmbLanguageDetailModel >
15
+ extends UmbEntityDetailWorkspaceContextBase < UmbLanguageDetailModel , UmbLanguageDetailRepository >
16
16
implements UmbSubmittableWorkspaceContext , UmbRoutableWorkspaceContext
17
17
{
18
18
public readonly repository : UmbLanguageDetailRepository = new UmbLanguageDetailRepository ( this ) ;
19
19
20
- #data = new UmbObjectState < UmbLanguageDetailModel | undefined > ( undefined ) ;
21
- readonly data = this . #data. asObservable ( ) ;
20
+ readonly data = this . _data . current ;
22
21
23
- readonly unique = this . #data. asObservablePart ( ( data ) => data ?. unique ) ;
24
- readonly name = this . #data. asObservablePart ( ( data ) => data ?. name ) ;
25
-
26
- // TODO: this is a temp solution to bubble validation errors to the UI
27
- #validationErrors = new UmbObjectState < any | undefined > ( undefined ) ;
28
- readonly validationErrors = this . #validationErrors. asObservable ( ) ;
22
+ readonly unique = this . _data . createObservablePart ( ( data ) => data ?. unique ) ;
23
+ readonly name = this . _data . createObservablePart ( ( data ) => data ?. name ) ;
29
24
30
25
constructor ( host : UmbControllerHost ) {
31
- super ( host , UMB_LANGUAGE_WORKSPACE_ALIAS ) ;
26
+ super ( host , {
27
+ workspaceAlias : UMB_LANGUAGE_WORKSPACE_ALIAS ,
28
+ entityType : UMB_LANGUAGE_ENTITY_TYPE ,
29
+ detailRepositoryAlias : UMB_LANGUAGE_DETAIL_REPOSITORY_ALIAS ,
30
+ } ) ;
32
31
33
32
this . routes . setRoutes ( [
34
33
{
35
34
path : 'create' ,
36
35
component : UmbLanguageWorkspaceEditorElement ,
37
36
setup : async ( ) => {
38
- this . create ( ) ;
37
+ this . create ( { parent : { entityType : UMB_LANGUAGE_ROOT_ENTITY_TYPE , unique : null } } ) ;
39
38
40
39
new UmbWorkspaceIsNewRedirectController (
41
40
this ,
@@ -55,85 +54,24 @@ export class UmbLanguageWorkspaceContext
55
54
] ) ;
56
55
}
57
56
58
- protected override resetState ( ) : void {
59
- super . resetState ( ) ;
60
- this . #data. setValue ( undefined ) ;
61
- }
62
-
63
- async load ( unique : string ) {
64
- this . resetState ( ) ;
65
- const { data } = await this . repository . requestByUnique ( unique ) ;
66
- if ( data ) {
67
- this . setIsNew ( false ) ;
68
- this . #data. update ( data ) ;
69
- }
70
- }
71
-
72
- async create ( ) {
73
- this . resetState ( ) ;
74
- const { data } = await this . repository . createScaffold ( ) ;
75
- if ( ! data ) return ;
76
- this . setIsNew ( true ) ;
77
- this . #data. update ( data ) ;
78
- return { data } ;
79
- }
80
-
81
- getData ( ) {
82
- return this . #data. getValue ( ) ;
83
- }
84
-
85
- getEntityType ( ) {
86
- return 'language' ;
87
- }
88
-
89
- // TODO: Convert to uniques:
90
- getUnique ( ) {
91
- return this . #data. getValue ( ) ?. unique ;
92
- }
93
-
94
57
setName ( name : string ) {
95
- this . #data . update ( { name } ) ;
58
+ this . _data . updateCurrentData ( { name } ) ;
96
59
}
97
60
98
61
setCulture ( unique : string ) {
99
- this . #data . update ( { unique } ) ;
62
+ this . _data . updateCurrentData ( { unique } ) ;
100
63
}
101
64
102
65
setMandatory ( isMandatory : boolean ) {
103
- this . #data . update ( { isMandatory } ) ;
66
+ this . _data . updateCurrentData ( { isMandatory } ) ;
104
67
}
105
68
106
69
setDefault ( isDefault : boolean ) {
107
- this . #data . update ( { isDefault } ) ;
70
+ this . _data . updateCurrentData ( { isDefault } ) ;
108
71
}
109
72
110
73
setFallbackCulture ( unique : string ) {
111
- this . #data. update ( { fallbackIsoCode : unique } ) ;
112
- }
113
-
114
- async submit ( ) {
115
- const newData = this . getData ( ) ;
116
- if ( ! newData ) {
117
- throw new Error ( 'No data to submit' ) ;
118
- }
119
-
120
- if ( this . getIsNew ( ) ) {
121
- const { error } = await this . repository . create ( newData ) ;
122
- if ( error ) {
123
- throw new Error ( error . message ) ;
124
- }
125
- this . setIsNew ( false ) ;
126
- } else {
127
- const { error } = await this . repository . save ( newData ) ;
128
- if ( error ) {
129
- throw new Error ( error . message ) ;
130
- }
131
- }
132
- }
133
-
134
- override destroy ( ) : void {
135
- this . #data. destroy ( ) ;
136
- super . destroy ( ) ;
74
+ this . _data . updateCurrentData ( { fallbackIsoCode : unique } ) ;
137
75
}
138
76
}
139
77
0 commit comments