keep account selection in state management

This commit is contained in:
Nicolas Constant 2018-09-21 00:42:48 -04:00
parent 1c16425bb0
commit f9eaeb8904
No known key found for this signature in database
GPG Key ID: 1E9F677FB01A5688
1 changed files with 23 additions and 1 deletions

View File

@ -6,11 +6,15 @@ export class AddAccount {
constructor(public account: AccountInfo) {}
}
export class SelectAccount {
static readonly type = '[Accounts] Select account';
constructor(public account: AccountInfo, public multiselection: boolean = false) {}
}
export interface AccountsStateModel {
accounts: AccountInfo[];
}
@State<AccountsStateModel>({
name: 'registeredaccounts',
defaults: {
@ -25,10 +29,28 @@ export class AccountsState {
accounts: [...state.accounts, action.account]
});
}
@Action(SelectAccount)
SelectAccount(ctx: StateContext<AccountsStateModel>, action: SelectAccount){
const state = ctx.getState();
const multiSelection = action.multiselection;
const selectedAccount = action.account;
const accounts = [...state.accounts];
if(!multiSelection) {
accounts.forEach(x => x.isSelected = false);
}
const acc = accounts.find(x => x.username === selectedAccount.username && x.instance === selectedAccount.instance);
acc.isSelected = !acc.isSelected;
ctx.patchState({
accounts: accounts
});
}
}
export class AccountInfo {
username: string;
instance: string;
token: TokenData;
isSelected: boolean;
}