these need to work on the same unsaved settings, drop the sub stuff

This commit is contained in:
shamoon
2026-09-08 12:17:33 -07:00
parent 5ecf06463d
commit aadbbddcef
6 changed files with 60 additions and 34 deletions
@@ -219,11 +219,23 @@ describe('SettingsComponent', () => {
HideableSidebarItemID.Workflows
)
settingsService.updateSidebarItemVisibility(
HideableSidebarItemID.Mail,
false
)
expect(component.settingsForm.value.sidebarHiddenItems).toContain(
HideableSidebarItemID.Mail
)
component.reset()
expect(component.settingsForm.value.sidebarHiddenItems).not.toContain(
HideableSidebarItemID.Workflows
)
expect(component.settingsForm.value.sidebarHiddenItems).not.toContain(
HideableSidebarItemID.Mail
)
})
it('enables sidebar item controls on general settings until destroyed', () => {
@@ -200,6 +200,7 @@ export class SettingsComponent
store: BehaviorSubject<any>
storeSub: Subscription
sidebarItemsSub: Subscription
isDirty$: Observable<boolean>
isDirty: boolean = false
unsubscribeNotifier: Subject<any> = new Subject()
@@ -248,6 +249,10 @@ export class SettingsComponent
constructor() {
super()
this.sidebarItemsSub =
this.settings.sidebarHiddenItemsEditingChanged.subscribe((hiddenItems) =>
this.settingsForm.controls.sidebarHiddenItems.setValue(hiddenItems)
)
this.settings.settingsSaved.subscribe(() => {
if (!this.savePending) this.initialize()
this.savedViewsService.maybeRefreshDocumentCounts()
@@ -307,7 +312,11 @@ export class SettingsComponent
}
}
this.activeNavID.set(navID)
this.settings.organizingSidebarItems.set(navID === SettingsNavIDs.General)
this.settings.sidebarHiddenItemsEditing.set(
navID === SettingsNavIDs.General
? [...this.settingsForm.controls.sidebarHiddenItems.value]
: null
)
})
}
@@ -458,6 +467,12 @@ export class SettingsComponent
this.settingsForm.patchValue(currentFormValue)
}
if (this.settings.organizingSidebarItems()) {
this.settings.sidebarHiddenItemsEditing.set([
...this.settingsForm.controls.sidebarHiddenItems.value,
])
}
if (this.canViewSystemStatus) {
this.systemStatusService.get().subscribe((status) => {
this.systemStatus.set(status)
@@ -466,9 +481,10 @@ export class SettingsComponent
}
ngOnDestroy() {
this.settings.organizingSidebarItems.set(false)
this.settings.sidebarHiddenItemsEditing.set(null)
if (this.isDirty) this.settings.updateAppearanceSettings() // in case user changed appearance but didn't save
this.storeSub && this.storeSub.unsubscribe()
this.sidebarItemsSub.unsubscribe()
}
isSidebarItemShown(item: HideableSidebarItemID): boolean {
@@ -476,15 +492,7 @@ export class SettingsComponent
}
toggleSidebarItem(item: HideableSidebarItemID, checked: boolean): void {
const hiddenItems = new Set(
this.settingsForm.value.sidebarHiddenItems || []
)
if (checked) {
hiddenItems.delete(item)
} else {
hiddenItems.add(item)
}
this.settingsForm.controls.sidebarHiddenItems.setValue([...hiddenItems])
this.settings.updateSidebarItemVisibility(item, checked)
}
public saveSettings() {
@@ -675,6 +683,11 @@ export class SettingsComponent
reset() {
this.settingsForm.patchValue(this.store.getValue())
if (this.settings.organizingSidebarItems()) {
this.settings.sidebarHiddenItemsEditing.set([
...this.settingsForm.controls.sidebarHiddenItems.value,
])
}
}
clearThemeColor() {
@@ -312,7 +312,9 @@ describe('AppFrameComponent', () => {
settingsService.set(SETTINGS_KEYS.SIDEBAR_HIDDEN_ITEMS, [
HideableSidebarItemID.Dashboard,
])
settingsService.organizingSidebarItems.set(true)
settingsService.sidebarHiddenItemsEditing.set([
HideableSidebarItemID.Dashboard,
])
fixture.detectChanges()
expect(
@@ -205,22 +205,7 @@ export class AppFrameComponent
}
toggleSidebarItem(item: HideableSidebarItemID, visible: boolean): void {
const previousHiddenItems = this.settingsService.hiddenSidebarItems()
this.settingsService
.updateSidebarItemVisibility(item, visible)
.pipe(first())
.subscribe({
error: (error) => {
this.settingsService.set(
SETTINGS_KEYS.SIDEBAR_HIDDEN_ITEMS,
previousHiddenItems
)
this.toastService.showError(
$localize`An error occurred while saving settings.`,
error
)
},
})
this.settingsService.updateSidebarItemVisibility(item, visible)
}
toggleAttributesSections(event?: Event): void {