You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
380 lines
8.0 KiB
380 lines
8.0 KiB
4 years ago
|
import * as actionConstants from '../../store/actionConstants';
|
||
9 years ago
|
|
||
5 years ago
|
// actionConstants
|
||
4 years ago
|
const SET_THREEBOX_LAST_UPDATED = 'metamask/app/SET_THREEBOX_LAST_UPDATED';
|
||
9 years ago
|
|
||
4 years ago
|
export default function reduceApp(state = {}, action) {
|
||
8 years ago
|
// default state
|
||
4 years ago
|
const appState = {
|
||
8 years ago
|
shouldClose: false,
|
||
9 years ago
|
menuOpen: false,
|
||
7 years ago
|
modal: {
|
||
|
open: false,
|
||
|
modalState: {
|
||
|
name: null,
|
||
7 years ago
|
props: {},
|
||
7 years ago
|
},
|
||
7 years ago
|
previousModalState: {
|
||
|
name: null,
|
||
7 years ago
|
},
|
||
7 years ago
|
},
|
||
6 years ago
|
sidebar: {
|
||
|
isOpen: false,
|
||
|
transitionName: '',
|
||
|
type: '',
|
||
6 years ago
|
props: {},
|
||
6 years ago
|
},
|
||
6 years ago
|
alertOpen: false,
|
||
|
alertMessage: null,
|
||
6 years ago
|
qrCodeData: null,
|
||
7 years ago
|
networkDropdownOpen: false,
|
||
9 years ago
|
accountDetail: {
|
||
|
subview: 'transactions',
|
||
|
},
|
||
7 years ago
|
// Used to display loading indicator
|
||
|
isLoading: false,
|
||
|
// Used to display error text
|
||
|
warning: null,
|
||
7 years ago
|
buyView: {},
|
||
7 years ago
|
isMouseUser: false,
|
||
7 years ago
|
gasIsLoading: false,
|
||
6 years ago
|
defaultHdPaths: {
|
||
|
trezor: `m/44'/60'/0'/0`,
|
||
6 years ago
|
ledger: `m/44'/60'/0'/0/0`,
|
||
6 years ago
|
},
|
||
6 years ago
|
networksTabSelectedRpcUrl: '',
|
||
|
networksTabIsInAddMode: false,
|
||
6 years ago
|
loadingMethodData: false,
|
||
5 years ago
|
show3BoxModalAfterImport: false,
|
||
|
threeBoxLastUpdated: null,
|
||
5 years ago
|
requestAccountTabs: {},
|
||
|
openMetaMaskTabs: {},
|
||
|
currentWindowTab: {},
|
||
4 years ago
|
showWhatsNewPopup: true,
|
||
4 years ago
|
...state,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
|
switch (action.type) {
|
||
7 years ago
|
// dropdown methods
|
||
5 years ago
|
case actionConstants.NETWORK_DROPDOWN_OPEN:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
networkDropdownOpen: true,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.NETWORK_DROPDOWN_CLOSE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
networkDropdownOpen: false,
|
||
4 years ago
|
};
|
||
7 years ago
|
|
||
7 years ago
|
// sidebar methods
|
||
5 years ago
|
case actionConstants.SIDEBAR_OPEN:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
sidebar: {
|
||
|
...action.value,
|
||
|
isOpen: true,
|
||
|
},
|
||
4 years ago
|
};
|
||
7 years ago
|
|
||
5 years ago
|
case actionConstants.SIDEBAR_CLOSE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
sidebar: {
|
||
|
...appState.sidebar,
|
||
|
isOpen: false,
|
||
|
},
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
6 years ago
|
// alert methods
|
||
5 years ago
|
case actionConstants.ALERT_OPEN:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
alertOpen: true,
|
||
|
alertMessage: action.value,
|
||
4 years ago
|
};
|
||
6 years ago
|
|
||
5 years ago
|
case actionConstants.ALERT_CLOSE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
alertOpen: false,
|
||
|
alertMessage: null,
|
||
4 years ago
|
};
|
||
6 years ago
|
|
||
6 years ago
|
// qr scanner methods
|
||
5 years ago
|
case actionConstants.QR_CODE_DETECTED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
qrCodeData: action.value,
|
||
4 years ago
|
};
|
||
6 years ago
|
|
||
7 years ago
|
// modal methods:
|
||
4 years ago
|
case actionConstants.MODAL_OPEN: {
|
||
4 years ago
|
const { name, ...modalProps } = action.payload;
|
||
7 years ago
|
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
modal: {
|
||
|
open: true,
|
||
|
modalState: {
|
||
4 years ago
|
name,
|
||
7 years ago
|
props: { ...modalProps },
|
||
|
},
|
||
|
previousModalState: { ...appState.modal.modalState },
|
||
|
},
|
||
4 years ago
|
};
|
||
4 years ago
|
}
|
||
7 years ago
|
|
||
5 years ago
|
case actionConstants.MODAL_CLOSE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
modal: Object.assign(
|
||
5 years ago
|
appState.modal,
|
||
7 years ago
|
{ open: false },
|
||
7 years ago
|
{ modalState: { name: null, props: {} } },
|
||
5 years ago
|
{ previousModalState: appState.modal.modalState },
|
||
7 years ago
|
),
|
||
4 years ago
|
};
|
||
8 years ago
|
|
||
4 years ago
|
case actionConstants.CLEAR_ACCOUNT_DETAILS:
|
||
|
return {
|
||
|
...appState,
|
||
|
accountDetail: {},
|
||
4 years ago
|
};
|
||
4 years ago
|
|
||
5 years ago
|
case actionConstants.FORGOT_PASSWORD:
|
||
5 years ago
|
return {
|
||
5 years ago
|
...appState,
|
||
7 years ago
|
forgottenPassword: action.value,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.SHOW_SEND_TOKEN_PAGE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
warning: null,
|
||
4 years ago
|
};
|
||
7 years ago
|
|
||
5 years ago
|
case actionConstants.LOCK_METAMASK:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
warning: null,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
4 years ago
|
// accounts
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.GO_HOME:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
accountDetail: {
|
||
|
subview: 'transactions',
|
||
|
accountExport: 'none',
|
||
|
privateKey: '',
|
||
|
},
|
||
9 years ago
|
warning: null,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.SHOW_ACCOUNT_DETAIL:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
4 years ago
|
forgottenPassword: appState.forgottenPassword
|
||
|
? !appState.forgottenPassword
|
||
|
: null,
|
||
9 years ago
|
accountDetail: {
|
||
|
subview: 'transactions',
|
||
9 years ago
|
accountExport: 'none',
|
||
|
privateKey: '',
|
||
9 years ago
|
},
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.SHOW_ACCOUNTS_PAGE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
isLoading: false,
|
||
9 years ago
|
warning: null,
|
||
9 years ago
|
scrollToBottom: false,
|
||
8 years ago
|
forgottenPassword: false,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.SHOW_CONF_TX_PAGE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
5 years ago
|
txId: action.id,
|
||
9 years ago
|
warning: null,
|
||
8 years ago
|
isLoading: false,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.COMPLETED_TX:
|
||
5 years ago
|
if (action.value.unconfirmedActionsCount > 0) {
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
5 years ago
|
txId: null,
|
||
7 years ago
|
warning: null,
|
||
4 years ago
|
};
|
||
4 years ago
|
}
|
||
|
return {
|
||
|
...appState,
|
||
|
// indicate notification should close
|
||
|
shouldClose: true,
|
||
|
warning: null,
|
||
|
txId: null,
|
||
|
accountDetail: {
|
||
|
subview: 'transactions',
|
||
|
},
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.TRANSACTION_ERROR:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.UNLOCK_FAILED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
8 years ago
|
warning: action.value || 'Incorrect password. Try again.',
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.UNLOCK_SUCCEEDED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
warning: '',
|
||
4 years ago
|
};
|
||
7 years ago
|
|
||
4 years ago
|
case actionConstants.SET_HARDWARE_WALLET_DEFAULT_HD_PATH: {
|
||
4 years ago
|
const { device, path } = action.value;
|
||
|
const newDefaults = { ...appState.defaultHdPaths };
|
||
|
newDefaults[device] = path;
|
||
6 years ago
|
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
defaultHdPaths: newDefaults,
|
||
4 years ago
|
};
|
||
4 years ago
|
}
|
||
6 years ago
|
|
||
5 years ago
|
case actionConstants.SHOW_LOADING:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
isLoading: true,
|
||
8 years ago
|
loadingMessage: action.value,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.HIDE_LOADING:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
isLoading: false,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.DISPLAY_WARNING:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
warning: action.value,
|
||
8 years ago
|
isLoading: false,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.HIDE_WARNING:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
warning: undefined,
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.SHOW_PRIVATE_KEY:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
9 years ago
|
accountDetail: {
|
||
|
subview: 'export',
|
||
|
accountExport: 'completed',
|
||
|
privateKey: action.value,
|
||
|
},
|
||
4 years ago
|
};
|
||
9 years ago
|
|
||
5 years ago
|
case actionConstants.SET_MOUSE_USER_STATE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
isMouseUser: action.value,
|
||
4 years ago
|
};
|
||
7 years ago
|
|
||
5 years ago
|
case actionConstants.GAS_LOADING_STARTED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
gasIsLoading: true,
|
||
4 years ago
|
};
|
||
7 years ago
|
|
||
5 years ago
|
case actionConstants.GAS_LOADING_FINISHED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
7 years ago
|
gasIsLoading: false,
|
||
4 years ago
|
};
|
||
7 years ago
|
|
||
5 years ago
|
case actionConstants.SET_SELECTED_SETTINGS_RPC_URL:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
networksTabSelectedRpcUrl: action.value,
|
||
4 years ago
|
};
|
||
6 years ago
|
|
||
5 years ago
|
case actionConstants.SET_NETWORKS_TAB_ADD_MODE:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
networksTabIsInAddMode: action.value,
|
||
4 years ago
|
};
|
||
6 years ago
|
|
||
5 years ago
|
case actionConstants.LOADING_METHOD_DATA_STARTED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
loadingMethodData: true,
|
||
4 years ago
|
};
|
||
6 years ago
|
|
||
5 years ago
|
case actionConstants.LOADING_METHOD_DATA_FINISHED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
6 years ago
|
loadingMethodData: false,
|
||
4 years ago
|
};
|
||
6 years ago
|
|
||
5 years ago
|
case SET_THREEBOX_LAST_UPDATED:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
5 years ago
|
threeBoxLastUpdated: action.value,
|
||
4 years ago
|
};
|
||
5 years ago
|
|
||
5 years ago
|
case actionConstants.SET_REQUEST_ACCOUNT_TABS:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
5 years ago
|
requestAccountTabs: action.value,
|
||
4 years ago
|
};
|
||
5 years ago
|
|
||
5 years ago
|
case actionConstants.SET_OPEN_METAMASK_TAB_IDS:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
5 years ago
|
openMetaMaskTabs: action.value,
|
||
4 years ago
|
};
|
||
5 years ago
|
|
||
5 years ago
|
case actionConstants.SET_CURRENT_WINDOW_TAB:
|
||
5 years ago
|
return {
|
||
|
...appState,
|
||
5 years ago
|
currentWindowTab: action.value,
|
||
4 years ago
|
};
|
||
5 years ago
|
|
||
4 years ago
|
case actionConstants.HIDE_WHATS_NEW_POPUP:
|
||
|
return {
|
||
|
...appState,
|
||
|
showWhatsNewPopup: false,
|
||
|
};
|
||
|
|
||
8 years ago
|
default:
|
||
4 years ago
|
return appState;
|
||
9 years ago
|
}
|
||
|
}
|
||
9 years ago
|
|
||
5 years ago
|
// Action Creators
|
||
4 years ago
|
export function setThreeBoxLastUpdated(lastUpdated) {
|
||
5 years ago
|
return {
|
||
|
type: SET_THREEBOX_LAST_UPDATED,
|
||
|
value: lastUpdated,
|
||
4 years ago
|
};
|
||
5 years ago
|
}
|
||
4 years ago
|
|
||
|
export function hideWhatsNewPopup() {
|
||
|
return {
|
||
|
type: actionConstants.HIDE_WHATS_NEW_POPUP,
|
||
|
};
|
||
|
}
|