]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Add version check to app frame
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Fri, 1 Apr 2022 08:53:59 +0000 (01:53 -0700)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Sat, 2 Apr 2022 08:33:51 +0000 (01:33 -0700)
src-ui/src/app/components/app-frame/app-frame.component.html
src-ui/src/app/components/app-frame/app-frame.component.scss
src-ui/src/app/components/app-frame/app-frame.component.ts
src-ui/src/theme.scss

index aca66eb3ae02f1fdb332ea8319eaa93f4dbeb7bf..208100af813efcbcaf0cfa62f6179b8f54e1446d 100644 (file)
             </div>
           </li>
           <li class="nav-item mt-2">
-            <div class="px-3 py-2 text-muted small">
-              {{versionString}}
+            <div class="px-3 py-2 text-muted small d-flex align-items-center flex-wrap">
+              <div class="me-3">{{ versionString }}</div>
+              <div *ngIf="appRemoteVersion?.greater_than_current" class="version-check">
+                <ng-template #updatePopContent>
+                  <span class="small">Paperless-ngx v{{ appRemoteVersion.version }} <ng-container i18n>is available.</ng-container><br/><ng-container i18n>Click to view.</ng-container></span>
+                </ng-template>
+                <a class="small text-decoration-none" target="_blank" rel="noopener noreferrer" href="https://github.com/paperless-ngx/paperless-ngx/releases"
+                [ngbPopover]="updatePopContent" popoverClass="shadow" triggers="mouseenter:mouseleave" container="body">
+                  <svg fill="currentColor" class="me-1" width="1.2em" height="1.2em" style="vertical-align: text-top;" viewBox="0 0 16 16">
+                    <use xlink:href="assets/bootstrap-icons.svg#info-circle" />
+                  </svg>
+                  <ng-container i18n>Update available</ng-container>
+                </a>
+              </div>
             </div>
           </li>
         </ul>
index 95cb888e7c21611b8760a7ea558b37b086fe9131..6fe4c1ed932eff5bfea525fb0bb94cec2f35307d 100644 (file)
     }
   }
 }
+
+.version-check {
+  animation: pulse 2s ease-in-out 0s 1;
+}
+
+@keyframes pulse {
+  0% {
+    opacity: 0;
+  }
+  25% {
+    opacity: 100%;
+  }
+  75% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 100%;
+  }
+}
index a038c9a3169a895035c4415ba3c93d447bd82a61..a335aad1d9abb4982c248353e55f6d526f46a39b 100644 (file)
@@ -18,6 +18,10 @@ import { DocumentDetailComponent } from '../document-detail/document-detail.comp
 import { Meta } from '@angular/platform-browser'
 import { DocumentListViewService } from 'src/app/services/document-list-view.service'
 import { FILTER_FULLTEXT_QUERY } from 'src/app/data/filter-rule-type'
+import {
+  RemoteVersionService,
+  AppRemoteVersion,
+} from 'src/app/services/rest/remote-version.service'
 
 @Component({
   selector: 'app-app-frame',
@@ -32,10 +36,18 @@ export class AppFrameComponent {
     private searchService: SearchService,
     public savedViewService: SavedViewService,
     private list: DocumentListViewService,
-    private meta: Meta
-  ) {}
+    private meta: Meta,
+    private remoteVersionService: RemoteVersionService
+  ) {
+    this.remoteVersionService
+      .checkForUpdates()
+      .subscribe((appRemoteVersion: AppRemoteVersion) => {
+        this.appRemoteVersion = appRemoteVersion
+      })
+  }
 
   versionString = `${environment.appTitle} ${environment.version}`
+  appRemoteVersion
 
   isMenuCollapsed: boolean = true
 
index 916524e89c183d6cc383f54aac651507459740ce..cb6ee859af72a11e97773ccc4d4db35011a2bc2b 100644 (file)
@@ -271,6 +271,7 @@ table.table {
   .popover-body {
     background-color: var(--ngx-bg-alt);
     border-color: var(--bs-border-color);
+    color: var(--bs-body-color);
   }
 }