extend state service
This commit is contained in:
parent
81ee086be0
commit
a49f9fad06
|
@ -1,6 +1,6 @@
|
|||
import { NotificationsService } from 'jslib-common/abstractions/notifications.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';
|
||||
import { StateService } from '../services/abstractions/state.service';
|
||||
|
||||
const IdleInterval = 60 * 5; // 5 minutes
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@ import { ProviderService } from 'jslib-common/services/provider.service';
|
|||
import { SearchService } from 'jslib-common/services/search.service';
|
||||
import { SendService } from 'jslib-common/services/send.service';
|
||||
import { SettingsService } from 'jslib-common/services/settings.service';
|
||||
import { StateService } from 'jslib-common/services/state.service';
|
||||
import { StateMigrationService } from 'jslib-common/services/stateMigration.service';
|
||||
import { SyncService } from 'jslib-common/services/sync.service';
|
||||
import { SystemService } from 'jslib-common/services/system.service';
|
||||
|
@ -59,7 +58,6 @@ import { ProviderService as ProviderServiceAbstraction } from 'jslib-common/abst
|
|||
import { SearchService as SearchServiceAbstraction } from 'jslib-common/abstractions/search.service';
|
||||
import { SendService as SendServiceAbstraction } from 'jslib-common/abstractions/send.service';
|
||||
import { SettingsService as SettingsServiceAbstraction } from 'jslib-common/abstractions/settings.service';
|
||||
import { StateService as StateServiceAbstraction } from 'jslib-common/abstractions/state.service';
|
||||
import { StorageService as StorageServiceAbstraction } from 'jslib-common/abstractions/storage.service';
|
||||
import { SyncService as SyncServiceAbstraction } from 'jslib-common/abstractions/sync.service';
|
||||
import { SystemService as SystemServiceAbstraction } from 'jslib-common/abstractions/system.service';
|
||||
|
@ -81,6 +79,7 @@ import TabsBackground from './tabs.background';
|
|||
import WebRequestBackground from './webRequest.background';
|
||||
import WindowsBackground from './windows.background';
|
||||
|
||||
import { Utils } from 'jslib-common/misc/utils';
|
||||
import { PopupUtilsService } from '../popup/services/popup-utils.service';
|
||||
import AutofillService from '../services/autofill.service';
|
||||
import { BrowserCryptoService } from '../services/browserCrypto.service';
|
||||
|
@ -89,7 +88,8 @@ import BrowserPlatformUtilsService from '../services/browserPlatformUtils.servic
|
|||
import BrowserStorageService from '../services/browserStorage.service';
|
||||
import I18nService from '../services/i18n.service';
|
||||
import VaultTimeoutService from '../services/vaultTimeout.service';
|
||||
import { Utils } from 'jslib-common/misc/utils';
|
||||
import { StateService } from '../services/state.service';
|
||||
import { StateService as StateServiceAbstraction } from '../services/abstractions/state.service'
|
||||
|
||||
export default class MainBackground {
|
||||
messagingService: MessagingServiceAbstraction;
|
||||
|
|
|
@ -19,13 +19,13 @@ import { Utils } from 'jslib-common/misc/utils';
|
|||
|
||||
import { PolicyType } from 'jslib-common/enums/policyType';
|
||||
|
||||
import { StateService } from '../services/abstractions/state.service';
|
||||
import AddChangePasswordQueueMessage from './models/addChangePasswordQueueMessage';
|
||||
import AddLoginQueueMessage from './models/addLoginQueueMessage';
|
||||
import AddLoginRuntimeMessage from './models/addLoginRuntimeMessage';
|
||||
import ChangePasswordRuntimeMessage from './models/changePasswordRuntimeMessage';
|
||||
import LockedVaultPendingNotificationsItem from './models/lockedVaultPendingNotificationsItem';
|
||||
import { NotificationQueueMessageType } from './models/notificationQueueMessageType';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
|
||||
export default class NotificationBackground {
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
import { Account as BaseAccount } from 'jslib-common/models/domain/account';
|
||||
|
||||
import { BrowserComponentState } from './browserComponentState';
|
||||
import { BrowserGroupingsComponentState } from './browserGroupingsComponentState';
|
||||
import { BrowserSendComponentState } from './browserSendComponentState';
|
||||
|
||||
export class Account extends BaseAccount {
|
||||
groupings?: BrowserGroupingsComponentState;
|
||||
send?: BrowserSendComponentState;
|
||||
ciphers?: BrowserComponentState;
|
||||
sendType?: BrowserComponentState;
|
||||
|
||||
constructor(init: Partial<Account>) {
|
||||
super(init);
|
||||
this.groupings = init.groupings ??
|
||||
new BrowserGroupingsComponentState();
|
||||
this.send = init.send ??
|
||||
new BrowserSendComponentState();
|
||||
this.ciphers = init.ciphers ??
|
||||
new BrowserComponentState();
|
||||
this.sendType = init.sendType ??
|
||||
new BrowserComponentState();
|
||||
}
|
||||
|
||||
reset() {
|
||||
super.reset();
|
||||
this.groupings = new BrowserGroupingsComponentState();
|
||||
this.send = new BrowserSendComponentState();
|
||||
this.ciphers = new BrowserComponentState();
|
||||
this.sendType = new BrowserComponentState();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
export class BrowserComponentState {
|
||||
scrollY: number;
|
||||
searchText: string;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
import { CipherType } from 'jslib-common/enums/cipherType';
|
||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
||||
import { CollectionView } from 'jslib-common/models/view/collectionView';
|
||||
import { FolderView } from 'jslib-common/models/view/folderView';
|
||||
import { BrowserComponentState } from './browserComponentState';
|
||||
|
||||
export class BrowserGroupingsComponentState extends BrowserComponentState {
|
||||
favoriteCiphers: CipherView[];
|
||||
noFolderCiphers: CipherView[];
|
||||
collectionCounts: Map<string, number>;
|
||||
typeCounts: Map<CipherType, number>;
|
||||
folders: FolderView[];
|
||||
collections: CollectionView[];
|
||||
deletedCount: number;
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
import { SendType } from 'jslib-common/enums/sendType';
|
||||
import { SendView } from 'jslib-common/models/view/sendView';
|
||||
import { BrowserComponentState } from './browserComponentState';
|
||||
|
||||
export class BrowserSendComponentState extends BrowserComponentState {
|
||||
sends: SendView[];
|
||||
typeCounts: Map<SendType, number>;
|
||||
}
|
|
@ -4,7 +4,7 @@ import { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.
|
|||
import { EnvironmentService } from 'jslib-common/abstractions/environment.service';
|
||||
import { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
import { Utils } from 'jslib-common/misc/utils';
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
|||
import { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';
|
||||
import { LogService } from 'jslib-common/abstractions/log.service';
|
||||
import { MessagingService } from 'jslib-common/abstractions/messaging.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/state.service';
|
||||
import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';
|
||||
|
||||
import { LockComponent as BaseLockComponent } from 'jslib-angular/components/lock.component';
|
||||
|
|
|
@ -37,4 +37,9 @@ export class LoginComponent extends BaseLoginComponent {
|
|||
settings() {
|
||||
this.router.navigate(['environment']);
|
||||
}
|
||||
|
||||
async submit() {
|
||||
await super.submit();
|
||||
this.stateService.setRememberedEmail(this.email);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
|||
import { LogService } from 'jslib-common/abstractions/log.service';
|
||||
import { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Component, NgZone, ChangeDetectorRef } from '@angular/core';
|
||||
import { ChangeDetectorRef, Component, NgZone } from '@angular/core';
|
||||
import {
|
||||
ActivatedRoute,
|
||||
Router,
|
||||
|
@ -21,8 +21,8 @@ import { TwoFactorComponent as BaseTwoFactorComponent } from 'jslib-angular/comp
|
|||
|
||||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
|
||||
import { BrowserApi } from '../../browser/browserApi';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { BrowserApi } from '../../browser/browserApi';
|
||||
|
||||
const BroadcasterSubscriptionId = 'TwoFactorComponent';
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import { PolicyService } from 'jslib-common/abstractions/policy.service';
|
|||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
|
||||
import { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from 'jslib-angular/components/update-temp-password.component';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
interface MasterPasswordScore {
|
||||
Color: string;
|
||||
|
|
|
@ -23,11 +23,11 @@ import { BroadcasterService } from 'jslib-common/abstractions/broadcaster.servic
|
|||
import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
||||
import { MessagingService } from 'jslib-common/abstractions/messaging.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../services/abstractions/state.service';
|
||||
import { StorageService } from 'jslib-common/abstractions/storage.service';
|
||||
|
||||
import { routerTransition } from './app-routing.animations';
|
||||
import { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';
|
||||
import { routerTransition } from './app-routing.animations';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
|
|
|
@ -15,8 +15,8 @@ import { EventService } from 'jslib-common/abstractions/event.service';
|
|||
import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
||||
import { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { TotpService } from 'jslib-common/abstractions/totp.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-action-buttons',
|
||||
|
|
|
@ -4,7 +4,7 @@ import { Component } from '@angular/core';
|
|||
import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
||||
import { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
import { CipherView } from 'jslib-common/models/view/cipherView';
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ import { TokenService } from 'jslib-common/abstractions/token.service';
|
|||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
|
||||
import { AddEditComponent as BaseAddEditComponent } from 'jslib-angular/components/send/add-edit.component';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-send-add-edit',
|
||||
|
|
|
@ -20,13 +20,13 @@ import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.se
|
|||
import { PolicyService } from 'jslib-common/abstractions/policy.service';
|
||||
import { SearchService } from 'jslib-common/abstractions/search.service';
|
||||
import { SendService } from 'jslib-common/abstractions/send.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
|
||||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
|
||||
import { SendType } from 'jslib-common/enums/sendType';
|
||||
import { BrowserSendComponentState } from 'jslib-common/models/domain/browserSendComponentState';
|
||||
import { BrowserSendComponentState } from '../../models/browserSendComponentState';
|
||||
|
||||
const ComponentId = 'SendComponent';
|
||||
const ScopeStateId = ComponentId + 'Scope';
|
||||
|
|
|
@ -25,12 +25,12 @@ import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.se
|
|||
import { PolicyService } from 'jslib-common/abstractions/policy.service';
|
||||
import { SearchService } from 'jslib-common/abstractions/search.service';
|
||||
import { SendService } from 'jslib-common/abstractions/send.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
|
||||
import { SendType } from 'jslib-common/enums/sendType';
|
||||
import { BrowserComponentState } from 'jslib-common/models/domain/browserComponentState';
|
||||
import { BrowserComponentState } from '../../models/browserComponentState';
|
||||
|
||||
const ComponentId = 'SendTypeComponent';
|
||||
|
||||
|
@ -88,7 +88,7 @@ export class SendTypeComponent extends BaseSendComponent {
|
|||
|
||||
// Restore state and remove reference
|
||||
if (this.applySavedState && this.state != null) {
|
||||
window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state.scrollY), 0);
|
||||
window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state?.scrollY), 0);
|
||||
}
|
||||
this.stateService.setBrowserSendComponentState(null);
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@ import { ProviderService } from 'jslib-common/abstractions/provider.service';
|
|||
import { SearchService as SearchServiceAbstraction } from 'jslib-common/abstractions/search.service';
|
||||
import { SendService } from 'jslib-common/abstractions/send.service';
|
||||
import { SettingsService } from 'jslib-common/abstractions/settings.service';
|
||||
import { StateService as StateServiceAbstraction } from 'jslib-common/abstractions/state.service';
|
||||
import { StorageService } from 'jslib-common/abstractions/storage.service';
|
||||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
import { TokenService } from 'jslib-common/abstractions/token.service';
|
||||
|
@ -53,16 +52,17 @@ import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.serv
|
|||
|
||||
import { AutofillService } from '../../services/abstractions/autofill.service';
|
||||
import BrowserMessagingService from '../../services/browserMessaging.service';
|
||||
import { StateService as StateServiceAbstraction } from '../../services/abstractions/state.service';
|
||||
|
||||
import { AuthService } from 'jslib-common/services/auth.service';
|
||||
import { ConsoleLogService } from 'jslib-common/services/consoleLog.service';
|
||||
import { SearchService } from 'jslib-common/services/search.service';
|
||||
import { StateService } from 'jslib-common/services/state.service';
|
||||
|
||||
import { PopupSearchService } from './popup-search.service';
|
||||
import { PopupUtilsService } from './popup-utils.service';
|
||||
|
||||
import { ThemeType } from 'jslib-common/enums/themeType';
|
||||
import { StateService } from '../../services/state.service';
|
||||
|
||||
function getBgService<T>(service: string) {
|
||||
return (): T => {
|
||||
|
|
|
@ -13,8 +13,8 @@ import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.se
|
|||
|
||||
import { BrowserApi } from '../../browser/browserApi';
|
||||
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { Utils } from 'jslib-common/misc/utils';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
|
||||
interface ExcludedDomain {
|
||||
uri: string;
|
||||
|
|
|
@ -8,8 +8,8 @@ import { UriMatchType } from 'jslib-common/enums/uriMatchType';
|
|||
|
||||
import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
||||
import { MessagingService } from 'jslib-common/abstractions/messaging.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { TotpService } from 'jslib-common/abstractions/totp.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-options',
|
||||
|
|
|
@ -7,7 +7,7 @@ import { LogService } from 'jslib-common/abstractions/log.service';
|
|||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
|
||||
import { PremiumComponent as BasePremiumComponent } from 'jslib-angular/components/premium.component';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-premium',
|
||||
|
|
|
@ -23,8 +23,8 @@ import { PopupUtilsService } from '../services/popup-utils.service';
|
|||
|
||||
import { ModalService } from 'jslib-angular/services/modal.service';
|
||||
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { SetPinComponent } from '../components/set-pin.component';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
|
||||
const RateUrls = {
|
||||
[DeviceType.ChromeExtension]:
|
||||
|
|
|
@ -21,7 +21,7 @@ import { OrganizationService } from 'jslib-common/abstractions/organization.serv
|
|||
import { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { PolicyService } from 'jslib-common/abstractions/policy.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ import { LogService } from 'jslib-common/abstractions/log.service';
|
|||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
|
||||
import { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib-angular/components/attachments.component';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-vault-attachments',
|
||||
|
|
|
@ -22,7 +22,7 @@ import { FolderService } from 'jslib-common/abstractions/folder.service';
|
|||
import { I18nService } from 'jslib-common/abstractions/i18n.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { SearchService } from 'jslib-common/abstractions/search.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
|
||||
import { CipherType } from 'jslib-common/enums/cipherType';
|
||||
|
||||
|
@ -34,8 +34,8 @@ import { TreeNode } from 'jslib-common/models/domain/treeNode';
|
|||
|
||||
import { CiphersComponent as BaseCiphersComponent } from 'jslib-angular/components/ciphers.component';
|
||||
|
||||
import { BrowserComponentState } from '../../models/browserComponentState';
|
||||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
import { BrowserComponentState } from 'jslib-common/models/domain/browserComponentState';
|
||||
|
||||
const ComponentId = 'CiphersComponent';
|
||||
|
||||
|
@ -74,8 +74,8 @@ export class CiphersComponent extends BaseCiphersComponent implements OnInit, On
|
|||
this.searchTypeSearch = !this.platformUtilsService.isSafari();
|
||||
this.route.queryParams.pipe(first()).subscribe(async params => {
|
||||
if (this.applySavedState) {
|
||||
this.state = await this.stateService.getBrowserCipherComponentState();
|
||||
if (this.state.searchText) {
|
||||
// this.state = await this.stateService.getBrowserCipherComponentState();
|
||||
if (this.state?.searchText) {
|
||||
this.searchText = this.state.searchText;
|
||||
}
|
||||
}
|
||||
|
@ -134,10 +134,10 @@ export class CiphersComponent extends BaseCiphersComponent implements OnInit, On
|
|||
}
|
||||
|
||||
if (this.applySavedState && this.state != null) {
|
||||
window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state.scrollY,
|
||||
window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state?.scrollY,
|
||||
this.scrollingContainer), 0);
|
||||
}
|
||||
this.stateService.setBrowserCipherComponentState(null);
|
||||
// this.stateService.setBrowserCipherComponentState(null);
|
||||
});
|
||||
|
||||
this.broadcasterService.subscribe(ComponentId, (message: any) => {
|
||||
|
@ -230,6 +230,6 @@ export class CiphersComponent extends BaseCiphersComponent implements OnInit, On
|
|||
scrollY: this.popupUtils.getContentScrollY(window, this.scrollingContainer),
|
||||
searchText: this.searchText,
|
||||
};
|
||||
await this.stateService.setBrowserCipherComponentState(this.state);
|
||||
// await this.stateService.setBrowserCipherComponentState(this.state);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AutofillService } from '../../services/abstractions/autofill.service';
|
|||
|
||||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { Utils } from 'jslib-common/misc/utils';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
|
||||
const BroadcasterSubscriptionId = 'CurrentTabComponent';
|
||||
|
||||
|
|
|
@ -27,12 +27,12 @@ import { CollectionService } from 'jslib-common/abstractions/collection.service'
|
|||
import { FolderService } from 'jslib-common/abstractions/folder.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { SearchService } from 'jslib-common/abstractions/search.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { SyncService } from 'jslib-common/abstractions/sync.service';
|
||||
|
||||
import { GroupingsComponent as BaseGroupingsComponent } from 'jslib-angular/components/groupings.component';
|
||||
|
||||
import { PopupUtilsService } from '../services/popup-utils.service';
|
||||
import { StateService } from 'src/services/abstractions/state.service';
|
||||
|
||||
const ComponentId = 'GroupingsComponent';
|
||||
const ScopeStateId = ComponentId + 'Scope';
|
||||
|
@ -88,7 +88,7 @@ export class GroupingsComponent extends BaseGroupingsComponent implements OnInit
|
|||
async ngOnInit() {
|
||||
this.searchTypeSearch = !this.platformUtilsService.isSafari();
|
||||
this.showLeftHeader = !(this.popupUtils.inSidebar(window) && this.platformUtilsService.isFirefox());
|
||||
this.stateService.setBrowserCipherComponentState(null);
|
||||
// this.stateService.setBrowserCipherComponentState(null);
|
||||
|
||||
this.broadcasterService.subscribe(ComponentId, (message: any) => {
|
||||
this.ngZone.run(async () => {
|
||||
|
@ -108,8 +108,8 @@ export class GroupingsComponent extends BaseGroupingsComponent implements OnInit
|
|||
|
||||
const restoredScopeState = await this.restoreState();
|
||||
this.route.queryParams.pipe(first()).subscribe(async params => {
|
||||
this.state = (await this.stateService.getBrowserGroupingComponentState()) || {};
|
||||
if (this.state.searchText) {
|
||||
//this.state = (await this.stateService.getBrowserGroupingComponentState()) || {};
|
||||
if (this.state?.searchText) {
|
||||
this.searchText = this.state.searchText;
|
||||
} else if (params.searchText) {
|
||||
this.searchText = params.searchText;
|
||||
|
@ -127,7 +127,7 @@ export class GroupingsComponent extends BaseGroupingsComponent implements OnInit
|
|||
}
|
||||
|
||||
if (!this.syncService.syncInProgress || restoredScopeState) {
|
||||
window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state.scrollY), 0);
|
||||
window.setTimeout(() => this.popupUtils.setContentScrollY(window, this.state?.scrollY), 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -312,11 +312,11 @@ export class GroupingsComponent extends BaseGroupingsComponent implements OnInit
|
|||
collections: this.collections,
|
||||
deletedCount: this.deletedCount,
|
||||
};
|
||||
await this.stateService.setBrowserGroupingComponentState(this.scopeState);
|
||||
// await this.stateService.setBrowserGroupingComponentState(this.scopeState);
|
||||
}
|
||||
|
||||
private async restoreState(): Promise<boolean> {
|
||||
this.scopeState = await this.stateService.getBrowserGroupingComponentState();
|
||||
// this.scopeState = await this.stateService.getBrowserGroupingComponentState();
|
||||
if (this.scopeState == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import { LogService } from 'jslib-common/abstractions/log.service';
|
|||
import { MessagingService } from 'jslib-common/abstractions/messaging.service';
|
||||
import { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../../services/abstractions/state.service';
|
||||
import { TokenService } from 'jslib-common/abstractions/token.service';
|
||||
import { TotpService } from 'jslib-common/abstractions/totp.service';
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
import { StateService as BaseStateServiceAbstraction } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { StorageOptions } from "jslib-common/models/domain/storageOptions";
|
||||
import { Account } from "src/models/account";
|
||||
|
||||
import { BrowserComponentState } from "src/models/browserComponentState";
|
||||
import { BrowserGroupingsComponentState } from "src/models/browserGroupingsComponentState";
|
||||
import { BrowserSendComponentState } from "src/models/browserSendComponentState";
|
||||
|
||||
|
||||
export abstract class StateService extends BaseStateServiceAbstraction<Account> {
|
||||
getBrowserGroupingComponentState: (options?: StorageOptions) => Promise<BrowserGroupingsComponentState>;
|
||||
setBrowserGroupingComponentState: (value: BrowserGroupingsComponentState, options?: StorageOptions) => Promise<void>;
|
||||
getBrowserCipherComponentState: (options?: StorageOptions) => Promise<BrowserComponentState>;
|
||||
setBrowserCipherComponentState: (value: BrowserComponentState, options?: StorageOptions) => Promise<void>;
|
||||
getBrowserSendComponentState: (options?: StorageOptions) => Promise<BrowserSendComponentState>;
|
||||
setBrowserSendComponentState: (value: BrowserSendComponentState, options?: StorageOptions) => Promise<void>;
|
||||
getBrowserSendTypeComponentState: (options?: StorageOptions) => Promise<BrowserComponentState>;
|
||||
setBrowserSendTypeComponentState: (value: BrowserComponentState, options?: StorageOptions) => Promise<void>;
|
||||
}
|
|
@ -17,8 +17,8 @@ import AutofillField from '../models/autofillField';
|
|||
import AutofillPageDetails from '../models/autofillPageDetails';
|
||||
import AutofillScript from '../models/autofillScript';
|
||||
|
||||
import { StateService } from '../services/abstractions/state.service';
|
||||
import { BrowserApi } from '../browser/browserApi';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
|
||||
const CardAttributes: string[] = ['autoCompleteType', 'data-stripe', 'htmlName', 'htmlID', 'label-tag',
|
||||
'placeholder', 'label-left', 'label-top', 'data-recurly'];
|
||||
|
|
|
@ -6,7 +6,7 @@ import { ThemeType } from 'jslib-common/enums/themeType';
|
|||
|
||||
import { MessagingService } from 'jslib-common/abstractions/messaging.service';
|
||||
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
||||
import { StateService } from 'jslib-common/abstractions/state.service';
|
||||
import { StateService } from '../services/abstractions/state.service';
|
||||
|
||||
const DialogPromiseExpiration = 600000; // 10 minutes
|
||||
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
import { Account as BaseAccount } from 'jslib-common/models/domain/account';
|
||||
import { StorageOptions } from 'jslib-common/models/domain/storageOptions';
|
||||
import { StateService as BaseStateService } from 'jslib-common/services/state.service';
|
||||
import { StateMigrationService } from 'jslib-common/services/stateMigration.service';
|
||||
|
||||
import { Account } from 'src/models/account';
|
||||
import { BrowserComponentState } from '../models/browserComponentState';
|
||||
import { BrowserGroupingsComponentState } from '../models/browserGroupingsComponentState';
|
||||
import { BrowserSendComponentState } from '../models/browserSendComponentState';
|
||||
import { StateService as StateServiceAbstraction } from './abstractions/state.service';
|
||||
|
||||
|
||||
export class StateService extends BaseStateService<Account> implements StateServiceAbstraction {
|
||||
|
||||
async getBrowserGroupingComponentState(options?: StorageOptions): Promise<BrowserGroupingsComponentState> {
|
||||
return (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())))?.groupings;
|
||||
}
|
||||
|
||||
async setBrowserGroupingComponentState(value: BrowserGroupingsComponentState, options?: StorageOptions): Promise<void> {
|
||||
const account = await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
account.groupings = value;
|
||||
await this.saveAccount(account, this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
}
|
||||
|
||||
async getBrowserCipherComponentState(options?: StorageOptions): Promise<BrowserComponentState> {
|
||||
return (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())))?.ciphers;
|
||||
}
|
||||
|
||||
async setBrowserCipherComponentState(value: BrowserComponentState, options?: StorageOptions): Promise<void> {
|
||||
const account = await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
account.ciphers = value;
|
||||
await this.saveAccount(account, this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
}
|
||||
|
||||
async getBrowserSendComponentState(options?: StorageOptions): Promise<BrowserSendComponentState> {
|
||||
return (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())))?.send;
|
||||
}
|
||||
|
||||
async setBrowserSendComponentState(value: BrowserSendComponentState, options?: StorageOptions): Promise<void> {
|
||||
const account = await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
account.send = value;
|
||||
await this.saveAccount(account, this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
}
|
||||
async getBrowserSendTypeComponentState(options?: StorageOptions): Promise<BrowserComponentState> {
|
||||
return (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())))?.sendType;
|
||||
}
|
||||
|
||||
async setBrowserSendTypeComponentState(value: BrowserComponentState, options?: StorageOptions): Promise<void> {
|
||||
const account = await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
account.sendType = value;
|
||||
await this.saveAccount(account, this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue