Better migration of update checking settings, offer reload, strip backend_setting from db

This commit is contained in:
Michael Shamoon 2022-09-30 14:03:59 -07:00
parent 9e2430da46
commit c87f60c605
6 changed files with 43 additions and 32 deletions

View File

@ -1,4 +1,4 @@
import { Component, HostListener } from '@angular/core'
import { Component, HostListener, OnInit } from '@angular/core'
import { FormControl } from '@angular/forms'
import { ActivatedRoute, Router } from '@angular/router'
import { from, Observable } from 'rxjs'
@ -32,7 +32,7 @@ import { ToastService } from 'src/app/services/toast.service'
templateUrl: './app-frame.component.html',
styleUrls: ['./app-frame.component.scss'],
})
export class AppFrameComponent implements ComponentCanDeactivate {
export class AppFrameComponent implements OnInit, ComponentCanDeactivate {
constructor(
public router: Router,
private activatedRoute: ActivatedRoute,
@ -44,11 +44,13 @@ export class AppFrameComponent implements ComponentCanDeactivate {
public settingsService: SettingsService,
public tasksService: TasksService,
private readonly toastService: ToastService
) {
if (settingsService.updateCheckingEnabled) {
) {}
ngOnInit(): void {
if (this.settingsService.get(SETTINGS_KEYS.UPDATE_CHECKING_ENABLED)) {
this.checkForUpdates()
}
tasksService.reload()
this.tasksService.reload()
}
versionString = `${environment.appTitle} ${environment.version}`

View File

@ -209,5 +209,5 @@
<div [ngbNavOutlet]="nav" class="border-start border-end border-bottom p-3 mb-3 shadow-sm"></div>
<button type="submit" class="btn btn-primary" [disabled]="!(isDirty$ | async)" i18n>Save</button>
<button type="submit" class="btn btn-primary mb-2" [disabled]="!(isDirty$ | async)" i18n>Save</button>
</form>

View File

@ -67,13 +67,6 @@ export class SettingsComponent
)
}
get displayLanguageIsDirty(): boolean {
return (
this.settingsForm.get('displayLanguage').value !=
this.store?.getValue()['displayLanguage']
)
}
constructor(
public savedViewService: SavedViewService,
private documentListViewService: DocumentListViewService,
@ -197,7 +190,13 @@ export class SettingsComponent
}
private saveLocalSettings() {
const reloadRequired = this.displayLanguageIsDirty // just this one, for now
const reloadRequired =
this.settingsForm.value.displayLanguage !=
this.store?.getValue()['displayLanguage'] || // displayLanguage is dirty
(this.settingsForm.value.updateCheckingEnabled !=
this.store?.getValue()['updateCheckingEnabled'] &&
this.settingsForm.value.updateCheckingEnabled) // update checking was turned on
this.settings.set(
SETTINGS_KEYS.BULK_EDIT_APPLY_ON_CLOSE,
this.settingsForm.value.bulkEditApplyOnClose

View File

@ -410,30 +410,31 @@ export class SettingsService {
},
})
}
}
get updateCheckingEnabled(): boolean {
const backendSetting = this.get(
SETTINGS_KEYS.UPDATE_CHECKING_BACKEND_SETTING
)
if (
!this.settingIsSet(SETTINGS_KEYS.UPDATE_CHECKING_ENABLED) &&
backendSetting != 'default'
this.get(SETTINGS_KEYS.UPDATE_CHECKING_BACKEND_SETTING) != 'default'
) {
this.set(SETTINGS_KEYS.UPDATE_CHECKING_ENABLED, backendSetting === 'true')
this.set(
SETTINGS_KEYS.UPDATE_CHECKING_ENABLED,
this.get(SETTINGS_KEYS.UPDATE_CHECKING_BACKEND_SETTING).toString() ===
'true'
)
this.storeSettings()
.pipe(first())
.subscribe({
error: (e) => {
this.toastService.showError(
'Error migrating update checking setting'
)
console.log(e)
},
})
}
return (
this.get(SETTINGS_KEYS.UPDATE_CHECKING_ENABLED) ||
(!this.settingIsSet(SETTINGS_KEYS.UPDATE_CHECKING_ENABLED) &&
backendSetting == 'true')
)
}
get updateCheckingIsSet(): boolean {
return (
this.settingIsSet(SETTINGS_KEYS.UPDATE_CHECKING_ENABLED) ||
this.get(SETTINGS_KEYS.UPDATE_CHECKING_BACKEND_SETTING) != 'default'
)
return this.settingIsSet(SETTINGS_KEYS.UPDATE_CHECKING_ENABLED)
}
}

View File

@ -608,6 +608,15 @@ class UiSettingsViewSerializer(serializers.ModelSerializer):
"settings",
]
def validate_settings(self, settings):
# we never save update checking backend setting
if "update_checking" in settings:
try:
settings["update_checking"].pop("backend_setting")
except KeyError:
pass
return settings
def create(self, validated_data):
ui_settings = UiSettings.objects.update_or_create(
user=validated_data.get("user"),

View File

@ -847,7 +847,7 @@ class UiSettingsView(GenericAPIView):
ui_settings = {}
if hasattr(user, "ui_settings"):
ui_settings = user.ui_settings.settings
if ui_settings["update_checking"]:
if "update_checking" in ui_settings:
ui_settings["update_checking"][
"backend_setting"
] = settings.ENABLE_UPDATE_CHECK