1
0
mirror of https://github.com/trezor/trezor-wallet synced 2024-11-24 09:18:09 +00:00

rename selectedAccount.visible to shouldRender

This commit is contained in:
Szymon Lesisz 2018-09-26 19:35:36 +02:00
parent 61d9713b0b
commit f0e0b4fee2
5 changed files with 27 additions and 54 deletions

View File

@ -22,10 +22,10 @@ export type SelectedAccountAction = {
};
type AccountStatus = {
type: string;
title: string;
message?: string;
visible: boolean;
type: string; // notification type
title: string; // notification title
message?: string; // notification message
shouldRender: boolean; // should render account page
}
export const dispose = (): Action => ({
@ -38,7 +38,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'info',
title: 'Loading device...',
visible: false,
shouldRender: false,
};
}
@ -53,7 +53,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'info',
title: 'Loading account state...',
visible: false,
shouldRender: false,
};
}
@ -62,7 +62,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'backend',
title: 'Backend is not connected',
visible: false,
shouldRender: false,
};
}
@ -75,7 +75,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'info',
title: 'Loading accounts...',
visible: false,
shouldRender: false,
};
}
// case 2: device is unavailable (created with different passphrase settings) account cannot be accessed
@ -83,7 +83,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
type: 'info',
title: `Device ${device.instanceLabel} is unavailable`,
message: 'Change passphrase settings to use this device',
visible: false,
shouldRender: false,
};
}
@ -92,7 +92,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
type: 'info',
title: `Device ${device.instanceLabel} is disconnected`,
message: 'Connect device to load accounts',
visible: false,
shouldRender: false,
};
}
@ -101,7 +101,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'warning',
title: 'Account does not exist',
visible: false,
shouldRender: false,
};
}
@ -109,7 +109,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'info',
title: 'Loading accounts...',
visible: false,
shouldRender: false,
};
}
@ -118,7 +118,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'info',
title: `Device ${device.instanceLabel} is disconnected`,
visible: true,
shouldRender: true,
};
}
if (!device.available) {
@ -126,7 +126,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
type: 'info',
title: `Device ${device.instanceLabel} is unavailable`,
message: 'Change passphrase settings to use this device',
visible: true,
shouldRender: true,
};
}
@ -135,7 +135,7 @@ const getAccountStatus = (state: State, selectedAccount: SelectedAccountState):
return {
type: 'info',
title: 'Loading accounts...',
visible: true,
shouldRender: true,
};
}
@ -178,50 +178,21 @@ export const observe = (prevState: State, action: Action): AsyncAction => async
tokens,
pending,
notification: null,
visible: false,
shouldRender: false,
};
// get "selectedAccount" status from newState
const status = getAccountStatus(state, newState);
newState.notification = status || null;
newState.visible = status ? status.visible : true;
newState.shouldRender = status ? status.shouldRender : true;
// check if newState is different than previous state
const stateChanged = reducerUtils.observeChanges(prevState.selectedAccount, newState, ['location', 'account', 'network', 'discovery', 'tokens', 'pending', 'status', 'visible']);
const stateChanged = reducerUtils.observeChanges(prevState.selectedAccount, newState, ['location', 'account', 'network', 'discovery', 'tokens', 'pending', 'notification', 'shouldRender']);
if (stateChanged) {
// update values in reducer
dispatch({
type: ACCOUNT.UPDATE_SELECTED_ACCOUNT,
payload: newState,
});
// TODO: move this to send account actions
/*
if (location.state.send) {
const rejectedTxs = pending.filter(tx => tx.rejected);
rejectedTxs.forEach((tx) => {
dispatch({
type: NOTIFICATION.ADD,
payload: {
type: 'warning',
title: 'Pending transaction rejected',
message: `Transaction with id: ${tx.id} not found.`,
cancelable: true,
actions: [
{
label: 'OK',
callback: () => {
dispatch({
type: PENDING.TX_RESOLVED,
tx,
});
},
},
],
},
});
});
}
*/
}
};

View File

@ -22,7 +22,7 @@ export type State = {
title: string,
message?: string,
},
visible: boolean,
shouldRender: boolean,
};
export const initialState: State = {
@ -33,7 +33,7 @@ export const initialState: State = {
pending: [],
discovery: null,
notification: null,
visible: false,
shouldRender: false,
};
export default (state: State = initialState, action: Action): State => {

View File

@ -133,9 +133,10 @@ const AccountReceive = (props: Props) => {
const {
account,
discovery,
shouldRender,
} = props.selectedAccount;
if (!device || !account || !discovery) return null;
if (!device || !account || !discovery || !shouldRender) return null;
const {
addressVerified,

View File

@ -190,6 +190,7 @@ const AccountSend = (props: Props) => {
network,
discovery,
tokens,
shouldRender,
} = props.selectedAccount;
const {
address,
@ -218,6 +219,8 @@ const AccountSend = (props: Props) => {
onSend,
} = props.sendFormActions;
if (!device || !account || !discovery || !network || !shouldRender) return null;
const isCurrentCurrencyToken = networkSymbol !== currency;
let selectedTokenBalance = 0;
@ -226,8 +229,6 @@ const AccountSend = (props: Props) => {
selectedTokenBalance = selectedToken.balance;
}
if (!device || !account || !discovery || !network) return null;
let isSendButtonDisabled: boolean = Object.keys(errors).length > 0 || total === '0' || amount.length === 0 || address.length === 0 || sending;
let sendButtonText: string = 'Send';
if (networkSymbol !== currency && amount.length > 0 && !errors.amount) {

View File

@ -64,11 +64,11 @@ const AccountSummary = (props: Props) => {
network,
tokens,
pending,
visible,
shouldRender,
} = props.selectedAccount;
// flow
if (!device || !account || !network || !visible) return null;
if (!device || !account || !network || !shouldRender) return null;
const explorerLink: string = `${network.explorer.address}${account.address}`;
const pendingAmount: BigNumber = stateUtils.getPendingAmount(pending, network.symbol);