From aa669aca8949b3bf92770cd446ce22d25b77be1f Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Fri, 13 Nov 2026 23:31:27 -0800
Subject: [PATCH] Fix: get users for saved view create dialog (#14769)
---
.../save-view-config-dialog.component.html | 2 +-
.../save-view-config-dialog.component.spec.ts | 17 ++++++++++++++++-
.../save-view-config-dialog.component.ts | 17 ++++++++++++++++-
3 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html
index f367e110d7..e41de4dc47 100644
--- a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html
+++ b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html
@@ -16,7 +16,7 @@
-
+
@if (error()?.filter_rules) {
Filter rules error occurred while saving this view
diff --git a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.spec.ts b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.spec.ts
index 4e8ec29f79..4cb7a91349 100644
--- a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.spec.ts
+++ b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.spec.ts
@@ -3,6 +3,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { By } from '@angular/platform-browser'
import { NgbActiveModal, NgbModalModule } from '@ng-bootstrap/ng-bootstrap'
import { of } from 'rxjs'
+import { User } from 'src/app/data/user'
import { GroupService } from 'src/app/services/rest/group.service'
import { UserService } from 'src/app/services/rest/user.service'
import { CheckComponent } from '../../common/input/check/check.component'
@@ -14,6 +15,7 @@ import { TextComponent } from '../../common/input/text/text.component'
import { SaveViewConfigDialogComponent } from './save-view-config-dialog.component'
describe('SaveViewConfigDialogComponent', () => {
+ const users = [{ id: 10, username: 'user10' }] as User[]
let component: SaveViewConfigDialogComponent
let fixture: ComponentFixture
let modal: NgbActiveModal
@@ -25,7 +27,7 @@ describe('SaveViewConfigDialogComponent', () => {
{
provide: UserService,
useValue: {
- listAll: () => of({ results: [] }),
+ listAll: () => of({ results: users }),
},
},
{
@@ -124,6 +126,19 @@ describe('SaveViewConfigDialogComponent', () => {
})
})
+ it('should list users in the owner selector', () => {
+ fixture.debugElement
+ .query(By.css('button[ngbAccordionButton]'))
+ .nativeElement.click()
+ fixture.detectChanges()
+
+ const permissionsForm = fixture.debugElement.query(
+ By.directive(PermissionsFormComponent)
+ )
+ const ownerSelect = permissionsForm.query(By.directive(SelectComponent))
+ expect(ownerSelect.componentInstance.items).toEqual(users)
+ })
+
it('should support default name', () => {
const saveClickedSpy = jest.spyOn(component.saveClicked, 'emit')
const modalCloseSpy = jest.spyOn(modal, 'close')
diff --git a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts
index 72640c7ced..e630b94390 100644
--- a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts
+++ b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts
@@ -6,6 +6,7 @@ import {
inject,
signal,
} from '@angular/core'
+import { toSignal } from '@angular/core/rxjs-interop'
import {
FormControl,
FormGroup,
@@ -13,11 +14,14 @@ import {
ReactiveFormsModule,
} from '@angular/forms'
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
+import { catchError, map, of } from 'rxjs'
import {
DEFAULT_SAVED_VIEW_ICON,
SAVED_VIEW_ICONS,
} from 'src/app/data/saved-view-icons'
import { User } from 'src/app/data/user'
+import { UserService } from 'src/app/services/rest/user.service'
+import { ToastService } from 'src/app/services/toast.service'
import { CheckComponent } from '../../common/input/check/check.component'
import { PermissionsFormComponent } from '../../common/input/permissions/permissions-form/permissions-form.component'
import { SelectComponent } from '../../common/input/select/select.component'
@@ -38,6 +42,8 @@ import { TextComponent } from '../../common/input/text/text.component'
})
export class SaveViewConfigDialogComponent implements OnInit {
private modal = inject(NgbActiveModal)
+ private userService = inject(UserService)
+ private toastService = inject(ToastService)
readonly error = signal(undefined)
readonly buttonsEnabled = signal(true)
readonly defaultName = signal('')
@@ -46,7 +52,16 @@ export class SaveViewConfigDialogComponent implements OnInit {
@Output()
public saveClicked = new EventEmitter()
- users: User[]
+ readonly users = toSignal(
+ this.userService.listAll().pipe(
+ map((result) => result.results),
+ catchError((error) => {
+ this.toastService.showError($localize`Error retrieving users`, error)
+ return of([])
+ })
+ ),
+ { initialValue: undefined as User[] }
+ )
readonly savedViewIcons = SAVED_VIEW_ICONS
setDefaultName(value: string) {