From 82138a08ff0474a2b0f55a25a3d38ff5167d4816 Mon Sep 17 00:00:00 2001 From: Thomas Rittson <31796059+eliykat@users.noreply.github.com> Date: Fri, 15 Oct 2021 07:58:59 +1000 Subject: [PATCH] [Refactor] Use rxjs first instead of unsubscribe from queryParams (#2112) * Use rxjs first instead of unsubscribe * Update jslib --- jslib | 2 +- src/popup/accounts/two-factor.component.ts | 7 +++---- src/popup/send/send-add-edit.component.ts | 8 +++----- src/popup/send/send-type.component.ts | 9 +++------ src/popup/settings/folder-add-edit.component.ts | 7 +++---- src/popup/vault/add-edit.component.ts | 7 +++---- src/popup/vault/attachments.component.ts | 7 +++---- src/popup/vault/ciphers.component.ts | 7 +++---- src/popup/vault/collections.component.ts | 7 +++---- src/popup/vault/groupings.component.ts | 7 +++---- src/popup/vault/password-history.component.ts | 7 +++---- src/popup/vault/share.component.ts | 7 +++---- src/popup/vault/view.component.ts | 7 +++---- 13 files changed, 37 insertions(+), 52 deletions(-) diff --git a/jslib b/jslib index 764dc40b36e..a20e935268c 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 764dc40b36e0000807e59b8d6feea5ac4577270d +Subproject commit a20e935268c986538ff68f72016bb8c772ea3a1b diff --git a/src/popup/accounts/two-factor.component.ts b/src/popup/accounts/two-factor.component.ts index 7850daa5d91..ac5e3fbb1b6 100644 --- a/src/popup/accounts/two-factor.component.ts +++ b/src/popup/accounts/two-factor.component.ts @@ -9,6 +9,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType'; import { ApiService } from 'jslib-common/abstractions/api.service'; @@ -89,7 +91,7 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { } } - const queryParamsSub = this.route.queryParams.subscribe(async qParams => { + this.route.queryParams.pipe(first()).subscribe(async qParams => { if (qParams.sso === 'true') { super.onSuccessfulLogin = () => { BrowserApi.reloadOpenWindows(); @@ -97,9 +99,6 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { thisWindow.close(); return this.syncService.fullSync(true); }; - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } } }); } diff --git a/src/popup/send/send-add-edit.component.ts b/src/popup/send/send-add-edit.component.ts index bd3d8e0bd4c..6f10a510b9d 100644 --- a/src/popup/send/send-add-edit.component.ts +++ b/src/popup/send/send-add-edit.component.ts @@ -10,6 +10,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { EnvironmentService } from 'jslib-common/abstractions/environment.service'; import { I18nService } from 'jslib-common/abstractions/i18n.service'; import { MessagingService } from 'jslib-common/abstractions/messaging.service'; @@ -79,7 +81,7 @@ export class SendAddEditComponent extends BaseAddEditComponent { this.isLinux = window?.navigator?.userAgent.indexOf('Linux') !== -1; this.isUnsupportedMac = this.platformUtilsService.isChrome() && window?.navigator?.appVersion.includes('Mac OS X 11'); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { if (params.sendId) { this.sendId = params.sendId; } @@ -88,10 +90,6 @@ export class SendAddEditComponent extends BaseAddEditComponent { this.type = type; } await this.load(); - - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); window.setTimeout(() => { diff --git a/src/popup/send/send-type.component.ts b/src/popup/send/send-type.component.ts index 6e26cb61aab..bf143d2f117 100644 --- a/src/popup/send/send-type.component.ts +++ b/src/popup/send/send-type.component.ts @@ -9,6 +9,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { Location } from '@angular/common'; import { SendView } from 'jslib-common/models/view/sendView'; @@ -61,7 +63,7 @@ export class SendTypeComponent extends BaseSendComponent { async ngOnInit() { // Let super class finish await super.ngOnInit(); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { if (this.applySavedState) { this.state = (await this.stateService.get(ComponentId)) || {}; if (this.state.searchText != null) { @@ -89,11 +91,6 @@ export class SendTypeComponent extends BaseSendComponent { window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state.scrollY), 0); } this.stateService.remove(ComponentId); - - // Unsubscribe - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); // Refresh Send list if sync completed in background diff --git a/src/popup/settings/folder-add-edit.component.ts b/src/popup/settings/folder-add-edit.component.ts index b6faa17173c..ef501ba3012 100644 --- a/src/popup/settings/folder-add-edit.component.ts +++ b/src/popup/settings/folder-add-edit.component.ts @@ -4,6 +4,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { FolderService } from 'jslib-common/abstractions/folder.service'; import { I18nService } from 'jslib-common/abstractions/i18n.service'; import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service'; @@ -24,14 +26,11 @@ export class FolderAddEditComponent extends BaseFolderAddEditComponent { } async ngOnInit() { - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { if (params.folderId) { this.folderId = params.folderId; } await this.init(); - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); } diff --git a/src/popup/vault/add-edit.component.ts b/src/popup/vault/add-edit.component.ts index beafa13c460..841d730b7fb 100644 --- a/src/popup/vault/add-edit.component.ts +++ b/src/popup/vault/add-edit.component.ts @@ -5,6 +5,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { BrowserApi } from '../../browser/browserApi'; import { AuditService } from 'jslib-common/abstractions/audit.service'; @@ -54,7 +56,7 @@ export class AddEditComponent extends BaseAddEditComponent { async ngOnInit() { await super.ngOnInit(); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { if (params.cipherId) { this.cipherId = params.cipherId; } @@ -89,9 +91,6 @@ export class AddEditComponent extends BaseAddEditComponent { this.cipher.login.uris[0].uri = params.uri; } } - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } this.openAttachmentsInPopup = this.popupUtilsService.inPopup(window); }); diff --git a/src/popup/vault/attachments.component.ts b/src/popup/vault/attachments.component.ts index 90500bcdcac..f6821543749 100644 --- a/src/popup/vault/attachments.component.ts +++ b/src/popup/vault/attachments.component.ts @@ -2,6 +2,8 @@ import { Location } from '@angular/common'; import { Component } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { ApiService } from 'jslib-common/abstractions/api.service'; import { CipherService } from 'jslib-common/abstractions/cipher.service'; import { CryptoService } from 'jslib-common/abstractions/crypto.service'; @@ -26,12 +28,9 @@ export class AttachmentsComponent extends BaseAttachmentsComponent { } async ngOnInit() { - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { this.cipherId = params.cipherId; await this.init(); - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); this.openedAttachmentsInPopup = history.length === 1; diff --git a/src/popup/vault/ciphers.component.ts b/src/popup/vault/ciphers.component.ts index 1c221bb299c..260e45d2206 100644 --- a/src/popup/vault/ciphers.component.ts +++ b/src/popup/vault/ciphers.component.ts @@ -11,6 +11,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { BrowserApi } from '../../browser/browserApi'; import { CipherService } from 'jslib-common/abstractions/cipher.service'; @@ -70,7 +72,7 @@ export class CiphersComponent extends BaseCiphersComponent implements OnInit, On async ngOnInit() { this.searchTypeSearch = !this.platformUtilsService.isSafari(); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { if (this.applySavedState) { this.state = (await this.stateService.get(ComponentId)) || {}; if (this.state.searchText) { @@ -136,9 +138,6 @@ export class CiphersComponent extends BaseCiphersComponent implements OnInit, On this.scrollingContainer), 0); } this.stateService.remove(ComponentId); - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); this.broadcasterService.subscribe(ComponentId, (message: any) => { diff --git a/src/popup/vault/collections.component.ts b/src/popup/vault/collections.component.ts index 476d8d7f829..9a7734f9888 100644 --- a/src/popup/vault/collections.component.ts +++ b/src/popup/vault/collections.component.ts @@ -2,6 +2,8 @@ import { Location } from '@angular/common'; import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { CipherService } from 'jslib-common/abstractions/cipher.service'; import { CollectionService } from 'jslib-common/abstractions/collection.service'; import { I18nService } from 'jslib-common/abstractions/i18n.service'; @@ -24,12 +26,9 @@ export class CollectionsComponent extends BaseCollectionsComponent { this.onSavedCollections.subscribe(() => { this.back(); }); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { this.cipherId = params.cipherId; await this.load(); - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); } diff --git a/src/popup/vault/groupings.component.ts b/src/popup/vault/groupings.component.ts index b8aa9efa494..5860d3cbb54 100644 --- a/src/popup/vault/groupings.component.ts +++ b/src/popup/vault/groupings.component.ts @@ -11,6 +11,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { BrowserApi } from '../../browser/browserApi'; import { CipherType } from 'jslib-common/enums/cipherType'; @@ -109,7 +111,7 @@ export class GroupingsComponent extends BaseGroupingsComponent implements OnInit }); const restoredScopeState = await this.restoreState(); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { this.state = (await this.stateService.get(ComponentId)) || {}; if (this.state.searchText) { this.searchText = this.state.searchText; @@ -131,9 +133,6 @@ export class GroupingsComponent extends BaseGroupingsComponent implements OnInit if (!this.syncService.syncInProgress || restoredScopeState) { window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state.scrollY), 0); } - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); } diff --git a/src/popup/vault/password-history.component.ts b/src/popup/vault/password-history.component.ts index b25aca1e2c4..85da89a11fd 100644 --- a/src/popup/vault/password-history.component.ts +++ b/src/popup/vault/password-history.component.ts @@ -2,6 +2,8 @@ import { Location } from '@angular/common'; import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { CipherService } from 'jslib-common/abstractions/cipher.service'; import { I18nService } from 'jslib-common/abstractions/i18n.service'; import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service'; @@ -22,16 +24,13 @@ export class PasswordHistoryComponent extends BasePasswordHistoryComponent { } async ngOnInit() { - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { if (params.cipherId) { this.cipherId = params.cipherId; } else { this.close(); } await this.init(); - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); } diff --git a/src/popup/vault/share.component.ts b/src/popup/vault/share.component.ts index 7a3a38cab5c..963eb5fda05 100644 --- a/src/popup/vault/share.component.ts +++ b/src/popup/vault/share.component.ts @@ -5,6 +5,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { CipherService } from 'jslib-common/abstractions/cipher.service'; import { CollectionService } from 'jslib-common/abstractions/collection.service'; import { I18nService } from 'jslib-common/abstractions/i18n.service'; @@ -29,12 +31,9 @@ export class ShareComponent extends BaseShareComponent { this.onSharedCipher.subscribe(() => { this.router.navigate(['view-cipher', { cipherId: this.cipherId }]); }); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { this.cipherId = params.cipherId; await this.load(); - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); } diff --git a/src/popup/vault/view.component.ts b/src/popup/vault/view.component.ts index 06d32ff280b..8a55009538f 100644 --- a/src/popup/vault/view.component.ts +++ b/src/popup/vault/view.component.ts @@ -9,6 +9,8 @@ import { Router, } from '@angular/router'; +import { first } from 'rxjs/operators'; + import { ApiService } from 'jslib-common/abstractions/api.service'; import { AuditService } from 'jslib-common/abstractions/audit.service'; import { CipherService } from 'jslib-common/abstractions/cipher.service'; @@ -65,7 +67,7 @@ export class ViewComponent extends BaseViewComponent { ngOnInit() { this.inPopout = this.popupUtilsService.inPopout(window); - const queryParamsSub = this.route.queryParams.subscribe(async params => { + this.route.queryParams.pipe(first()).subscribe(async params => { if (params.cipherId) { this.cipherId = params.cipherId; } else { @@ -73,9 +75,6 @@ export class ViewComponent extends BaseViewComponent { } await this.load(); - if (queryParamsSub != null) { - queryParamsSub.unsubscribe(); - } }); super.ngOnInit();