scpx-wallet
Version:
Scoop Core Wallet: dual-signature timelock crypto wallet - multi-asset, cross-platform and open-source
184 lines (164 loc) • 8.85 kB
JavaScript
// Distributed under AGPLv3 license: see /LICENSE for terms. Copyright 2019-2021 Dominic Morris.
const {
PRICE_SOCKET_CONNECTED, PRICE_SOCKET_DISCONNECTED,
BTC_PRICE_UPDATE,
LTC_PRICE_UPDATE,
ZEC_PRICE_UPDATE,
DASH_PRICE_UPDATE,
VTC_PRICE_UPDATE,
QTUM_PRICE_UPDATE,
DGB_PRICE_UPDATE,
BCH_PRICE_UPDATE,
RVN_PRICE_UPDATE,
ETH_PRICE_UPDATE,
ZRX_PRICE_UPDATE,
TUSD_PRICE_UPDATE, BNT_PRICE_UPDATE, BAT_PRICE_UPDATE, BNB_PRICE_UPDATE,
OMG_PRICE_UPDATE, GTO_PRICE_UPDATE, SNT_PRICE_UPDATE, HT_PRICE_UPDATE,
USDT_PRICE_UPDATE, EURT_PRICE_UPDATE,
LINK_PRICE_UPDATE, ZIL_PRICE_UPDATE, HOT_PRICE_UPDATE, REP_PRICE_UPDATE, MKR_PRICE_UPDATE,
NEXO_PRICE_UPDATE,
BAND_PRICE_UPDATE, DOS_PRICE_UPDATE, RING_PRICE_UPDATE, SWAP_PRICE_UPDATE,
UNI_PRICE_UPDATE,
EOS_PRICE_UPDATE,
FIAT_RATES_UPDATE,
} = require('../actions')
const { createReducer } = require('./utils')
const initialState = {
price : {
BTC: 0, BTC_TEST: 0, BTC_SEG: 0, BTC_SEG2: 0, EOS: 0, LTC: 0, LTC_TEST: 0,
ZEC: 0, ZEC_TEST: 0,
DASH: 0, VTC: 0, QTUM: 0, DGB: 0, BCHABC: 0,
ETH: 0, ETH_TEST: 0,
TUSD: 0, ZRX: 0, BNT: 0, BAT: 0, BNB: 0,
OMG: 0, GTO: 0, SNT: 0, HT: 0,
USDT: 0, EURT: 0,
LINK: 0, ZIL: 0, HOT: 0, REP: 0, MKR: 0,
BAND: 0,
CCC_TEST: (10 / 1000), // ##.. TODO
SD1A_TEST: 100,
AY1A_TEST: 200,
}
}
const handlers = {
[PRICE_SOCKET_CONNECTED]: (state, action) => {
return { ...state, price: { ...state.price, isConnected: true } }
},
[PRICE_SOCKET_DISCONNECTED]: (state, action) => {
return { ...state, price: { ...state.price, isConnected: false } }
},
// utxo
[BTC_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price,
BTC: action.payload.price,
BTC_TEST: action.payload.price,
BTC_SEG: action.payload.price,
BTC_SEG2: action.payload.price,
} }
},
[LTC_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, LTC: action.payload.price, LTC_TEST: action.payload.price } }
},
[ZEC_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, ZEC: action.payload.price, ZEC_TEST: action.payload.price } }
},
[DASH_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, DASH: action.payload.price } }
},
[VTC_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, VTC: action.payload.price } }
},
[QTUM_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, QTUM: action.payload.price } }
},
[DGB_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, DGB: action.payload.price } }
},
[BCH_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, BCHABC: action.payload.price } }
},
[RVN_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, RVN: action.payload.price } }
},
// eth
[ETH_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, ETH: action.payload.price, ETH_TEST: action.payload.price } }
},
// erc20
[TUSD_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, TUSD: action.payload.price, /*TUSD_TEST: action.payload.price*/ } }
},
[BNT_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, BNT: action.payload.price } }
},
[ZRX_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, ZRX: action.payload.price } }
},
[BAT_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, BAT: action.payload.price } }
},
[BNB_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, BNB: action.payload.price} }
},
[OMG_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, OMG: action.payload.price} }
},
[GTO_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, GTO: action.payload.price} }
},
[SNT_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, SNT: action.payload.price} }
},
[HT_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, HT: action.payload.price} }
},
[USDT_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, USDT: action.payload.price} }
},
[EURT_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, EURT: action.payload.price} }
},
[LINK_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, LINK: action.payload.price} }
},
[ZIL_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, ZIL: action.payload.price} }
},
[HOT_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, HOT: action.payload.price} }
},
[REP_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, REP: action.payload.price} }
},
[MKR_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, MKR: action.payload.price} }
},
[NEXO_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, NEXO: action.payload.price} }
},
[BAND_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, BAND: action.payload.price} }
},
[DOS_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, DOS: action.payload.price} }
},
[RING_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, RING: action.payload.price} }
},
[SWAP_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, SWAP: action.payload.price} }
},
[UNI_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, UNI: action.payload.price} }
},
// eos
[EOS_PRICE_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, price: { ...state.price, EOS: action.payload.price } }
},
// fiat rates (multiple) to USD
[FIAT_RATES_UPDATE]: (state, action) => {
return { ...state, lastPriceUpdateAt: action.payload.lastPriceUpdateAt, fiatUsdRates: action.payload.fiatUsdRates }
},
}
//export default
module.exports =
createReducer(initialState, handlers)