diff --git a/renderer/components/Activity/ActivityActions/ActivityActions.js b/renderer/components/Activity/ActivityActions/ActivityActions.js
index f9fb2ad6b7e..4e11d30e194 100644
--- a/renderer/components/Activity/ActivityActions/ActivityActions.js
+++ b/renderer/components/Activity/ActivityActions/ActivityActions.js
@@ -14,7 +14,7 @@ const ActivityActions = ({
filters,
searchText,
changeFilter,
- fetchActivityHistory,
+ reloadActivityHistory,
updateSearchText,
isCustomFilter,
intl,
@@ -39,7 +39,7 @@ const ActivityActions = ({
mx={3}
/>
-
+
@@ -47,11 +47,11 @@ const ActivityActions = ({
ActivityActions.propTypes = {
changeFilter: PropTypes.func.isRequired,
- fetchActivityHistory: PropTypes.func.isRequired,
filter: PropTypes.object.isRequired,
filters: PropTypes.array.isRequired,
intl: intlShape.isRequired,
isCustomFilter: PropTypes.bool,
+ reloadActivityHistory: PropTypes.func.isRequired,
searchText: PropTypes.string,
updateSearchText: PropTypes.func.isRequired,
}
diff --git a/renderer/containers/Activity/ActivityActions.js b/renderer/containers/Activity/ActivityActions.js
index 289da295ebb..b555b15ec0e 100644
--- a/renderer/containers/Activity/ActivityActions.js
+++ b/renderer/containers/Activity/ActivityActions.js
@@ -1,7 +1,7 @@
import { connect } from 'react-redux'
import {
changeFilter,
- fetchActivityHistory,
+ reloadActivityHistory,
updateSearchText,
activitySelectors,
} from 'reducers/activity'
@@ -9,7 +9,7 @@ import ActivityActions from 'components/Activity/ActivityActions'
const mapDispatchToProps = {
changeFilter,
- fetchActivityHistory,
+ reloadActivityHistory,
updateSearchText,
}
diff --git a/renderer/reducers/activity/reducer.js b/renderer/reducers/activity/reducer.js
index a57031533af..ef29771fec0 100644
--- a/renderer/reducers/activity/reducer.js
+++ b/renderer/reducers/activity/reducer.js
@@ -73,6 +73,7 @@ const initialState = {
// activity paginator object. must be reset for each wallet login
/** @type {Function | null} */
let paginator = null
+let loadedPages = 0
/**
* getPaginator - Returns current activity paginator object. This acts as a singleton
@@ -204,14 +205,21 @@ export const hideActivityModal = () => dispatch => {
/**
* loadNextPage - Loads next activity page if it's available.
*
+ * @param {number} pageSize Pagesize (defaults to config.activity.pageSize)
+ * @param {boolean} reload Reload existing pages
* @returns {(dispatch:Function, getState:Function) => Promise} Thunk
*/
-export const loadNextPage = () => async (dispatch, getState) => {
+export const loadNextPage = (pageSize = config.activity.pageSize, reload = false) => async (
+ dispatch,
+ getState
+) => {
const thisPaginator = getPaginator()
- if (hasNextPage(getState())) {
- const { items, hasNextPage: paginatorHasNextPage } = await thisPaginator(
- config.activity.pageSize
- )
+ if (hasNextPage(getState()) || reload) {
+ const { items, hasNextPage: paginatorHasNextPage } = await thisPaginator(pageSize)
+
+ if (!reload) {
+ loadedPages += 1
+ }
const getItemType = item => {
if (item.destAddresses) {
@@ -231,6 +239,15 @@ export const loadNextPage = () => async (dispatch, getState) => {
}
}
+/**
+ * resetActivity - Reset user activity history.
+ *
+ * @returns {() => void} Thunk
+ */
+export const resetActivity = () => () => {
+ paginator = null
+}
+
/**
* fetchActivityHistory - Fetch user activity history, including Balance, Payments, Invoices, Transactions etc.
*
@@ -242,7 +259,10 @@ export const fetchActivityHistory = () => dispatch => {
dispatch(fetchDescribeNetwork())
dispatch(fetchChannels())
dispatch(fetchBalance())
+
+ dispatch(resetActivity())
dispatch(loadNextPage())
+
dispatch({ type: FETCH_ACTIVITY_HISTORY_SUCCESS })
} catch (error) {
dispatch({ type: FETCH_ACTIVITY_HISTORY_FAILURE, error })
@@ -250,12 +270,25 @@ export const fetchActivityHistory = () => dispatch => {
}
/**
- * resetActivity - Reset user activity history.
+ * reloadActivityHistory - Reload activity history, including Balance, Payments, Invoices, Transactions etc.
*
- * @returns {() => void} Thunk
+ * @returns {(dispatch:Function) => void} Thunk
*/
-export const resetActivity = () => () => {
- paginator = null
+export const reloadActivityHistory = () => dispatch => {
+ dispatch({ type: FETCH_ACTIVITY_HISTORY })
+ try {
+ dispatch(fetchDescribeNetwork())
+ dispatch(fetchChannels())
+ dispatch(fetchBalance())
+
+ const itemsToLoad = loadedPages * config.activity.pageSize
+ dispatch(resetActivity())
+ dispatch(loadNextPage(itemsToLoad, true))
+
+ dispatch({ type: FETCH_ACTIVITY_HISTORY_SUCCESS })
+ } catch (error) {
+ dispatch({ type: FETCH_ACTIVITY_HISTORY_FAILURE, error })
+ }
}
// ------------------------------------