@@ -19,10 +19,6 @@ export default class IdentityMembershipsComponent extends Component {
19
19
@service intl ;
20
20
@service notification ;
21
21
22
- get locale ( ) {
23
- return this . intl . primaryLocale ;
24
- }
25
-
26
22
// List
27
23
28
24
@lastValue ( "fetchMemberships" ) memberships ;
@@ -41,14 +37,19 @@ export default class IdentityMembershipsComponent extends Component {
41
37
this . fetchRoles . perform ( this . args . identity ) ;
42
38
}
43
39
40
+ @action updateDateField ( fieldName , newValue , changeset ) {
41
+ changeset . rollbackProperty ( fieldName ) ;
42
+ changeset . set ( fieldName , newValue ) ;
43
+ }
44
+
44
45
@action
45
46
openPowerSelect ( select ) {
46
47
select . actions . open ( ) ;
47
48
}
48
49
49
50
// Add / Edit
50
51
51
- @tracked changeset = null ;
52
+ @tracked changeset ;
52
53
53
54
@action
54
55
edit ( membership ) {
@@ -72,38 +73,44 @@ export default class IdentityMembershipsComponent extends Component {
72
73
this . changeset = null ;
73
74
}
74
75
76
+ formatDate ( date ) {
77
+ // Flatpickr returns an array of dates.
78
+ if ( Array . isArray ( date ) ) {
79
+ return DateTime . fromJSDate ( date [ 0 ] ) . toISODate ( ) ;
80
+ } else if ( date ) {
81
+ return date ;
82
+ }
83
+ return null ;
84
+ }
85
+
75
86
@dropTask
76
87
* submit ( changeset ) {
77
88
try {
78
- const format = "yyyy-LL-dd" ;
79
- let timeSlot = changeset . get ( "timeSlot" ) || { } ;
80
- if ( ! timeSlot . lower && ! timeSlot . upper ) {
81
- timeSlot = null ;
82
- } else {
83
- timeSlot . lower = timeSlot . lower
84
- ? DateTime . fromJSDate ( timeSlot . lower [ 0 ] ) . toFormat ( format )
85
- : undefined ;
86
- timeSlot . upper = timeSlot . upper
87
- ? DateTime . fromJSDate ( timeSlot . upper [ 0 ] ) . toFormat ( format )
88
- : undefined ;
89
+ changeset . execute ( ) ;
90
+ const timeSlot = new Map ( Object . entries ( changeset . data . timeSlot ) ) ;
91
+ timeSlot . forEach ( ( slot ) => {
92
+ if ( slot ) {
93
+ const [ key , value ] = slot ;
94
+ timeSlot [ key ] = this . formatDate ( value ) ;
95
+ }
96
+ } ) ;
97
+ if ( timeSlot . size ) {
98
+ changeset . set ( "timeSlot" , Object . fromEntries ( timeSlot ) ) ;
89
99
}
90
- changeset . set ( "timeSlot" , timeSlot ) ;
91
-
92
100
const election = changeset . get ( "nextElection" ) ;
93
- if ( election ) {
94
- changeset . set (
95
- "nextElection" ,
96
- DateTime . fromJSDate ( election [ 0 ] ) . toFormat ( format )
97
- ) ;
101
+ changeset . set ( "nextElection" , this . formatDate ( election ) ) ;
102
+ changeset . set ( "timeSlot.bounds" , "[)" ) ;
103
+ yield changeset . validate ( ) ;
104
+ if ( changeset . isValid ) {
105
+ yield changeset . save ( ) ;
106
+ yield this . onUpdate ( ) ;
107
+ this . changeset = null ;
98
108
}
99
-
100
- yield changeset . save ( ) ;
101
- this . changeset = null ;
102
- yield this . onUpdate ( ) ;
103
109
} catch ( error ) {
104
110
console . error ( error ) ;
105
111
this . notification . fromError ( error ) ;
106
112
applyError ( changeset , error ) ;
113
+ changeset . rollback ( ) ;
107
114
}
108
115
}
109
116
0 commit comments