From efd4ff5fbcd1e557c3c8af25b8b8ee5b3a2e9f0d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 20 Jan 2022 10:11:49 +0100 Subject: Open and close settings modal using query params --- .../app/modal/quick-settings-modal.component.ts | 31 +++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'client/src/app/modal/quick-settings-modal.component.ts') diff --git a/client/src/app/modal/quick-settings-modal.component.ts b/client/src/app/modal/quick-settings-modal.component.ts index 7a53179cb..19f75ad5c 100644 --- a/client/src/app/modal/quick-settings-modal.component.ts +++ b/client/src/app/modal/quick-settings-modal.component.ts @@ -1,8 +1,8 @@ import { ReplaySubject } from 'rxjs' import { filter } from 'rxjs/operators' import { Component, OnInit, ViewChild } from '@angular/core' +import { ActivatedRoute, Router } from '@angular/router' import { AuthService, AuthStatus, LocalStorageService, User, UserService } from '@app/core' -import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' @@ -10,7 +10,9 @@ import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' selector: 'my-quick-settings', templateUrl: './quick-settings-modal.component.html' }) -export class QuickSettingsModalComponent extends FormReactive implements OnInit { +export class QuickSettingsModalComponent implements OnInit { + private static readonly QUERY_MODAL_NAME = 'quick-settings' + @ViewChild('modal', { static: true }) modal: NgbModal user: User @@ -19,13 +21,13 @@ export class QuickSettingsModalComponent extends FormReactive implements OnInit private openedModal: NgbModalRef constructor ( - protected formValidatorService: FormValidatorService, private modalService: NgbModal, private userService: UserService, private authService: AuthService, - private localStorageService: LocalStorageService + private localStorageService: LocalStorageService, + private route: ActivatedRoute, + private router: Router ) { - super() } ngOnInit () { @@ -45,6 +47,14 @@ export class QuickSettingsModalComponent extends FormReactive implements OnInit this.userInformationLoaded.next(true) } }) + + this.route.queryParams.subscribe(params => { + if (params['modal'] === QuickSettingsModalComponent.QUERY_MODAL_NAME) { + this.openedModal = this.modalService.open(this.modal, { centered: true }) + + this.openedModal.hidden.subscribe(() => this.setModalQuery('remove')) + } + }) } isUserLoggedIn () { @@ -52,11 +62,14 @@ export class QuickSettingsModalComponent extends FormReactive implements OnInit } show () { - this.openedModal = this.modalService.open(this.modal, { centered: true }) + this.setModalQuery('add') } - hide () { - this.openedModal.close() - this.form.reset() + private setModalQuery (type: 'add' | 'remove') { + const modal = type === 'add' + ? QuickSettingsModalComponent.QUERY_MODAL_NAME + : null + + this.router.navigate([], { queryParams: { modal }, queryParamsHandling: 'merge' }) } } -- cgit v1.2.3