updates for cross-device sync #130
6 changed files with 149 additions and 44 deletions
71
dist/bundle.js
vendored
71
dist/bundle.js
vendored
|
@ -89,8 +89,8 @@ return /******/ (function(modules) { // webpackBootstrap
|
||||||
Object.defineProperty(exports, "__esModule", {
|
Object.defineProperty(exports, "__esModule", {
|
||||||
value: true
|
value: true
|
||||||
});
|
});
|
||||||
exports.selectTransactionListFilter = exports.selectWalletUnlockResult = exports.selectWalletUnlockSucceeded = exports.selectWalletUnlockPending = exports.selectWalletDecryptResult = exports.selectWalletDecryptSucceeded = exports.selectWalletDecryptPending = exports.selectWalletEncryptResult = exports.selectWalletEncryptSucceeded = exports.selectWalletEncryptPending = exports.selectWalletState = exports.selectWalletIsEncrypted = exports.selectBlocks = exports.selectDraftTransactionError = exports.selectDraftTransactionAddress = exports.selectDraftTransactionAmount = exports.selectDraftTransaction = exports.selectGettingNewAddress = exports.selectReceiveAddress = exports.selectIsSendingSupport = exports.selectIsFetchingTransactions = exports.selectHasTransactions = exports.selectRecentTransactions = exports.selectTransactionItems = exports.selectTransactionsById = exports.selectBalance = exports.makeSelectBlockDate = exports.makeSelectQueryWithOptions = exports.selectSearchSuggestions = exports.selectSearchBarFocused = exports.selectWunderBarAddress = exports.selectSearchUrisByQuery = exports.selectIsSearching = exports.selectSearchOptions = exports.selectSearchValue = exports.selectSearchQuery = exports.makeSelectSearchUris = exports.selectSearchState = exports.selectActiveHistoryEntry = exports.selectHistoryStack = exports.selectHistoryIndex = exports.selectIsForwardDisabled = exports.selectIsBackDisabled = exports.selectPathAfterAuth = exports.selectPageTitle = exports.selectHeaderLinks = exports.selectCurrentParams = exports.selectCurrentPage = exports.selectCurrentPath = exports.makeSelectCurrentParam = exports.computePageFromPath = exports.selectFileListPublishedSort = exports.selectFileListDownloadedSort = exports.selectSearchDownloadUris = exports.selectTotalDownloadProgress = exports.selectDownloadingFileInfos = exports.selectFileInfosDownloaded = exports.selectUrisLoading = exports.selectDownloadingByOutpoint = exports.selectIsFetchingFileListDownloadedOrPublished = exports.selectIsFetchingFileList = exports.selectFileInfosByOutpoint = exports.makeSelectLoadingForUri = exports.makeSelectDownloadingForUri = exports.makeSelectFileInfoForUri = exports.selectCurrentChannelPage = exports.selectChannelClaimCounts = exports.selectPlayingUri = exports.selectFetchingTrendingUris = exports.selectTrendingUris = exports.selectFetchingFeaturedUris = exports.selectFeaturedUris = exports.selectResolvingUris = exports.selectMyChannelClaims = exports.selectFetchingMyChannels = exports.selectMyClaimsOutpoints = exports.selectAllMyClaimsByOutpoint = exports.selectMyClaimsWithoutChannels = exports.selectMyClaims = undefined;
|
exports.selectTransactionListFilter = exports.selectWalletUnlockResult = exports.selectWalletUnlockSucceeded = exports.selectWalletUnlockPending = exports.selectWalletDecryptResult = exports.selectWalletDecryptSucceeded = exports.selectWalletDecryptPending = exports.selectWalletEncryptResult = exports.selectWalletEncryptSucceeded = exports.selectWalletEncryptPending = exports.selectWalletState = exports.selectWalletIsEncrypted = exports.selectBlocks = exports.selectDraftTransactionError = exports.selectDraftTransactionAddress = exports.selectDraftTransactionAmount = exports.selectDraftTransaction = exports.selectGettingNewAddress = exports.selectReceiveAddress = exports.selectIsSendingSupport = exports.selectIsFetchingTransactions = exports.selectHasTransactions = exports.selectRecentTransactions = exports.selectTransactionItems = exports.selectTransactionsById = exports.selectTotalBalance = exports.selectBalance = exports.makeSelectBlockDate = exports.makeSelectQueryWithOptions = exports.selectSearchSuggestions = exports.selectSearchBarFocused = exports.selectWunderBarAddress = exports.selectSearchUrisByQuery = exports.selectIsSearching = exports.selectSearchOptions = exports.selectSearchValue = exports.selectSearchQuery = exports.makeSelectSearchUris = exports.selectSearchState = exports.selectActiveHistoryEntry = exports.selectHistoryStack = exports.selectHistoryIndex = exports.selectIsForwardDisabled = exports.selectIsBackDisabled = exports.selectPathAfterAuth = exports.selectPageTitle = exports.selectHeaderLinks = exports.selectCurrentParams = exports.selectCurrentPage = exports.selectCurrentPath = exports.makeSelectCurrentParam = exports.computePageFromPath = exports.selectFileListPublishedSort = exports.selectFileListDownloadedSort = exports.selectSearchDownloadUris = exports.selectTotalDownloadProgress = exports.selectDownloadingFileInfos = exports.selectFileInfosDownloaded = exports.selectUrisLoading = exports.selectDownloadingByOutpoint = exports.selectIsFetchingFileListDownloadedOrPublished = exports.selectIsFetchingFileList = exports.selectFileInfosByOutpoint = exports.makeSelectLoadingForUri = exports.makeSelectDownloadingForUri = exports.makeSelectFileInfoForUri = exports.selectCurrentChannelPage = exports.selectChannelClaimCounts = exports.selectPlayingUri = exports.selectFetchingTrendingUris = exports.selectTrendingUris = exports.selectFetchingFeaturedUris = exports.selectFeaturedUris = exports.selectResolvingUris = exports.selectMyChannelClaims = exports.selectFetchingMyChannels = exports.selectMyClaimsOutpoints = exports.selectAllMyClaimsByOutpoint = exports.selectMyClaimsWithoutChannels = exports.selectMyClaims = exports.selectPendingClaims = exports.selectIsFetchingClaimListMine = undefined;
|
||||||
exports.selectPendingClaims = exports.selectIsFetchingClaimListMine = exports.selectAllFetchingChannelClaims = exports.selectMyActiveClaims = exports.selectAbandoningIds = exports.selectMyClaimsRaw = exports.selectAllClaimsByChannel = exports.selectClaimsByUri = exports.selectClaimsById = exports.selectPendingById = exports.makeSelectClaimsInChannelForCurrentPageState = exports.makeSelectPendingByUri = exports.makeSelectClaimIsPending = exports.makeSelectChannelForClaimUri = exports.makeSelectFirstRecommendedFileForUri = exports.makeSelectRecommendedContentForUri = exports.makeSelectNsfwCountForChannel = exports.makeSelectNsfwCountFromUris = exports.makeSelectTotalPagesForChannel = exports.makeSelectTotalItemsForChannel = exports.makeSelectIsUriResolving = exports.makeSelectContentTypeForUri = exports.makeSelectTitleForUri = exports.makeSelectMetadataForUri = exports.makeSelectClaimsInChannelForPage = exports.makeSelectClaimsInChannelForCurrentPage = exports.makeSelectFetchingChannelClaims = exports.makeSelectClaimIsMine = exports.makeSelectClaimForUri = exports.selectError = exports.selectToast = exports.makeSelectContentPositionForUri = exports.contentReducer = exports.walletReducer = exports.searchReducer = exports.notificationsReducer = exports.fileInfoReducer = exports.claimsReducer = exports.creditsToString = exports.formatFullPrice = exports.formatCredits = exports.toQueryString = exports.parseQueryParams = exports.batchActions = exports.doUpdateBlockHeight = exports.doSetTransactionListFilter = exports.doWalletStatus = exports.doWalletUnlock = exports.doWalletDecrypt = exports.doWalletEncrypt = exports.doSendTip = exports.doSetDraftTransactionAddress = exports.doSetDraftTransactionAmount = exports.doSendDraftTransaction = exports.doCheckAddressIsMine = exports.doGetNewAddress = exports.doFetchBlock = exports.doFetchTransactions = exports.doBalanceSubscribe = exports.doUpdateBalance = exports.savePosition = exports.doUpdateSearchOptions = exports.setSearchApi = exports.doBlurSearchInput = exports.doFocusSearchInput = exports.doUpdateSearchQuery = exports.doSearch = exports.doSetFileListSort = exports.doFetchFileInfosAndPublishedClaims = exports.doFileList = exports.doFetchFileInfo = exports.doResolveUri = exports.doResolveUris = exports.doAbandonClaim = exports.doFetchClaimListMine = exports.doFetchClaimCountByChannel = exports.doFetchClaimsByChannel = exports.doDismissError = exports.doError = exports.doDismissToast = exports.doToast = exports.convertToShareLink = exports.isNameValid = exports.isURIClaimable = exports.isURIValid = exports.normalizeURI = exports.buildURI = exports.parseURI = exports.regexAddress = exports.regexInvalidURI = exports.Lbry = exports.PAGES = exports.SORT_OPTIONS = exports.TRANSACTIONS = exports.SETTINGS = exports.SEARCH_OPTIONS = exports.SEARCH_TYPES = exports.THUMBNAIL_STATUSES = exports.ACTIONS = exports.Toast = undefined;
|
exports.selectAllFetchingChannelClaims = exports.selectMyActiveClaims = exports.selectAbandoningIds = exports.selectMyClaimsRaw = exports.selectAllClaimsByChannel = exports.selectClaimsByUri = exports.selectClaimsById = exports.selectPendingById = exports.makeSelectClaimsInChannelForCurrentPageState = exports.makeSelectPendingByUri = exports.makeSelectClaimIsPending = exports.makeSelectChannelForClaimUri = exports.makeSelectFirstRecommendedFileForUri = exports.makeSelectRecommendedContentForUri = exports.makeSelectNsfwCountForChannel = exports.makeSelectNsfwCountFromUris = exports.makeSelectTotalPagesForChannel = exports.makeSelectTotalItemsForChannel = exports.makeSelectIsUriResolving = exports.makeSelectContentTypeForUri = exports.makeSelectTitleForUri = exports.makeSelectMetadataForUri = exports.makeSelectClaimsInChannelForPage = exports.makeSelectClaimsInChannelForCurrentPage = exports.makeSelectFetchingChannelClaims = exports.makeSelectClaimIsMine = exports.makeSelectClaimForUri = exports.selectError = exports.selectToast = exports.makeSelectContentPositionForUri = exports.contentReducer = exports.walletReducer = exports.searchReducer = exports.notificationsReducer = exports.fileInfoReducer = exports.claimsReducer = exports.creditsToString = exports.formatFullPrice = exports.formatCredits = exports.toQueryString = exports.parseQueryParams = exports.batchActions = exports.doUpdateBlockHeight = exports.doSetTransactionListFilter = exports.doWalletStatus = exports.doWalletUnlock = exports.doWalletDecrypt = exports.doWalletEncrypt = exports.doSendTip = exports.doSetDraftTransactionAddress = exports.doSetDraftTransactionAmount = exports.doSendDraftTransaction = exports.doCheckAddressIsMine = exports.doGetNewAddress = exports.doFetchBlock = exports.doFetchTransactions = exports.doTotalBalanceSubscribe = exports.doUpdateTotalBalance = exports.doBalanceSubscribe = exports.doUpdateBalance = exports.savePosition = exports.doUpdateSearchOptions = exports.setSearchApi = exports.doBlurSearchInput = exports.doFocusSearchInput = exports.doUpdateSearchQuery = exports.doSearch = exports.doSetFileListSort = exports.doFetchFileInfosAndPublishedClaims = exports.doFileList = exports.doFetchFileInfo = exports.doResolveUri = exports.doResolveUris = exports.doAbandonClaim = exports.doFetchClaimListMine = exports.doFetchClaimCountByChannel = exports.doFetchClaimsByChannel = exports.doDismissError = exports.doError = exports.doDismissToast = exports.doToast = exports.convertToShareLink = exports.isNameValid = exports.isURIClaimable = exports.isURIValid = exports.normalizeURI = exports.buildURI = exports.parseURI = exports.regexAddress = exports.regexInvalidURI = exports.Lbry = exports.PAGES = exports.SORT_OPTIONS = exports.TRANSACTIONS = exports.SETTINGS = exports.SEARCH_OPTIONS = exports.SEARCH_TYPES = exports.THUMBNAIL_STATUSES = exports.ACTIONS = exports.Toast = undefined;
|
||||||
|
|
||||||
var _Notification = __webpack_require__(1);
|
var _Notification = __webpack_require__(1);
|
||||||
|
|
||||||
|
@ -313,6 +313,18 @@ Object.defineProperty(exports, 'doBalanceSubscribe', {
|
||||||
return _wallet.doBalanceSubscribe;
|
return _wallet.doBalanceSubscribe;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Object.defineProperty(exports, 'doUpdateTotalBalance', {
|
||||||
|
enumerable: true,
|
||||||
|
get: function get() {
|
||||||
|
return _wallet.doUpdateTotalBalance;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, 'doTotalBalanceSubscribe', {
|
||||||
|
enumerable: true,
|
||||||
|
get: function get() {
|
||||||
|
return _wallet.doTotalBalanceSubscribe;
|
||||||
|
}
|
||||||
|
});
|
||||||
Object.defineProperty(exports, 'doFetchTransactions', {
|
Object.defineProperty(exports, 'doFetchTransactions', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
get: function get() {
|
get: function get() {
|
||||||
|
@ -1027,6 +1039,12 @@ Object.defineProperty(exports, 'selectBalance', {
|
||||||
return _wallet3.selectBalance;
|
return _wallet3.selectBalance;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Object.defineProperty(exports, 'selectTotalBalance', {
|
||||||
|
enumerable: true,
|
||||||
|
get: function get() {
|
||||||
|
return _wallet3.selectTotalBalance;
|
||||||
|
}
|
||||||
|
});
|
||||||
Object.defineProperty(exports, 'selectTransactionsById', {
|
Object.defineProperty(exports, 'selectTransactionsById', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
get: function get() {
|
get: function get() {
|
||||||
|
@ -1378,6 +1396,7 @@ var GET_NEW_ADDRESS_COMPLETED = exports.GET_NEW_ADDRESS_COMPLETED = 'GET_NEW_ADD
|
||||||
var FETCH_TRANSACTIONS_STARTED = exports.FETCH_TRANSACTIONS_STARTED = 'FETCH_TRANSACTIONS_STARTED';
|
var FETCH_TRANSACTIONS_STARTED = exports.FETCH_TRANSACTIONS_STARTED = 'FETCH_TRANSACTIONS_STARTED';
|
||||||
var FETCH_TRANSACTIONS_COMPLETED = exports.FETCH_TRANSACTIONS_COMPLETED = 'FETCH_TRANSACTIONS_COMPLETED';
|
var FETCH_TRANSACTIONS_COMPLETED = exports.FETCH_TRANSACTIONS_COMPLETED = 'FETCH_TRANSACTIONS_COMPLETED';
|
||||||
var UPDATE_BALANCE = exports.UPDATE_BALANCE = 'UPDATE_BALANCE';
|
var UPDATE_BALANCE = exports.UPDATE_BALANCE = 'UPDATE_BALANCE';
|
||||||
|
var UPDATE_TOTAL_BALANCE = exports.UPDATE_TOTAL_BALANCE = 'UPDATE_TOTAL_BALANCE';
|
||||||
var CHECK_ADDRESS_IS_MINE_STARTED = exports.CHECK_ADDRESS_IS_MINE_STARTED = 'CHECK_ADDRESS_IS_MINE_STARTED';
|
var CHECK_ADDRESS_IS_MINE_STARTED = exports.CHECK_ADDRESS_IS_MINE_STARTED = 'CHECK_ADDRESS_IS_MINE_STARTED';
|
||||||
var CHECK_ADDRESS_IS_MINE_COMPLETED = exports.CHECK_ADDRESS_IS_MINE_COMPLETED = 'CHECK_ADDRESS_IS_MINE_COMPLETED';
|
var CHECK_ADDRESS_IS_MINE_COMPLETED = exports.CHECK_ADDRESS_IS_MINE_COMPLETED = 'CHECK_ADDRESS_IS_MINE_COMPLETED';
|
||||||
var SEND_TRANSACTION_STARTED = exports.SEND_TRANSACTION_STARTED = 'SEND_TRANSACTION_STARTED';
|
var SEND_TRANSACTION_STARTED = exports.SEND_TRANSACTION_STARTED = 'SEND_TRANSACTION_STARTED';
|
||||||
|
@ -3566,7 +3585,9 @@ Object.defineProperty(exports, "__esModule", {
|
||||||
value: true
|
value: true
|
||||||
});
|
});
|
||||||
exports.doUpdateBalance = doUpdateBalance;
|
exports.doUpdateBalance = doUpdateBalance;
|
||||||
|
exports.doUpdateTotalBalance = doUpdateTotalBalance;
|
||||||
exports.doBalanceSubscribe = doBalanceSubscribe;
|
exports.doBalanceSubscribe = doBalanceSubscribe;
|
||||||
|
exports.doTotalBalanceSubscribe = doTotalBalanceSubscribe;
|
||||||
exports.doFetchTransactions = doFetchTransactions;
|
exports.doFetchTransactions = doFetchTransactions;
|
||||||
exports.doFetchBlock = doFetchBlock;
|
exports.doFetchBlock = doFetchBlock;
|
||||||
exports.doGetNewAddress = doGetNewAddress;
|
exports.doGetNewAddress = doGetNewAddress;
|
||||||
|
@ -3621,6 +3642,30 @@ function doUpdateBalance() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function doUpdateTotalBalance() {
|
||||||
|
return function (dispatch, getState) {
|
||||||
|
var _getState2 = getState(),
|
||||||
|
totalBalanceInStore = _getState2.wallet.totalBalance;
|
||||||
|
|
||||||
|
_lbry2.default.account_list().then(function (accounts) {
|
||||||
|
var totalSatoshis = accounts.lbc_mainnet.reduce(function (a, b) {
|
||||||
|
if (!a.satoshis) return b.satoshis;
|
||||||
|
if (!b.satoshis) return a.satoshis;
|
||||||
|
return a.satoshis + b.satoshis;
|
||||||
|
});
|
||||||
|
var totalBalance = totalSatoshis / Math.pow(10, 8);
|
||||||
|
if (totalBalanceInStore !== totalBalance) {
|
||||||
|
dispatch({
|
||||||
|
type: ACTIONS.UPDATE_TOTAL_BALANCE,
|
||||||
|
data: {
|
||||||
|
totalBalance: totalBalance
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function doBalanceSubscribe() {
|
function doBalanceSubscribe() {
|
||||||
return function (dispatch) {
|
return function (dispatch) {
|
||||||
dispatch(doUpdateBalance());
|
dispatch(doUpdateBalance());
|
||||||
|
@ -3630,6 +3675,15 @@ function doBalanceSubscribe() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function doTotalBalanceSubscribe() {
|
||||||
|
return function (dispatch) {
|
||||||
|
dispatch(doUpdateTotalBalance());
|
||||||
|
setInterval(function () {
|
||||||
|
return dispatch(doUpdateTotalBalance());
|
||||||
|
}, 5000);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function doFetchTransactions() {
|
function doFetchTransactions() {
|
||||||
return function (dispatch) {
|
return function (dispatch) {
|
||||||
dispatch({
|
dispatch({
|
||||||
|
@ -3956,7 +4010,7 @@ function doUpdateBlockHeight() {
|
||||||
Object.defineProperty(exports, "__esModule", {
|
Object.defineProperty(exports, "__esModule", {
|
||||||
value: true
|
value: true
|
||||||
});
|
});
|
||||||
exports.selectTransactionListFilter = exports.makeSelectBlockDate = exports.selectCurrentHeight = exports.selectBlocks = exports.selectDraftTransactionError = exports.selectDraftTransactionAddress = exports.selectDraftTransactionAmount = exports.selectDraftTransaction = exports.selectGettingNewAddress = exports.selectReceiveAddress = exports.selectIsSendingSupport = exports.selectIsFetchingTransactions = exports.selectHasTransactions = exports.selectRecentTransactions = exports.selectTransactionItems = exports.selectTransactionsById = exports.selectBalance = exports.selectWalletLockResult = exports.selectWalletLockSucceeded = exports.selectWalletLockPending = exports.selectWalletUnlockResult = exports.selectWalletUnlockSucceeded = exports.selectWalletUnlockPending = exports.selectWalletDecryptResult = exports.selectWalletDecryptSucceeded = exports.selectWalletDecryptPending = exports.selectWalletEncryptResult = exports.selectWalletEncryptSucceeded = exports.selectWalletEncryptPending = exports.selectWalletIsEncrypted = exports.selectWalletState = exports.selectState = undefined;
|
exports.selectTransactionListFilter = exports.makeSelectBlockDate = exports.selectCurrentHeight = exports.selectBlocks = exports.selectDraftTransactionError = exports.selectDraftTransactionAddress = exports.selectDraftTransactionAmount = exports.selectDraftTransaction = exports.selectGettingNewAddress = exports.selectReceiveAddress = exports.selectIsSendingSupport = exports.selectIsFetchingTransactions = exports.selectHasTransactions = exports.selectRecentTransactions = exports.selectTransactionItems = exports.selectTransactionsById = exports.selectTotalBalance = exports.selectBalance = exports.selectWalletLockResult = exports.selectWalletLockSucceeded = exports.selectWalletLockPending = exports.selectWalletUnlockResult = exports.selectWalletUnlockSucceeded = exports.selectWalletUnlockPending = exports.selectWalletDecryptResult = exports.selectWalletDecryptSucceeded = exports.selectWalletDecryptPending = exports.selectWalletEncryptResult = exports.selectWalletEncryptSucceeded = exports.selectWalletEncryptPending = exports.selectWalletIsEncrypted = exports.selectWalletState = exports.selectState = undefined;
|
||||||
|
|
||||||
var _reselect = __webpack_require__(14);
|
var _reselect = __webpack_require__(14);
|
||||||
|
|
||||||
|
@ -4030,6 +4084,10 @@ var selectBalance = exports.selectBalance = (0, _reselect.createSelector)(select
|
||||||
return state.balance;
|
return state.balance;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var selectTotalBalance = exports.selectTotalBalance = (0, _reselect.createSelector)(selectState, function (state) {
|
||||||
|
return state.totalBalance;
|
||||||
|
});
|
||||||
|
|
||||||
var selectTransactionsById = exports.selectTransactionsById = (0, _reselect.createSelector)(selectState, function (state) {
|
var selectTransactionsById = exports.selectTransactionsById = (0, _reselect.createSelector)(selectState, function (state) {
|
||||||
return state.transactions;
|
return state.transactions;
|
||||||
});
|
});
|
||||||
|
@ -5753,6 +5811,7 @@ var buildDraftTransaction = function buildDraftTransaction() {
|
||||||
|
|
||||||
var defaultState = {
|
var defaultState = {
|
||||||
balance: undefined,
|
balance: undefined,
|
||||||
|
totalBalance: undefined,
|
||||||
blocks: {},
|
blocks: {},
|
||||||
latestBlock: undefined,
|
latestBlock: undefined,
|
||||||
transactions: {},
|
transactions: {},
|
||||||
|
@ -5821,6 +5880,12 @@ reducers[ACTIONS.UPDATE_BALANCE] = function (state /*: WalletState*/, action) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
reducers[ACTIONS.UPDATE_TOTAL_BALANCE] = function (state /*: WalletState*/, action) {
|
||||||
|
return Object.assign({}, state, {
|
||||||
|
totalBalance: action.data.totalBalance
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED] = function (state /*: WalletState*/) {
|
reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED] = function (state /*: WalletState*/) {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
checkingAddressOwnership: true
|
checkingAddressOwnership: true
|
||||||
|
|
|
@ -34,6 +34,7 @@ export const GET_NEW_ADDRESS_COMPLETED = 'GET_NEW_ADDRESS_COMPLETED';
|
||||||
export const FETCH_TRANSACTIONS_STARTED = 'FETCH_TRANSACTIONS_STARTED';
|
export const FETCH_TRANSACTIONS_STARTED = 'FETCH_TRANSACTIONS_STARTED';
|
||||||
export const FETCH_TRANSACTIONS_COMPLETED = 'FETCH_TRANSACTIONS_COMPLETED';
|
export const FETCH_TRANSACTIONS_COMPLETED = 'FETCH_TRANSACTIONS_COMPLETED';
|
||||||
export const UPDATE_BALANCE = 'UPDATE_BALANCE';
|
export const UPDATE_BALANCE = 'UPDATE_BALANCE';
|
||||||
|
export const UPDATE_TOTAL_BALANCE = 'UPDATE_TOTAL_BALANCE';
|
||||||
export const CHECK_ADDRESS_IS_MINE_STARTED = 'CHECK_ADDRESS_IS_MINE_STARTED';
|
export const CHECK_ADDRESS_IS_MINE_STARTED = 'CHECK_ADDRESS_IS_MINE_STARTED';
|
||||||
export const CHECK_ADDRESS_IS_MINE_COMPLETED = 'CHECK_ADDRESS_IS_MINE_COMPLETED';
|
export const CHECK_ADDRESS_IS_MINE_COMPLETED = 'CHECK_ADDRESS_IS_MINE_COMPLETED';
|
||||||
export const SEND_TRANSACTION_STARTED = 'SEND_TRANSACTION_STARTED';
|
export const SEND_TRANSACTION_STARTED = 'SEND_TRANSACTION_STARTED';
|
||||||
|
|
|
@ -71,6 +71,8 @@ export { savePosition } from 'redux/actions/content';
|
||||||
export {
|
export {
|
||||||
doUpdateBalance,
|
doUpdateBalance,
|
||||||
doBalanceSubscribe,
|
doBalanceSubscribe,
|
||||||
|
doUpdateTotalBalance,
|
||||||
|
doTotalBalanceSubscribe,
|
||||||
doFetchTransactions,
|
doFetchTransactions,
|
||||||
doFetchBlock,
|
doFetchBlock,
|
||||||
doGetNewAddress,
|
doGetNewAddress,
|
||||||
|
@ -201,6 +203,7 @@ export {
|
||||||
export {
|
export {
|
||||||
makeSelectBlockDate,
|
makeSelectBlockDate,
|
||||||
selectBalance,
|
selectBalance,
|
||||||
|
selectTotalBalance,
|
||||||
selectTransactionsById,
|
selectTransactionsById,
|
||||||
selectTransactionItems,
|
selectTransactionItems,
|
||||||
selectRecentTransactions,
|
selectRecentTransactions,
|
||||||
|
|
|
@ -24,6 +24,30 @@ export function doUpdateBalance() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function doUpdateTotalBalance() {
|
||||||
|
return (dispatch, getState) => {
|
||||||
|
const {
|
||||||
|
wallet: { totalBalance: totalBalanceInStore },
|
||||||
|
} = getState();
|
||||||
|
Lbry.account_list().then(accounts => {
|
||||||
|
const totalSatoshis = accounts.lbc_mainnet.reduce((a, b) => {
|
||||||
|
if (!a.satoshis) return b.satoshis;
|
||||||
|
if (!b.satoshis) return a.satoshis;
|
||||||
|
return a.satoshis + b.satoshis;
|
||||||
|
});
|
||||||
|
const totalBalance = totalSatoshis / 10 ** 8;
|
||||||
|
if (totalBalanceInStore !== totalBalance) {
|
||||||
|
dispatch({
|
||||||
|
type: ACTIONS.UPDATE_TOTAL_BALANCE,
|
||||||
|
data: {
|
||||||
|
totalBalance,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function doBalanceSubscribe() {
|
export function doBalanceSubscribe() {
|
||||||
return dispatch => {
|
return dispatch => {
|
||||||
dispatch(doUpdateBalance());
|
dispatch(doUpdateBalance());
|
||||||
|
@ -31,6 +55,13 @@ export function doBalanceSubscribe() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function doTotalBalanceSubscribe() {
|
||||||
|
return dispatch => {
|
||||||
|
dispatch(doUpdateTotalBalance());
|
||||||
|
setInterval(() => dispatch(doUpdateTotalBalance()), 5000);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function doFetchTransactions() {
|
export function doFetchTransactions() {
|
||||||
return dispatch => {
|
return dispatch => {
|
||||||
dispatch({
|
dispatch({
|
||||||
|
|
|
@ -40,6 +40,7 @@ type WalletState = {
|
||||||
|
|
||||||
const defaultState = {
|
const defaultState = {
|
||||||
balance: undefined,
|
balance: undefined,
|
||||||
|
totalBalance: undefined,
|
||||||
blocks: {},
|
blocks: {},
|
||||||
latestBlock: undefined,
|
latestBlock: undefined,
|
||||||
transactions: {},
|
transactions: {},
|
||||||
|
@ -103,6 +104,11 @@ reducers[ACTIONS.UPDATE_BALANCE] = (state: WalletState, action) =>
|
||||||
balance: action.data.balance,
|
balance: action.data.balance,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
reducers[ACTIONS.UPDATE_TOTAL_BALANCE] = (state: WalletState, action) =>
|
||||||
|
Object.assign({}, state, {
|
||||||
|
totalBalance: action.data.totalBalance,
|
||||||
|
});
|
||||||
|
|
||||||
reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED] = (state: WalletState) =>
|
reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED] = (state: WalletState) =>
|
||||||
Object.assign({}, state, {
|
Object.assign({}, state, {
|
||||||
checkingAddressOwnership: true,
|
checkingAddressOwnership: true,
|
||||||
|
|
|
@ -1,83 +1,82 @@
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import * as TRANSACTIONS from 'constants/transaction_types';
|
import * as TRANSACTIONS from 'constants/transaction_types';
|
||||||
|
|
||||||
export const selectState = (state) => state.wallet || {};
|
export const selectState = state => state.wallet || {};
|
||||||
|
|
||||||
export const selectWalletState = selectState;
|
export const selectWalletState = selectState;
|
||||||
|
|
||||||
export const selectWalletIsEncrypted = createSelector(
|
export const selectWalletIsEncrypted = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletIsEncrypted
|
state => state.walletIsEncrypted
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletEncryptPending = createSelector(
|
export const selectWalletEncryptPending = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletEncryptPending
|
state => state.walletEncryptPending
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletEncryptSucceeded = createSelector(
|
export const selectWalletEncryptSucceeded = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletEncryptSucceded
|
state => state.walletEncryptSucceded
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletEncryptResult = createSelector(
|
export const selectWalletEncryptResult = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletEncryptResult
|
state => state.walletEncryptResult
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletDecryptPending = createSelector(
|
export const selectWalletDecryptPending = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletDecryptPending
|
state => state.walletDecryptPending
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletDecryptSucceeded = createSelector(
|
export const selectWalletDecryptSucceeded = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletDecryptSucceded
|
state => state.walletDecryptSucceded
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletDecryptResult = createSelector(
|
export const selectWalletDecryptResult = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletDecryptResult
|
state => state.walletDecryptResult
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletUnlockPending = createSelector(
|
export const selectWalletUnlockPending = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletUnlockPending
|
state => state.walletUnlockPending
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletUnlockSucceeded = createSelector(
|
export const selectWalletUnlockSucceeded = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletUnlockSucceded
|
state => state.walletUnlockSucceded
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletUnlockResult = createSelector(
|
export const selectWalletUnlockResult = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletUnlockResult
|
state => state.walletUnlockResult
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletLockPending = createSelector(
|
export const selectWalletLockPending = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletLockPending
|
state => state.walletLockPending
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletLockSucceeded = createSelector(
|
export const selectWalletLockSucceeded = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.walletLockSucceded
|
state => state.walletLockSucceded
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectWalletLockResult = createSelector(
|
export const selectWalletLockResult = createSelector(selectState, state => state.walletLockResult);
|
||||||
selectState,
|
|
||||||
(state) => state.walletLockResult
|
|
||||||
);
|
|
||||||
|
|
||||||
export const selectBalance = createSelector(selectState, (state) => state.balance);
|
export const selectBalance = createSelector(selectState, state => state.balance);
|
||||||
|
|
||||||
export const selectTransactionsById = createSelector(selectState, (state) => state.transactions);
|
export const selectTotalBalance = createSelector(selectState, state => state.totalBalance);
|
||||||
|
|
||||||
export const selectTransactionItems = createSelector(selectTransactionsById, (byId) => {
|
export const selectTransactionsById = createSelector(selectState, state => state.transactions);
|
||||||
|
|
||||||
|
export const selectTransactionItems = createSelector(selectTransactionsById, byId => {
|
||||||
const items = [];
|
const items = [];
|
||||||
|
|
||||||
Object.keys(byId).forEach((txid) => {
|
Object.keys(byId).forEach(txid => {
|
||||||
const tx = byId[txid];
|
const tx = byId[txid];
|
||||||
|
|
||||||
// ignore dust/fees
|
// ignore dust/fees
|
||||||
|
@ -95,24 +94,24 @@ export const selectTransactionItems = createSelector(selectTransactionsById, (by
|
||||||
const append = [];
|
const append = [];
|
||||||
|
|
||||||
append.push(
|
append.push(
|
||||||
...tx.claim_info.map((item) =>
|
...tx.claim_info.map(item =>
|
||||||
Object.assign({}, tx, item, {
|
Object.assign({}, tx, item, {
|
||||||
type: item.claim_name[0] === '@' ? TRANSACTIONS.CHANNEL : TRANSACTIONS.PUBLISH,
|
type: item.claim_name[0] === '@' ? TRANSACTIONS.CHANNEL : TRANSACTIONS.PUBLISH,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
append.push(
|
append.push(
|
||||||
...tx.support_info.map((item) =>
|
...tx.support_info.map(item =>
|
||||||
Object.assign({}, tx, item, {
|
Object.assign({}, tx, item, {
|
||||||
type: !item.is_tip ? TRANSACTIONS.SUPPORT : TRANSACTIONS.TIP,
|
type: !item.is_tip ? TRANSACTIONS.SUPPORT : TRANSACTIONS.TIP,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
append.push(
|
append.push(
|
||||||
...tx.update_info.map((item) => Object.assign({}, tx, item, { type: TRANSACTIONS.UPDATE }))
|
...tx.update_info.map(item => Object.assign({}, tx, item, { type: TRANSACTIONS.UPDATE }))
|
||||||
);
|
);
|
||||||
append.push(
|
append.push(
|
||||||
...tx.abandon_info.map((item) => Object.assign({}, tx, item, { type: TRANSACTIONS.ABANDON }))
|
...tx.abandon_info.map(item => Object.assign({}, tx, item, { type: TRANSACTIONS.ABANDON }))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!append.length) {
|
if (!append.length) {
|
||||||
|
@ -124,7 +123,7 @@ export const selectTransactionItems = createSelector(selectTransactionsById, (by
|
||||||
}
|
}
|
||||||
|
|
||||||
items.push(
|
items.push(
|
||||||
...append.map((item) => {
|
...append.map(item => {
|
||||||
// value on transaction, amount on outpoint
|
// value on transaction, amount on outpoint
|
||||||
// amount is always positive, but should match sign of value
|
// amount is always positive, but should match sign of value
|
||||||
const balanceDelta = parseFloat(item.balance_delta);
|
const balanceDelta = parseFloat(item.balance_delta);
|
||||||
|
@ -161,10 +160,10 @@ export const selectTransactionItems = createSelector(selectTransactionsById, (by
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
export const selectRecentTransactions = createSelector(selectTransactionItems, (transactions) => {
|
export const selectRecentTransactions = createSelector(selectTransactionItems, transactions => {
|
||||||
const threshold = new Date();
|
const threshold = new Date();
|
||||||
threshold.setDate(threshold.getDate() - 7);
|
threshold.setDate(threshold.getDate() - 7);
|
||||||
return transactions.filter((transaction) => {
|
return transactions.filter(transaction => {
|
||||||
if (!transaction.date) {
|
if (!transaction.date) {
|
||||||
return true; // pending transaction
|
return true; // pending transaction
|
||||||
}
|
}
|
||||||
|
@ -175,48 +174,48 @@ export const selectRecentTransactions = createSelector(selectTransactionItems, (
|
||||||
|
|
||||||
export const selectHasTransactions = createSelector(
|
export const selectHasTransactions = createSelector(
|
||||||
selectTransactionItems,
|
selectTransactionItems,
|
||||||
(transactions) => transactions && transactions.length > 0
|
transactions => transactions && transactions.length > 0
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectIsFetchingTransactions = createSelector(
|
export const selectIsFetchingTransactions = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.fetchingTransactions
|
state => state.fetchingTransactions
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectIsSendingSupport = createSelector(selectState, (state) => state.sendingSupport);
|
export const selectIsSendingSupport = createSelector(selectState, state => state.sendingSupport);
|
||||||
|
|
||||||
export const selectReceiveAddress = createSelector(selectState, (state) => state.receiveAddress);
|
export const selectReceiveAddress = createSelector(selectState, state => state.receiveAddress);
|
||||||
|
|
||||||
export const selectGettingNewAddress = createSelector(
|
export const selectGettingNewAddress = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.gettingNewAddress
|
state => state.gettingNewAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectDraftTransaction = createSelector(
|
export const selectDraftTransaction = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.draftTransaction || {}
|
state => state.draftTransaction || {}
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectDraftTransactionAmount = createSelector(
|
export const selectDraftTransactionAmount = createSelector(
|
||||||
selectDraftTransaction,
|
selectDraftTransaction,
|
||||||
(draft) => draft.amount
|
draft => draft.amount
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectDraftTransactionAddress = createSelector(
|
export const selectDraftTransactionAddress = createSelector(
|
||||||
selectDraftTransaction,
|
selectDraftTransaction,
|
||||||
(draft) => draft.address
|
draft => draft.address
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectDraftTransactionError = createSelector(
|
export const selectDraftTransactionError = createSelector(
|
||||||
selectDraftTransaction,
|
selectDraftTransaction,
|
||||||
(draft) => draft.error
|
draft => draft.error
|
||||||
);
|
);
|
||||||
|
|
||||||
export const selectBlocks = createSelector(selectState, (state) => state.blocks);
|
export const selectBlocks = createSelector(selectState, state => state.blocks);
|
||||||
|
|
||||||
export const selectCurrentHeight = createSelector(selectState, (state) => state.latestBlock);
|
export const selectCurrentHeight = createSelector(selectState, state => state.latestBlock);
|
||||||
|
|
||||||
export const makeSelectBlockDate = (block) =>
|
export const makeSelectBlockDate = block =>
|
||||||
createSelector(selectBlocks, selectCurrentHeight, (blocks, latestBlock) => {
|
createSelector(selectBlocks, selectCurrentHeight, (blocks, latestBlock) => {
|
||||||
// If we have the block data, look at the actual date,
|
// If we have the block data, look at the actual date,
|
||||||
// If not, try to simulate it based on 2.5 minute blocks
|
// If not, try to simulate it based on 2.5 minute blocks
|
||||||
|
@ -239,5 +238,5 @@ export const makeSelectBlockDate = (block) =>
|
||||||
|
|
||||||
export const selectTransactionListFilter = createSelector(
|
export const selectTransactionListFilter = createSelector(
|
||||||
selectState,
|
selectState,
|
||||||
(state) => state.transactionListFilter || ''
|
state => state.transactionListFilter || ''
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue