Fix: User update fails when libraries are assigned (#2144)

Co-authored-by: acx10 <acx10@users.noreply.github.com>
This commit is contained in:
ACX
2026-01-04 17:39:25 -07:00
committed by GitHub
parent 8d9c7e5e99
commit 0fe883c925
3 changed files with 22 additions and 10 deletions

View File

@@ -4,7 +4,7 @@ import {Button, ButtonDirective} from 'primeng/button';
import {DynamicDialogRef} from 'primeng/dynamicdialog';
import {TableModule} from 'primeng/table';
import {LowerCasePipe, TitleCasePipe} from '@angular/common';
import {User, UserService} from './user.service';
import {User, UserService, UserUpdateRequest} from './user.service';
interface UserWithEditing extends User {
isEditing?: boolean;
@@ -135,13 +135,14 @@ export class UserManagementComponent implements OnInit, OnDestroy {
saveUser(user: UserWithEditing) {
user.selectedLibraryIds = [...this.editingLibraryIds];
const updateRequest: UserUpdateRequest = {
name: user.name,
email: user.email,
permissions: user.permissions,
assignedLibraries: user.selectedLibraryIds || [],
};
this.userService
.updateUser(user.id, {
name: user.name,
email: user.email,
permissions: user.permissions,
assignedLibraries: this.allLibraries.filter(lib => lib.id && user.selectedLibraryIds?.includes(lib.id)),
})
.updateUser(user.id, updateRequest)
.subscribe({
next: () => {
user.isEditing = false;

View File

@@ -191,6 +191,13 @@ export interface UserState {
error: string | null;
}
export interface UserUpdateRequest {
name?: string;
email?: string;
permissions?: User['permissions'];
assignedLibraries?: number[];
}
@Injectable({
providedIn: 'root'
})
@@ -277,7 +284,7 @@ export class UserService {
return this.http.get<User[]>(this.userUrl);
}
updateUser(userId: number, updateData: Partial<User>): Observable<User> {
updateUser(userId: number, updateData: UserUpdateRequest): Observable<User> {
return this.http.put<User>(`${this.userUrl}/${userId}`, updateData);
}

View File

@@ -3,7 +3,7 @@ import {Button} from 'primeng/button';
import {AbstractControl, FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';
import {InputText} from 'primeng/inputtext';
import {Password} from 'primeng/password';
import {User, UserService} from '../user-management/user.service';
import {User, UserService, UserUpdateRequest} from '../user-management/user.service';
import {MessageService} from 'primeng/api';
import {Subject} from 'rxjs';
import {filter, takeUntil} from 'rxjs/operators';
@@ -105,7 +105,11 @@ export class UserProfileDialogComponent implements OnInit, OnDestroy {
return;
}
this.userService.updateUser(this.currentUser.id, this.editUserData).subscribe({
const updateRequest: UserUpdateRequest = {
name: this.editUserData.name,
email: this.editUserData.email,
};
this.userService.updateUser(this.currentUser.id, updateRequest).subscribe({
next: () => {
this.messageService.add({severity: 'success', summary: 'Success', detail: 'Profile updated successfully'});
this.isEditing = false;