]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Better migration of update checking settings, offer reload, strip backend_setting...
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Fri, 30 Sep 2022 21:03:59 +0000 (14:03 -0700)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Fri, 30 Sep 2022 21:03:59 +0000 (14:03 -0700)
src-ui/src/app/components/app-frame/app-frame.component.ts
src-ui/src/app/components/manage/settings/settings.component.html
src-ui/src/app/components/manage/settings/settings.component.ts
src-ui/src/app/services/settings.service.ts
src/documents/serialisers.py
src/documents/views.py

index fd70de51a7be84878409f3d0af2ab00580a5c01d..ee8deb5f8b43c52a0dc62f97878b98843f8030a1 100644 (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}`
index 4990945d41fa2b8558a33ddac3d0c65641352bd0..e2afd76ea588edb43940c0bd0994ec30e89bcae1 100644 (file)
 
   <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>
index 2672efcae1eeac140962b4c8a2849411f3f58e9e..8e26e8b22ab1def546198400e17f93c5000b9625 100644 (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
index eee134bef2c9e1d92c0c7f5d01afd73f7469e5a0..b58a1f84502c8bb0cfc30dcda687e89d279bc7b4 100644 (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)
   }
 }
index a1db447919cef8501ab1c18038f942aedc3b8ac6..ca28240b03ff81f55da955afd84d7096f32c70da 100644 (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"),
index 3533b0ef187648fc3d90603d14cded869843d2f2..3db24614a132e8b7e9158e1dd6b303090c936d4d 100644 (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