1
1
import { ImageComponent , PhotoComponent } from '@devmx/shared-ui-global' ;
2
+ import {
3
+ AutocompleteCitiesComponent ,
4
+ AutocompleteCitiesService ,
5
+ } from '@devmx/location-ui-forms' ;
2
6
import { MatDialog , MatDialogModule } from '@angular/material/dialog' ;
3
7
import { MatExpansionModule } from '@angular/material/expansion' ;
4
8
import { takeUntilDestroyed } from '@angular/core/rxjs-interop' ;
5
9
import { MatButtonModule } from '@angular/material/button' ;
6
10
import { AccountOut } from '@devmx/shared-api-interfaces' ;
11
+
7
12
import { MatIconModule } from '@angular/material/icon' ;
8
13
import { MatCardModule } from '@angular/material/card' ;
9
14
import { CommonModule } from '@angular/common' ;
10
- import { take } from 'rxjs' ;
15
+ import { AutoAssignable , UpdateAccountWithCity } from '../../forms' ;
16
+ import { switchMap , take } from 'rxjs' ;
11
17
import {
12
18
AuthFacade ,
13
19
AccountFacade ,
@@ -28,7 +34,7 @@ import {
28
34
DestroyRef ,
29
35
ChangeDetectionStrategy ,
30
36
} from '@angular/core' ;
31
- import { AutoAssignable } from '../../forms ' ;
37
+ import { CityFacade } from '@devmx/location-data-access ' ;
32
38
33
39
@Component ( {
34
40
selector : 'devmx-account-settings' ,
@@ -47,14 +53,20 @@ import { AutoAssignable } from '../../forms';
47
53
EditableAccountComponent ,
48
54
EditablePasswordComponent ,
49
55
AutoAssignableRoleComponent ,
56
+ AutocompleteCitiesComponent ,
50
57
] ,
58
+ providers : [ ] ,
51
59
standalone : true ,
52
60
} )
53
61
export class SettingsContainer implements OnInit {
54
62
authFacade = inject ( AuthFacade ) ;
55
63
56
64
accountFacade = inject ( AccountFacade ) ;
57
65
66
+ autocompleteCitiesService = inject ( AutocompleteCitiesService ) ;
67
+
68
+ cityFacade = inject ( CityFacade ) ;
69
+
58
70
destroyRef = inject ( DestroyRef ) ;
59
71
60
72
dialog = inject ( MatDialog ) ;
@@ -94,6 +106,20 @@ export class SettingsContainer implements OnInit {
94
106
} ) ;
95
107
96
108
this . authFacade . loadAuthUser ( ) ;
109
+
110
+ this . autocompleteCitiesService . search$
111
+ . pipe (
112
+ switchMap ( ( name ) => {
113
+ console . log ( name ) ;
114
+
115
+ return name ? this . cityFacade . search ( name ) : [ ] ;
116
+ } )
117
+ )
118
+ . subscribe ( ( cities ) => {
119
+ console . log ( cities ) ;
120
+
121
+ this . autocompleteCitiesService . setCities ( cities ) ;
122
+ } ) ;
97
123
}
98
124
99
125
populate ( account : AccountOut ) {
@@ -114,8 +140,11 @@ export class SettingsContainer implements OnInit {
114
140
} ) ;
115
141
}
116
142
117
- onAccountSubmitted ( data : UpdateAccount ) {
118
- this . accountFacade . update ( data ) ;
143
+ onAccountSubmitted ( data : UpdateAccount | UpdateAccountWithCity ) {
144
+ if ( data . city && typeof data . city === 'object' ) {
145
+ data . city = data . city . id ;
146
+ }
147
+ this . accountFacade . update ( data as UpdateAccount ) ;
119
148
}
120
149
121
150
onPasswordSubmitted ( data : ChangePassword ) {
0 commit comments