diff --git a/shared/src/components/keymap/add/keymap-add.component.html b/shared/src/components/keymap/add/keymap-add.component.html index 58835af1..72b6a8d4 100644 --- a/shared/src/components/keymap/add/keymap-add.component.html +++ b/shared/src/components/keymap/add/keymap-add.component.html @@ -10,11 +10,11 @@
- {{ presets.length }} / {{ (presetsAll$ | async).length }} keymaps shown + {{ (presets$ | async).length }} / {{ (presetsAll$ | async).length }} keymaps shown
-
+

{{ keymap.name }}

{{ keymap.description }} @@ -30,6 +30,6 @@

-
+
Sorry, no keyboard found under this search query.
\ No newline at end of file diff --git a/shared/src/components/keymap/add/keymap-add.component.ts b/shared/src/components/keymap/add/keymap-add.component.ts index 2f076ab7..1e92bccd 100644 --- a/shared/src/components/keymap/add/keymap-add.component.ts +++ b/shared/src/components/keymap/add/keymap-add.component.ts @@ -1,10 +1,10 @@ -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { Store } from '@ngrx/store'; -import 'rxjs/add/operator/combineLatest'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; import { Observable } from 'rxjs/Observable'; -import { Subscription } from 'rxjs/Subscription'; +import 'rxjs/add/operator/combineLatest'; +import 'rxjs/add/operator/publishReplay'; import { Keymap } from '../../../config-serializer/config-items/Keymap'; import { AppState } from '../../../store'; @@ -18,26 +18,21 @@ import { KeymapActions } from '../../../store/actions'; 'class': 'container-fluid' } }) -export class KeymapAddComponent implements OnDestroy { - private presets: Keymap[]; +export class KeymapAddComponent { + presets$: Observable; private presetsAll$: Observable; private filterExpression$: BehaviorSubject; - private subscription: Subscription; constructor(private store: Store) { this.presetsAll$ = store.select((appState: AppState) => appState.presetKeymaps); this.filterExpression$ = new BehaviorSubject(''); - this.subscription = this.presetsAll$.combineLatest( - this.filterExpression$, - (keymaps: Keymap[], filterExpression: string) => { + this.presets$ = this.presetsAll$ + .combineLatest(this.filterExpression$, (keymaps: Keymap[], filterExpression: string) => { return keymaps.filter((keymap: Keymap) => keymap.name.toLocaleLowerCase().includes(filterExpression)); - } - ).subscribe(keymaps => this.presets = keymaps); - } - - ngOnDestroy() { - this.subscription.unsubscribe(); + }) + .publishReplay(1) + .refCount(); } filterKeyboards(filterExpression: string) {