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) {