mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Delete uneeded files from old-ui.
This commit is contained in:
parent
8defb365b4
commit
800eb2b969
File diff suppressed because it is too large
Load Diff
@ -1,76 +0,0 @@
|
|||||||
const extend = require('xtend')
|
|
||||||
const copyToClipboard = require('copy-to-clipboard')
|
|
||||||
|
|
||||||
//
|
|
||||||
// Sub-Reducers take in the complete state and return their sub-state
|
|
||||||
//
|
|
||||||
const reduceIdentities = require('./reducers/identities')
|
|
||||||
const reduceMetamask = require('./reducers/metamask')
|
|
||||||
const reduceApp = require('./reducers/app')
|
|
||||||
|
|
||||||
window.METAMASK_CACHED_LOG_STATE = null
|
|
||||||
|
|
||||||
module.exports = rootReducer
|
|
||||||
|
|
||||||
function rootReducer (state, action) {
|
|
||||||
// clone
|
|
||||||
state = extend(state)
|
|
||||||
|
|
||||||
if (action.type === 'GLOBAL_FORCE_UPDATE') {
|
|
||||||
return action.value
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Identities
|
|
||||||
//
|
|
||||||
|
|
||||||
state.identities = reduceIdentities(state, action)
|
|
||||||
|
|
||||||
//
|
|
||||||
// MetaMask
|
|
||||||
//
|
|
||||||
|
|
||||||
state.metamask = reduceMetamask(state, action)
|
|
||||||
|
|
||||||
//
|
|
||||||
// AppState
|
|
||||||
//
|
|
||||||
|
|
||||||
state.appState = reduceApp(state, action)
|
|
||||||
|
|
||||||
window.METAMASK_CACHED_LOG_STATE = state
|
|
||||||
return state
|
|
||||||
}
|
|
||||||
|
|
||||||
window.logStateString = function (cb) {
|
|
||||||
const state = window.METAMASK_CACHED_LOG_STATE
|
|
||||||
const version = global.platform.getVersion()
|
|
||||||
const browser = window.navigator.userAgent
|
|
||||||
return global.platform.getPlatformInfo((err, platform) => {
|
|
||||||
if (err) {
|
|
||||||
return cb(err)
|
|
||||||
}
|
|
||||||
state.version = version
|
|
||||||
state.platform = platform
|
|
||||||
state.browser = browser
|
|
||||||
const stateString = JSON.stringify(state, removeSeedWords, 2)
|
|
||||||
return cb(null, stateString)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
window.logState = function (toClipboard) {
|
|
||||||
return window.logStateString((err, result) => {
|
|
||||||
if (err) {
|
|
||||||
console.error(err.message)
|
|
||||||
} else if (toClipboard) {
|
|
||||||
copyToClipboard(result)
|
|
||||||
console.log('State log copied')
|
|
||||||
} else {
|
|
||||||
console.log(result)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeSeedWords (key, value) {
|
|
||||||
return key === 'seedWords' ? undefined : value
|
|
||||||
}
|
|
@ -1,599 +0,0 @@
|
|||||||
const extend = require('xtend')
|
|
||||||
const actions = require('../../../ui/app/actions')
|
|
||||||
const txHelper = require('../../lib/tx-helper')
|
|
||||||
|
|
||||||
module.exports = reduceApp
|
|
||||||
|
|
||||||
|
|
||||||
function reduceApp (state, action) {
|
|
||||||
log.debug('App Reducer got ' + action.type)
|
|
||||||
// clone and defaults
|
|
||||||
const selectedAddress = state.metamask.selectedAddress
|
|
||||||
const hasUnconfActions = checkUnconfActions(state)
|
|
||||||
let name = 'accounts'
|
|
||||||
if (selectedAddress) {
|
|
||||||
name = 'accountDetail'
|
|
||||||
}
|
|
||||||
if (hasUnconfActions) {
|
|
||||||
log.debug('pending txs detected, defaulting to conf-tx view.')
|
|
||||||
name = 'confTx'
|
|
||||||
}
|
|
||||||
|
|
||||||
var defaultView = {
|
|
||||||
name,
|
|
||||||
detailView: null,
|
|
||||||
context: selectedAddress,
|
|
||||||
}
|
|
||||||
|
|
||||||
// confirm seed words
|
|
||||||
var seedWords = state.metamask.seedWords
|
|
||||||
var seedConfView = {
|
|
||||||
name: 'createVaultComplete',
|
|
||||||
seedWords,
|
|
||||||
}
|
|
||||||
|
|
||||||
// default state
|
|
||||||
var appState = extend({
|
|
||||||
shouldClose: false,
|
|
||||||
menuOpen: false,
|
|
||||||
currentView: seedWords ? seedConfView : defaultView,
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'transactions',
|
|
||||||
},
|
|
||||||
// Used to render transition direction
|
|
||||||
transForward: true,
|
|
||||||
// Used to display loading indicator
|
|
||||||
isLoading: false,
|
|
||||||
// Used to display error text
|
|
||||||
warning: null,
|
|
||||||
}, state.appState)
|
|
||||||
|
|
||||||
switch (action.type) {
|
|
||||||
|
|
||||||
// transition methods
|
|
||||||
|
|
||||||
case actions.TRANSITION_FORWARD:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.TRANSITION_BACKWARD:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
// intialize
|
|
||||||
|
|
||||||
case actions.SHOW_CREATE_VAULT:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'createVault',
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_RESTORE_VAULT:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'restoreVault',
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
forgottenPassword: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.FORGOT_PASSWORD:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'restoreVault',
|
|
||||||
},
|
|
||||||
transForward: false,
|
|
||||||
forgottenPassword: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_INIT_MENU:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: defaultView,
|
|
||||||
transForward: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_CONFIG_PAGE:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'config',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
transForward: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_ADD_TOKEN_PAGE:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'add-token',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
transForward: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_IMPORT_PAGE:
|
|
||||||
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'import-menu',
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_INFO_PAGE:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'info',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.CREATE_NEW_VAULT_IN_PROGRESS:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'createVault',
|
|
||||||
inProgress: true,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
isLoading: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_NEW_VAULT_SEED:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'createVaultComplete',
|
|
||||||
seedWords: action.value,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
isLoading: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.NEW_ACCOUNT_SCREEN:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'new-account',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_SEND_PAGE:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'sendTransaction',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_NEW_KEYCHAIN:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'newKeychain',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
// unlock
|
|
||||||
|
|
||||||
case actions.UNLOCK_METAMASK:
|
|
||||||
return extend(appState, {
|
|
||||||
forgottenPassword: appState.forgottenPassword ? !appState.forgottenPassword : null,
|
|
||||||
detailView: {},
|
|
||||||
transForward: true,
|
|
||||||
isLoading: false,
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.LOCK_METAMASK:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: defaultView,
|
|
||||||
transForward: false,
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.BACK_TO_INIT_MENU:
|
|
||||||
return extend(appState, {
|
|
||||||
warning: null,
|
|
||||||
transForward: false,
|
|
||||||
forgottenPassword: true,
|
|
||||||
currentView: {
|
|
||||||
name: 'InitMenu',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.BACK_TO_UNLOCK_VIEW:
|
|
||||||
return extend(appState, {
|
|
||||||
warning: null,
|
|
||||||
transForward: true,
|
|
||||||
forgottenPassword: false,
|
|
||||||
currentView: {
|
|
||||||
name: 'UnlockScreen',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
// reveal seed words
|
|
||||||
|
|
||||||
case actions.REVEAL_SEED_CONFIRMATION:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'reveal-seed-conf',
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
|
|
||||||
// accounts
|
|
||||||
|
|
||||||
case actions.SET_SELECTED_ACCOUNT:
|
|
||||||
return extend(appState, {
|
|
||||||
activeAddress: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.GO_HOME:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: extend(appState.currentView, {
|
|
||||||
name: 'accountDetail',
|
|
||||||
}),
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'transactions',
|
|
||||||
accountExport: 'none',
|
|
||||||
privateKey: '',
|
|
||||||
},
|
|
||||||
transForward: false,
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_ACCOUNT_DETAIL:
|
|
||||||
return extend(appState, {
|
|
||||||
forgottenPassword: appState.forgottenPassword ? !appState.forgottenPassword : null,
|
|
||||||
currentView: {
|
|
||||||
name: 'accountDetail',
|
|
||||||
context: action.value,
|
|
||||||
},
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'transactions',
|
|
||||||
accountExport: 'none',
|
|
||||||
privateKey: '',
|
|
||||||
},
|
|
||||||
transForward: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.BACK_TO_ACCOUNT_DETAIL:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'accountDetail',
|
|
||||||
context: action.value,
|
|
||||||
},
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'transactions',
|
|
||||||
accountExport: 'none',
|
|
||||||
privateKey: '',
|
|
||||||
},
|
|
||||||
transForward: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_ACCOUNTS_PAGE:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: seedWords ? 'createVaultComplete' : 'accounts',
|
|
||||||
seedWords,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
isLoading: false,
|
|
||||||
warning: null,
|
|
||||||
scrollToBottom: false,
|
|
||||||
forgottenPassword: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_NOTICE:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
isLoading: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.REVEAL_ACCOUNT:
|
|
||||||
return extend(appState, {
|
|
||||||
scrollToBottom: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_CONF_TX_PAGE:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'confTx',
|
|
||||||
context: 0,
|
|
||||||
},
|
|
||||||
transForward: action.transForward,
|
|
||||||
warning: null,
|
|
||||||
isLoading: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_CONF_MSG_PAGE:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: hasUnconfActions ? 'confTx' : 'account-detail',
|
|
||||||
context: 0,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
warning: null,
|
|
||||||
isLoading: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.COMPLETED_TX:
|
|
||||||
log.debug('reducing COMPLETED_TX for tx ' + action.value)
|
|
||||||
const otherUnconfActions = getUnconfActionList(state)
|
|
||||||
.filter(tx => tx.id !== action.value)
|
|
||||||
const hasOtherUnconfActions = otherUnconfActions.length > 0
|
|
||||||
|
|
||||||
if (hasOtherUnconfActions) {
|
|
||||||
log.debug('reducer detected txs - rendering confTx view')
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: false,
|
|
||||||
currentView: {
|
|
||||||
name: 'confTx',
|
|
||||||
context: 0,
|
|
||||||
},
|
|
||||||
warning: null,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
log.debug('attempting to close popup')
|
|
||||||
return extend(appState, {
|
|
||||||
// indicate notification should close
|
|
||||||
shouldClose: true,
|
|
||||||
transForward: false,
|
|
||||||
warning: null,
|
|
||||||
currentView: {
|
|
||||||
name: 'accountDetail',
|
|
||||||
context: state.metamask.selectedAddress,
|
|
||||||
},
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'transactions',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
case actions.NEXT_TX:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
currentView: {
|
|
||||||
name: 'confTx',
|
|
||||||
context: ++appState.currentView.context,
|
|
||||||
warning: null,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.VIEW_PENDING_TX:
|
|
||||||
const context = indexForPending(state, action.value)
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
currentView: {
|
|
||||||
name: 'confTx',
|
|
||||||
context,
|
|
||||||
warning: null,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.PREVIOUS_TX:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: false,
|
|
||||||
currentView: {
|
|
||||||
name: 'confTx',
|
|
||||||
context: --appState.currentView.context,
|
|
||||||
warning: null,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.TRANSACTION_ERROR:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'confTx',
|
|
||||||
errorMessage: 'There was a problem submitting this transaction.',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.UNLOCK_FAILED:
|
|
||||||
return extend(appState, {
|
|
||||||
warning: action.value || 'Incorrect password. Try again.',
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_LOADING:
|
|
||||||
return extend(appState, {
|
|
||||||
isLoading: true,
|
|
||||||
loadingMessage: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.HIDE_LOADING:
|
|
||||||
return extend(appState, {
|
|
||||||
isLoading: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_SUB_LOADING_INDICATION:
|
|
||||||
return extend(appState, {
|
|
||||||
isSubLoading: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.HIDE_SUB_LOADING_INDICATION:
|
|
||||||
return extend(appState, {
|
|
||||||
isSubLoading: false,
|
|
||||||
})
|
|
||||||
case actions.CLEAR_SEED_WORD_CACHE:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
currentView: {},
|
|
||||||
isLoading: false,
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'transactions',
|
|
||||||
accountExport: 'none',
|
|
||||||
privateKey: '',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.DISPLAY_WARNING:
|
|
||||||
return extend(appState, {
|
|
||||||
warning: action.value,
|
|
||||||
isLoading: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.HIDE_WARNING:
|
|
||||||
return extend(appState, {
|
|
||||||
warning: undefined,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.REQUEST_ACCOUNT_EXPORT:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
currentView: {
|
|
||||||
name: 'accountDetail',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'export',
|
|
||||||
accountExport: 'requested',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.EXPORT_ACCOUNT:
|
|
||||||
return extend(appState, {
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'export',
|
|
||||||
accountExport: 'completed',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_PRIVATE_KEY:
|
|
||||||
return extend(appState, {
|
|
||||||
accountDetail: {
|
|
||||||
subview: 'export',
|
|
||||||
accountExport: 'completed',
|
|
||||||
privateKey: action.value,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.BUY_ETH_VIEW:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
currentView: {
|
|
||||||
name: 'buyEth',
|
|
||||||
context: appState.currentView.name,
|
|
||||||
},
|
|
||||||
identity: state.metamask.identities[action.value],
|
|
||||||
buyView: {
|
|
||||||
subview: 'Coinbase',
|
|
||||||
amount: '15.00',
|
|
||||||
buyAddress: action.value,
|
|
||||||
formView: {
|
|
||||||
coinbase: true,
|
|
||||||
shapeshift: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.ONBOARDING_BUY_ETH_VIEW:
|
|
||||||
return extend(appState, {
|
|
||||||
transForward: true,
|
|
||||||
currentView: {
|
|
||||||
name: 'onboardingBuyEth',
|
|
||||||
context: appState.currentView.name,
|
|
||||||
},
|
|
||||||
identity: state.metamask.identities[action.value],
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.COINBASE_SUBVIEW:
|
|
||||||
return extend(appState, {
|
|
||||||
buyView: {
|
|
||||||
subview: 'Coinbase',
|
|
||||||
formView: {
|
|
||||||
coinbase: true,
|
|
||||||
shapeshift: false,
|
|
||||||
},
|
|
||||||
buyAddress: appState.buyView.buyAddress,
|
|
||||||
amount: appState.buyView.amount,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHAPESHIFT_SUBVIEW:
|
|
||||||
return extend(appState, {
|
|
||||||
buyView: {
|
|
||||||
subview: 'ShapeShift',
|
|
||||||
formView: {
|
|
||||||
coinbase: false,
|
|
||||||
shapeshift: true,
|
|
||||||
marketinfo: action.value.marketinfo,
|
|
||||||
coinOptions: action.value.coinOptions,
|
|
||||||
},
|
|
||||||
buyAddress: appState.buyView.buyAddress,
|
|
||||||
amount: appState.buyView.amount,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.PAIR_UPDATE:
|
|
||||||
return extend(appState, {
|
|
||||||
buyView: {
|
|
||||||
subview: 'ShapeShift',
|
|
||||||
formView: {
|
|
||||||
coinbase: false,
|
|
||||||
shapeshift: true,
|
|
||||||
marketinfo: action.value.marketinfo,
|
|
||||||
coinOptions: appState.buyView.formView.coinOptions,
|
|
||||||
},
|
|
||||||
buyAddress: appState.buyView.buyAddress,
|
|
||||||
amount: appState.buyView.amount,
|
|
||||||
warning: null,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_QR:
|
|
||||||
return extend(appState, {
|
|
||||||
qrRequested: true,
|
|
||||||
transForward: true,
|
|
||||||
|
|
||||||
Qr: {
|
|
||||||
message: action.value.message,
|
|
||||||
data: action.value.data,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHOW_QR_VIEW:
|
|
||||||
return extend(appState, {
|
|
||||||
currentView: {
|
|
||||||
name: 'qr',
|
|
||||||
context: appState.currentView.context,
|
|
||||||
},
|
|
||||||
transForward: true,
|
|
||||||
Qr: {
|
|
||||||
message: action.value.message,
|
|
||||||
data: action.value.data,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
default:
|
|
||||||
return appState
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkUnconfActions (state) {
|
|
||||||
const unconfActionList = getUnconfActionList(state)
|
|
||||||
const hasUnconfActions = unconfActionList.length > 0
|
|
||||||
return hasUnconfActions
|
|
||||||
}
|
|
||||||
|
|
||||||
function getUnconfActionList (state) {
|
|
||||||
const { unapprovedTxs, unapprovedMsgs,
|
|
||||||
unapprovedPersonalMsgs, unapprovedTypedMessages, network } = state.metamask
|
|
||||||
|
|
||||||
const unconfActionList = txHelper(unapprovedTxs, unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, network)
|
|
||||||
return unconfActionList
|
|
||||||
}
|
|
||||||
|
|
||||||
function indexForPending (state, txId) {
|
|
||||||
const unconfTxList = getUnconfActionList(state)
|
|
||||||
const match = unconfTxList.find((tx) => tx.id === txId)
|
|
||||||
const index = unconfTxList.indexOf(match)
|
|
||||||
return index
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
const extend = require('xtend')
|
|
||||||
|
|
||||||
module.exports = reduceIdentities
|
|
||||||
|
|
||||||
function reduceIdentities (state, action) {
|
|
||||||
// clone + defaults
|
|
||||||
var idState = extend({
|
|
||||||
|
|
||||||
}, state.identities)
|
|
||||||
|
|
||||||
switch (action.type) {
|
|
||||||
default:
|
|
||||||
return idState
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,166 +0,0 @@
|
|||||||
const extend = require('xtend')
|
|
||||||
const actions = require('../../../ui/app/actions')
|
|
||||||
const MetamascaraPlatform = require('../../../app/scripts/platforms/window')
|
|
||||||
|
|
||||||
module.exports = reduceMetamask
|
|
||||||
|
|
||||||
function reduceMetamask (state, action) {
|
|
||||||
let newState
|
|
||||||
|
|
||||||
// clone + defaults
|
|
||||||
var metamaskState = extend({
|
|
||||||
isInitialized: false,
|
|
||||||
isUnlocked: false,
|
|
||||||
isMascara: window.platform instanceof MetamascaraPlatform,
|
|
||||||
rpcTarget: 'https://rawtestrpc.metamask.io/',
|
|
||||||
identities: {},
|
|
||||||
unapprovedTxs: {},
|
|
||||||
noActiveNotices: true,
|
|
||||||
lastUnreadNotice: undefined,
|
|
||||||
frequentRpcList: [],
|
|
||||||
addressBook: [],
|
|
||||||
tokenExchangeRates: {},
|
|
||||||
coinOptions: {},
|
|
||||||
featureFlags: {},
|
|
||||||
}, state.metamask)
|
|
||||||
|
|
||||||
switch (action.type) {
|
|
||||||
|
|
||||||
case actions.SHOW_ACCOUNTS_PAGE:
|
|
||||||
newState = extend(metamaskState)
|
|
||||||
delete newState.seedWords
|
|
||||||
return newState
|
|
||||||
|
|
||||||
case actions.SHOW_NOTICE:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
noActiveNotices: false,
|
|
||||||
lastUnreadNotice: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.CLEAR_NOTICES:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
noActiveNotices: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.UPDATE_METAMASK_STATE:
|
|
||||||
return extend(metamaskState, action.value)
|
|
||||||
|
|
||||||
case actions.UNLOCK_METAMASK:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
isUnlocked: true,
|
|
||||||
isInitialized: true,
|
|
||||||
selectedAddress: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.LOCK_METAMASK:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
isUnlocked: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SET_RPC_LIST:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
frequentRpcList: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SET_RPC_TARGET:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
provider: {
|
|
||||||
type: 'rpc',
|
|
||||||
rpcTarget: action.value,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SET_PROVIDER_TYPE:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
provider: {
|
|
||||||
type: action.value,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.COMPLETED_TX:
|
|
||||||
var stringId = String(action.id)
|
|
||||||
newState = extend(metamaskState, {
|
|
||||||
unapprovedTxs: {},
|
|
||||||
unapprovedMsgs: {},
|
|
||||||
})
|
|
||||||
for (const id in metamaskState.unapprovedTxs) {
|
|
||||||
if (id !== stringId) {
|
|
||||||
newState.unapprovedTxs[id] = metamaskState.unapprovedTxs[id]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const id in metamaskState.unapprovedMsgs) {
|
|
||||||
if (id !== stringId) {
|
|
||||||
newState.unapprovedMsgs[id] = metamaskState.unapprovedMsgs[id]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newState
|
|
||||||
|
|
||||||
case actions.SHOW_NEW_VAULT_SEED:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
isUnlocked: true,
|
|
||||||
isInitialized: false,
|
|
||||||
seedWords: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.CLEAR_SEED_WORD_CACHE:
|
|
||||||
newState = extend(metamaskState, {
|
|
||||||
isUnlocked: true,
|
|
||||||
isInitialized: true,
|
|
||||||
selectedAddress: action.value,
|
|
||||||
})
|
|
||||||
delete newState.seedWords
|
|
||||||
return newState
|
|
||||||
|
|
||||||
case actions.SHOW_ACCOUNT_DETAIL:
|
|
||||||
newState = extend(metamaskState, {
|
|
||||||
isUnlocked: true,
|
|
||||||
isInitialized: true,
|
|
||||||
selectedAddress: action.value,
|
|
||||||
})
|
|
||||||
delete newState.seedWords
|
|
||||||
return newState
|
|
||||||
|
|
||||||
case actions.SAVE_ACCOUNT_LABEL:
|
|
||||||
const account = action.value.account
|
|
||||||
const name = action.value.label
|
|
||||||
var id = {}
|
|
||||||
id[account] = extend(metamaskState.identities[account], { name })
|
|
||||||
var identities = extend(metamaskState.identities, id)
|
|
||||||
return extend(metamaskState, { identities })
|
|
||||||
|
|
||||||
case actions.SET_CURRENT_FIAT:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
currentCurrency: action.value.currentCurrency,
|
|
||||||
conversionRate: action.value.conversionRate,
|
|
||||||
conversionDate: action.value.conversionDate,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.PAIR_UPDATE:
|
|
||||||
const { value: { marketinfo: pairMarketInfo } } = action
|
|
||||||
return extend(metamaskState, {
|
|
||||||
tokenExchangeRates: {
|
|
||||||
...metamaskState.tokenExchangeRates,
|
|
||||||
[pairMarketInfo.pair]: pairMarketInfo,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.SHAPESHIFT_SUBVIEW:
|
|
||||||
const { value: { marketinfo, coinOptions } } = action
|
|
||||||
return extend(metamaskState, {
|
|
||||||
tokenExchangeRates: {
|
|
||||||
...metamaskState.tokenExchangeRates,
|
|
||||||
[marketinfo.pair]: marketinfo,
|
|
||||||
},
|
|
||||||
coinOptions,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.UPDATE_FEATURE_FLAGS:
|
|
||||||
return extend(metamaskState, {
|
|
||||||
featureFlags: action.value,
|
|
||||||
})
|
|
||||||
|
|
||||||
default:
|
|
||||||
return metamaskState
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
const inherits = require('util').inherits
|
|
||||||
const Component = require('react').Component
|
|
||||||
const Provider = require('react-redux').Provider
|
|
||||||
const h = require('react-hyperscript')
|
|
||||||
const App = require('./app')
|
|
||||||
|
|
||||||
module.exports = Root
|
|
||||||
|
|
||||||
inherits(Root, Component)
|
|
||||||
function Root () { Component.call(this) }
|
|
||||||
|
|
||||||
Root.prototype.render = function () {
|
|
||||||
console.log(123454)
|
|
||||||
return (
|
|
||||||
|
|
||||||
h(Provider, {
|
|
||||||
store: this.props.store,
|
|
||||||
}, [
|
|
||||||
h(App),
|
|
||||||
])
|
|
||||||
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
const createStore = require('redux').createStore
|
|
||||||
const applyMiddleware = require('redux').applyMiddleware
|
|
||||||
const thunkMiddleware = require('redux-thunk').default
|
|
||||||
const rootReducer = require('./reducers')
|
|
||||||
const createLogger = require('redux-logger').createLogger
|
|
||||||
|
|
||||||
global.METAMASK_DEBUG = 'GULP_METAMASK_DEBUG'
|
|
||||||
|
|
||||||
module.exports = configureStore
|
|
||||||
|
|
||||||
const loggerMiddleware = createLogger({
|
|
||||||
predicate: () => global.METAMASK_DEBUG,
|
|
||||||
})
|
|
||||||
|
|
||||||
const middlewares = [thunkMiddleware, loggerMiddleware]
|
|
||||||
|
|
||||||
const createStoreWithMiddleware = applyMiddleware(...middlewares)(createStore)
|
|
||||||
|
|
||||||
function configureStore (initialState) {
|
|
||||||
return createStoreWithMiddleware(rootReducer, initialState)
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>MetaMask</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<!-- app content -->
|
|
||||||
<div id="app-content"></div>
|
|
||||||
<script src="./bundle.js" type="text/javascript" charset="utf-8"></script>
|
|
||||||
|
|
||||||
<!-- design reference -->
|
|
||||||
<link rel="stylesheet" type="text/css" href="./app/css/debug.css">
|
|
||||||
<div id="design-container">
|
|
||||||
<img id="design-img" src="./design/metamask_wfs_jan_13.png">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,58 +0,0 @@
|
|||||||
const render = require('react-dom').render
|
|
||||||
const h = require('react-hyperscript')
|
|
||||||
const Root = require('./app/root')
|
|
||||||
const actions = require('./app/actions')
|
|
||||||
const configureStore = require('./app/store')
|
|
||||||
const txHelper = require('./lib/tx-helper')
|
|
||||||
global.log = require('loglevel')
|
|
||||||
|
|
||||||
module.exports = launchMetamaskUi
|
|
||||||
|
|
||||||
|
|
||||||
log.setLevel(global.METAMASK_DEBUG ? 'debug' : 'warn')
|
|
||||||
|
|
||||||
function launchMetamaskUi (opts, cb) {
|
|
||||||
var accountManager = opts.accountManager
|
|
||||||
actions._setBackgroundConnection(accountManager)
|
|
||||||
// check if we are unlocked first
|
|
||||||
accountManager.getState(function (err, metamaskState) {
|
|
||||||
if (err) return cb(err)
|
|
||||||
const store = startApp(metamaskState, accountManager, opts)
|
|
||||||
cb(null, store)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function startApp (metamaskState, accountManager, opts) {
|
|
||||||
// parse opts
|
|
||||||
const store = configureStore({
|
|
||||||
|
|
||||||
// metamaskState represents the cross-tab state
|
|
||||||
metamask: metamaskState,
|
|
||||||
|
|
||||||
// appState represents the current tab's popup state
|
|
||||||
appState: {},
|
|
||||||
|
|
||||||
// Which blockchain we are using:
|
|
||||||
networkVersion: opts.networkVersion,
|
|
||||||
})
|
|
||||||
|
|
||||||
// if unconfirmed txs, start on txConf page
|
|
||||||
const unapprovedTxsAll = txHelper(metamaskState.unapprovedTxs, metamaskState.unapprovedMsgs, metamaskState.unapprovedPersonalMsgs, metamaskState.unapprovedTypedMessages, metamaskState.network)
|
|
||||||
if (unapprovedTxsAll.length > 0) {
|
|
||||||
store.dispatch(actions.showConfTxPage())
|
|
||||||
}
|
|
||||||
|
|
||||||
accountManager.on('update', function (metamaskState) {
|
|
||||||
store.dispatch(actions.updateMetamaskState(metamaskState))
|
|
||||||
})
|
|
||||||
|
|
||||||
// start app
|
|
||||||
render(
|
|
||||||
h(Root, {
|
|
||||||
// inject initial state
|
|
||||||
store: store,
|
|
||||||
}
|
|
||||||
), opts.container)
|
|
||||||
|
|
||||||
return store
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user