diff --git a/src-ui/src/app/components/app-frame/app-frame.component.ts b/src-ui/src/app/components/app-frame/app-frame.component.ts index 33384065d..db4dc2f6c 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.ts +++ b/src-ui/src/app/components/app-frame/app-frame.component.ts @@ -210,10 +210,12 @@ export class AppFrameComponent } get versionString(): string { + this.settingsService.trackChanges() return `${environment.appTitle} v${this.settingsService.get(SETTINGS_KEYS.VERSION)}${environment.tag === 'prod' ? '' : ` #${environment.tag}`}` } get customAppTitle(): string { + this.settingsService.trackChanges() return this.settingsService.get(SETTINGS_KEYS.APP_TITLE) } @@ -256,6 +258,7 @@ export class AppFrameComponent } get slimSidebarEnabled(): boolean { + this.settingsService.trackChanges() return this.settingsService.get(SETTINGS_KEYS.SLIM_SIDEBAR) } @@ -275,6 +278,7 @@ export class AppFrameComponent } get attributesSectionsCollapsed(): boolean { + this.settingsService.trackChanges() return this.settingsService .get(SETTINGS_KEYS.ATTRIBUTES_SECTIONS_COLLAPSED) ?.includes(CollapsibleSection.ATTRIBUTES) @@ -300,6 +304,7 @@ export class AppFrameComponent } get aiEnabled(): boolean { + this.settingsService.trackChanges() return this.settingsService.get(SETTINGS_KEYS.AI_ENABLED) } @@ -451,6 +456,7 @@ export class AppFrameComponent } get showSidebarCounts(): boolean { + this.settingsService.trackChanges() return ( this.settingsService.get(SETTINGS_KEYS.SIDEBAR_VIEWS_SHOW_COUNT) && !this.settingsService.organizingSidebarSavedViews diff --git a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts index cda87c0d4..50b2cbbbc 100644 --- a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts +++ b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts @@ -121,6 +121,7 @@ export class GlobalSearchComponent implements OnInit { @ViewChildren('secondaryButton') secondaryButtons: QueryList get useAdvancedForFullSearch(): boolean { + this.settingsService.trackChanges() return ( this.settingsService.get(SETTINGS_KEYS.SEARCH_FULL_TYPE) === GlobalSearchType.ADVANCED diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts index 276b0dffd..bbfeba739 100644 --- a/src-ui/src/app/services/settings.service.ts +++ b/src-ui/src/app/services/settings.service.ts @@ -296,7 +296,15 @@ export class SettingsService { private settings: Record = {} private settingsVersion = signal(0) - currentUser: User + private currentUserSignal = signal(undefined) + + get currentUser(): User { + return this.currentUserSignal() + } + + set currentUser(value: User) { + this.currentUserSignal.set(value) + } public settingsSaved: EventEmitter = new EventEmitter() @@ -305,11 +313,42 @@ export class SettingsService { return this._renderer } - public dashboardIsEmpty: boolean = false + private dashboardIsEmptySignal = signal(false) + private globalDropzoneEnabledSignal = signal(true) + private globalDropzoneActiveSignal = signal(false) + private organizingSidebarSavedViewsSignal = signal(false) - public globalDropzoneEnabled: boolean = true - public globalDropzoneActive: boolean = false - public organizingSidebarSavedViews: boolean = false + public get dashboardIsEmpty(): boolean { + return this.dashboardIsEmptySignal() + } + + public set dashboardIsEmpty(value: boolean) { + this.dashboardIsEmptySignal.set(value) + } + + public get globalDropzoneEnabled(): boolean { + return this.globalDropzoneEnabledSignal() + } + + public set globalDropzoneEnabled(value: boolean) { + this.globalDropzoneEnabledSignal.set(value) + } + + public get globalDropzoneActive(): boolean { + return this.globalDropzoneActiveSignal() + } + + public set globalDropzoneActive(value: boolean) { + this.globalDropzoneActiveSignal.set(value) + } + + public get organizingSidebarSavedViews(): boolean { + return this.organizingSidebarSavedViewsSignal() + } + + public set organizingSidebarSavedViews(value: boolean) { + this.organizingSidebarSavedViewsSignal.set(value) + } private _allDisplayFields: Array<{ id: DisplayField; name: string }> = DEFAULT_DISPLAY_FIELDS @@ -444,8 +483,8 @@ export class SettingsService { get displayName(): string { return ( - this.currentUser.first_name ?? - this.currentUser.username ?? + this.currentUser?.first_name ?? + this.currentUser?.username ?? '' ).trim() } @@ -578,7 +617,7 @@ export class SettingsService { // special case to fallback if (key === SETTINGS_KEYS.DEFAULT_PERMS_OWNER && value === undefined) { - return this.currentUser.id + return this.currentUser?.id } if (value !== undefined) {