1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-30 13:03:53 +01:00

delay load while syncing

This commit is contained in:
Kyle Spearrin 2018-02-09 11:18:37 -05:00
parent 092bdb5e07
commit f80ae40b1a
5 changed files with 93 additions and 64 deletions

View File

@ -21,10 +21,13 @@
<span class="detail">{{c.subTitle}}</span> <span class="detail">{{c.subTitle}}</span>
</a> </a>
</div> </div>
<div *ngIf="loaded && searchedCiphers.length === 0" class="no-items"> <div class="no-items" *ngIf="searchedCiphers.length === 0">
<i class="fa fa-spinner fa-spin fa-3x" *ngIf="!loaded"></i>
<ng-container *ngIf="loaded">
<i class="fa fa-frown-o fa-4x"></i> <i class="fa fa-frown-o fa-4x"></i>
<p>{{'noItemsInList' | i18n}}</p> <p>{{'noItemsInList' | i18n}}</p>
<button (click)="addCipher()" class="btn block primary link">{{'addItem' | i18n}}</button> <button (click)="addCipher()" class="btn block primary link">{{'addItem' | i18n}}</button>
</ng-container>
</div> </div>
</ng-container> </ng-container>
</div> </div>

View File

@ -35,6 +35,8 @@
</a> </a>
</li> </li>
</ul> </ul>
<p *ngIf="!loaded" class="text-muted">{{'loading' | i18n}}</p>
<ng-container *ngIf="loaded">
<h2> <h2>
{{'folders' | i18n}} {{'folders' | i18n}}
<button appBlurClick (click)="addFolder()" title="{{'addFolder' | i18n}}"> <button appBlurClick (click)="addFolder()" title="{{'addFolder' | i18n}}">
@ -62,5 +64,6 @@
</li> </li>
</ul> </ul>
</div> </div>
</ng-container>
</div> </div>
</div> </div>

View File

@ -4,7 +4,6 @@ import {
Component, Component,
EventEmitter, EventEmitter,
Input, Input,
OnInit,
Output, Output,
} from '@angular/core'; } from '@angular/core';
@ -20,7 +19,7 @@ import { FolderService } from 'jslib/abstractions/folder.service';
selector: 'app-vault-groupings', selector: 'app-vault-groupings',
template: template, template: template,
}) })
export class GroupingsComponent implements OnInit { export class GroupingsComponent {
@Output() onAllClicked = new EventEmitter(); @Output() onAllClicked = new EventEmitter();
@Output() onFavoritesClicked = new EventEmitter(); @Output() onFavoritesClicked = new EventEmitter();
@Output() onCipherTypeClicked = new EventEmitter<CipherType>(); @Output() onCipherTypeClicked = new EventEmitter<CipherType>();
@ -31,6 +30,7 @@ export class GroupingsComponent implements OnInit {
folders: any[]; folders: any[];
collections: any[]; collections: any[];
loaded: boolean = false;
cipherType = CipherType; cipherType = CipherType;
selectedAll: boolean = false; selectedAll: boolean = false;
selectedFavorites: boolean = false; selectedFavorites: boolean = false;
@ -39,12 +39,15 @@ export class GroupingsComponent implements OnInit {
selectedFolderId: string = null; selectedFolderId: string = null;
selectedCollectionId: string = null; selectedCollectionId: string = null;
constructor(private collectionService: CollectionService, private folderService: FolderService) { constructor(private collectionService: CollectionService, private folderService: FolderService) { }
// ctor
async load() {
await this.loadFolders();
await this.loadCollections();
this.loaded = true;
} }
async ngOnInit() { async loadCollections() {
await this.loadFolders();
this.collections = await this.collectionService.getAllDecrypted(); this.collections = await this.collectionService.getAllDecrypted();
} }

View File

@ -33,6 +33,7 @@ import { CollectionView } from 'jslib/models/view/collectionView';
import { FolderView } from 'jslib/models/view/folderView'; import { FolderView } from 'jslib/models/view/folderView';
import { I18nService } from 'jslib/abstractions/i18n.service'; import { I18nService } from 'jslib/abstractions/i18n.service';
import { SyncService } from 'jslib/abstractions/sync.service';
@Component({ @Component({
selector: 'app-vault', selector: 'app-vault',
@ -57,7 +58,7 @@ export class VaultComponent implements OnInit {
constructor(private route: ActivatedRoute, private router: Router, private location: Location, constructor(private route: ActivatedRoute, private router: Router, private location: Location,
private componentFactoryResolver: ComponentFactoryResolver, private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver, private i18nService: I18nService,
private broadcasterService: BroadcasterService, private changeDetectorRef: ChangeDetectorRef, private broadcasterService: BroadcasterService, private changeDetectorRef: ChangeDetectorRef,
private ngZone: NgZone) { private ngZone: NgZone, private syncService: SyncService) {
} }
async ngOnInit() { async ngOnInit() {
@ -92,7 +93,23 @@ export class VaultComponent implements OnInit {
}); });
}); });
while (this.syncService.syncInProgress) {
await new Promise((resolve) => setTimeout(resolve, 200));
}
this.route.queryParams.subscribe(async (params) => { this.route.queryParams.subscribe(async (params) => {
await this.load(params);
});
}
async load(params?: { [key: string]: any }) {
if (params == null) {
this.groupingsComponent.selectedAll = true;
await this.groupingsComponent.load();
await this.ciphersComponent.load();
return;
}
if (params.cipherId) { if (params.cipherId) {
const cipherView = new CipherView(); const cipherView = new CipherView();
cipherView.id = params.cipherId; cipherView.id = params.cipherId;
@ -121,9 +138,9 @@ export class VaultComponent implements OnInit {
await this.filterCollection(params.collectionId); await this.filterCollection(params.collectionId);
} else { } else {
this.groupingsComponent.selectedAll = true; this.groupingsComponent.selectedAll = true;
await this.groupingsComponent.load();
await this.ciphersComponent.load(); await this.ciphersComponent.load();
} }
});
} }
viewCipher(cipher: CipherView) { viewCipher(cipher: CipherView) {

View File

@ -621,5 +621,8 @@
}, },
"account": { "account": {
"message": "Account" "message": "Account"
},
"loading": {
"message": "Loading..."
} }
} }