Skip to content

Commit 2fe92ca

Browse files
committed
fix(view): duplicate of colors and buckets on page revisits
1 parent d90ca9f commit 2fe92ca

File tree

7 files changed

+33
-6
lines changed

7 files changed

+33
-6
lines changed

src/app/pages/home/home.component.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { Component, OnInit, OnDestroy } from '@angular/core';
22
import { BoardService } from '../../services/board.service';
33
import { Store } from '@ngxs/store';
44
import { LoadBoard } from '../../store/actions/board.actions';
55
import { filter, map } from 'rxjs/operators';
66
import { InkBoard, InkBoardMeta } from '../../models';
77
import { LocalDatabase } from '../../services/localdb.service';
8+
import { ClearBuckets } from '../../store/actions/bucket.action';
9+
import { ClearInkColors } from '../../store/actions/ink.action';
810

911
@Component({
1012
selector: 'inkapp-home-page',
1113
templateUrl: './home.component.html',
1214
styles: []
1315
})
14-
export class HomePage implements OnInit {
16+
export class HomePage implements OnInit, OnDestroy {
1517
boards: InkBoardMeta[];
1618
constructor(private _boardService: BoardService, private _store: Store, private _localDatabase: LocalDatabase) {}
1719

@@ -31,4 +33,9 @@ export class HomePage implements OnInit {
3133
console.log('got settings collection,', col);
3234
});
3335
}
36+
37+
ngOnDestroy() {
38+
this._store.dispatch(new ClearBuckets());
39+
this._store.dispatch(new ClearInkColors());
40+
}
3441
}

src/app/pages/settings/settings.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ <h5>Colors view</h5>
99
</div>
1010
<div class="action">
1111
<select name="" class="custom-select" (change)="onViewChange($event.target.value)">
12-
<option value="default">Default</option>
13-
<option value="thin">Thin</option>
12+
<option value="default" [selected]="view.value=='default'">Default</option>
13+
<option value="thin" [selected]="view.value=='thin'">Thin</option>
1414
</select>
1515
</div>
1616
</inkapp-settings-item>

src/app/pages/settings/settings.component.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import { LocalDatabase } from '../../services/localdb.service';
33
import { SettingsService } from '../../services/settings.service';
44
import { Store } from '@ngxs/store';
55
import { UpdateSettings, LoadSettings } from '../../store/actions/settings.action';
6+
import { InkAppSettings, InkAppSettingsItem } from '../../models';
67

78
@Component({
89
selector: 'inkapp-settings-page',
910
templateUrl: './settings.component.html',
1011
styles: []
1112
})
1213
export class SettingsPage implements OnInit {
14+
view: InkAppSettingsItem;
1315
constructor(
1416
private _store: Store,
1517
private _localDatabase: LocalDatabase,
@@ -18,6 +20,7 @@ export class SettingsPage implements OnInit {
1820

1921
ngOnInit() {
2022
this._settingsService.getAll().then(doc => {
23+
this.view = doc.filter(d => d.key === 'view')[0];
2124
this._store.dispatch(new LoadSettings(doc));
2225
});
2326
}

src/app/store/actions/bucket.action.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,8 @@ export class RenameBucket {
1818
static readonly type = '[Bucket] Change name';
1919
constructor(public id: string, public name: string) {}
2020
}
21+
22+
export class ClearBuckets {
23+
static readonly type = '[Bucket] clear all';
24+
constructor() {}
25+
}

src/app/store/actions/ink.action.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,7 @@ export class LoadInkColorsInBucket {
1414
static readonly type = '[Ink] get colors in bucket';
1515
constructor(public colors: InkColorMeta[]) {}
1616
}
17+
export class ClearInkColors {
18+
static readonly type = '[Ink] clear all';
19+
constructor() {}
20+
}

src/app/store/states/bucket.state.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { State, Action, StateContext } from '@ngxs/store';
22
import { InkAppSettings, InkBucket } from '../../models';
3-
import { CreateBucket, UpdateBucket, LoadBuckets, RenameBucket } from '../actions/bucket.action';
3+
import { CreateBucket, UpdateBucket, LoadBuckets, RenameBucket, ClearBuckets } from '../actions/bucket.action';
44
import { DBService } from '../../services/db.service';
55
import { LoadInitialData } from '../actions/general.action';
66
import { UtilService } from '../../services/util.service';
@@ -42,4 +42,8 @@ export class BucketState {
4242
state.filter(b => b._id === action.id).map(b => (b.name = action.name));
4343
ctx.setState([...state]);
4444
}
45+
@Action(ClearBuckets)
46+
clearBuckets(ctx: StateContext<InkBucket>, action: ClearBuckets) {
47+
ctx.setState([]);
48+
}
4549
}

src/app/store/states/ink.state.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { State, Action, StateContext } from '@ngxs/store';
22
import { Ink } from '../../models';
3-
import { UpdateInkColor, AddInkColor, LoadInkColorsInBucket } from '../actions/ink.action';
3+
import { UpdateInkColor, AddInkColor, LoadInkColorsInBucket, ClearInkColors } from '../actions/ink.action';
44
import { LoadInitialData } from '../actions/general.action';
55
import { DBService } from '../../services/db.service';
66
import { UtilService } from '../../services/util.service';
@@ -34,4 +34,8 @@ export class InkState {
3434
const state: any = ctx.getState();
3535
ctx.setState([...state, ...action.colors]);
3636
}
37+
@Action(ClearInkColors)
38+
clearBuckets(ctx: StateContext<Ink>, action: ClearInkColors) {
39+
ctx.setState([]);
40+
}
3741
}

0 commit comments

Comments
 (0)