Add signal handling to app frame, global search

This commit is contained in:
shamoon
2026-07-07 16:58:09 -07:00
parent 5a93d46a0c
commit f2bbd8bb65
3 changed files with 54 additions and 8 deletions
@@ -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
@@ -121,6 +121,7 @@ export class GlobalSearchComponent implements OnInit {
@ViewChildren('secondaryButton') secondaryButtons: QueryList<ElementRef>
get useAdvancedForFullSearch(): boolean {
this.settingsService.trackChanges()
return (
this.settingsService.get(SETTINGS_KEYS.SEARCH_FULL_TYPE) ===
GlobalSearchType.ADVANCED
+47 -8
View File
@@ -296,7 +296,15 @@ export class SettingsService {
private settings: Record<string, any> = {}
private settingsVersion = signal(0)
currentUser: User
private currentUserSignal = signal<User>(undefined)
get currentUser(): User {
return this.currentUserSignal()
}
set currentUser(value: User) {
this.currentUserSignal.set(value)
}
public settingsSaved: EventEmitter<any> = 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) {