fix(wallet): fix activity time filter
Also optimize for no filter instead of given specific time range. Closes: #11717
This commit is contained in:
parent
2e1b60ab06
commit
d253ba8a2a
|
@ -429,4 +429,7 @@ QtObject:
|
|||
if (self.addresses == addresses and self.chainIds == chainIds):
|
||||
return
|
||||
self.setFilterAddresses(addresses)
|
||||
self.setFilterChains(chainIds)
|
||||
self.setFilterChains(chainIds)
|
||||
|
||||
proc noLimitTimestamp*(self: Controller): int {.slot.} =
|
||||
return backend_activity.noLimitTimestampForPeriod
|
||||
|
|
|
@ -12,7 +12,7 @@ import backend
|
|||
export response_type
|
||||
|
||||
# see status-go/services/wallet/activity/filter.go NoLimitTimestampForPeriod
|
||||
const noLimitTimestampForPeriod = 0
|
||||
const noLimitTimestampForPeriod* = 0
|
||||
|
||||
# Declared in services/wallet/activity/service.go
|
||||
const eventActivityFilteringDone*: string = "wallet-activity-filtering-done"
|
||||
|
|
|
@ -243,8 +243,8 @@ Column {
|
|||
StatusDateRangePicker {
|
||||
id: dialog
|
||||
anchors.centerIn: parent
|
||||
fromTimestamp: activityFilterStore.fromTimestamp
|
||||
toTimestamp: activityFilterStore.toTimestamp
|
||||
fromTimestamp: activityFilterStore.currentActivityStartTimestamp
|
||||
toTimestamp: new Date().valueOf()
|
||||
onNewRangeSet: {
|
||||
activityFilterStore.setCustomTimeRange(fromTimestamp, toTimestamp)
|
||||
activityFilterStore.setSelectedTimestamp(Constants.TransactionTimePeriod.Custom)
|
||||
|
|
|
@ -20,7 +20,7 @@ QtObject {
|
|||
savedAddressFilters.length !== 0
|
||||
|
||||
readonly property QtObject _d: QtObject {
|
||||
id: _d
|
||||
id: d
|
||||
|
||||
function toggleFilterState(filters, attribute, allFiltersCount) {
|
||||
let tempFilters = filters
|
||||
|
@ -48,79 +48,111 @@ QtObject {
|
|||
}
|
||||
return tempFilters
|
||||
}
|
||||
|
||||
property bool fromTimestampNoLimit: true
|
||||
property bool toTimestampNoLimit: true
|
||||
|
||||
function setFromTimestamp(value) {
|
||||
root.fromTimestamp = value
|
||||
fromTimestampNoLimit = false
|
||||
}
|
||||
function resetFromTimestamp() {
|
||||
root.fromTimestamp = 0
|
||||
fromTimestampNoLimit = true
|
||||
}
|
||||
|
||||
function setToTimestamp(value) {
|
||||
root.toTimestamp = value
|
||||
toTimestampNoLimit = false
|
||||
}
|
||||
|
||||
function resetToTimestamp() {
|
||||
root.toTimestamp = 0
|
||||
toTimestampNoLimit = true
|
||||
}
|
||||
}
|
||||
|
||||
// Time filters
|
||||
property int selectedTime: Constants.TransactionTimePeriod.All
|
||||
property double fromTimestamp: activityController.status.startTimestamp * 1000
|
||||
property double toTimestamp: new Date().valueOf()
|
||||
// If noLimitTimestamp or double timestamp value otherwise
|
||||
property double fromTimestamp: 0
|
||||
property double toTimestamp: 0
|
||||
readonly property double currentActivityStartTimestamp: activityController.status.startTimestamp * 1000.0
|
||||
function setSelectedTimestamp(selcTime) {
|
||||
selectedTime = selcTime
|
||||
switch(selectedTime) {
|
||||
case Constants.TransactionTimePeriod.All:
|
||||
fromTimestamp = 0
|
||||
toTimestamp = 0
|
||||
d.resetFromTimestamp()
|
||||
d.resetToTimestamp()
|
||||
break
|
||||
case Constants.TransactionTimePeriod.Today:
|
||||
let dt = new Date()
|
||||
fromTimestamp = dt.setHours(0,0,0,0).valueOf() // Today
|
||||
dt.setDate(dt.getDate() + 1) // next day...
|
||||
dt.setHours(0, 0, 0, -1) // ... but just 1ms before midnight -> whole day included
|
||||
toTimestamp = dt.valueOf()
|
||||
d.setFromTimestamp(dt.setHours(0,0,0,0).valueOf()) // Today
|
||||
d.resetToTimestamp()
|
||||
break
|
||||
case Constants.TransactionTimePeriod.Yesterday:
|
||||
let dt1 = new Date()
|
||||
dt1.setDate(dt1.getDate() - 1)
|
||||
dt1.setHours(0, 0, 0, 0)
|
||||
fromTimestamp = dt1.valueOf() // Yesterday
|
||||
d.setFromTimestamp(dt1.valueOf()) // Yesterday
|
||||
dt1.setDate(dt1.getDate() + 1)
|
||||
dt1.setHours(0, 0, 0, -1)
|
||||
toTimestamp = dt1.valueOf()
|
||||
d.setToTimestamp(dt1.valueOf())
|
||||
break
|
||||
case Constants.TransactionTimePeriod.ThisWeek:
|
||||
let dt2 = LocaleUtils.getFirstDayOfTheCurrentWeek()
|
||||
dt2.setHours(0, 0, 0, 0)
|
||||
fromTimestamp = dt2.valueOf() // First day of this week
|
||||
toTimestamp = new Date().valueOf() // Today
|
||||
d.setFromTimestamp(dt2.valueOf()) // First day of this week
|
||||
d.resetToTimestamp()
|
||||
break
|
||||
case Constants.TransactionTimePeriod.LastWeek:
|
||||
let dt3 = LocaleUtils.getFirstDayOfTheCurrentWeek()
|
||||
dt3.setDate(dt3.getDate() - 7)
|
||||
dt3.setHours(0, 0, 0, 0)
|
||||
fromTimestamp = dt3.valueOf() // First day of last week
|
||||
d.setFromTimestamp(dt3.valueOf()) // First day of last week
|
||||
dt3.setDate(dt3.getDate() + 6)
|
||||
dt3.setHours(23, 59, 59, 0)
|
||||
toTimestamp = dt3.valueOf() // Last day of last week
|
||||
d.setToTimestamp(dt3.valueOf()) // Last day of last week
|
||||
break
|
||||
case Constants.TransactionTimePeriod.ThisMonth:
|
||||
let dt4 = new Date()
|
||||
dt4.setDate(1)
|
||||
dt4.setHours(0, 0, 0, 0)
|
||||
fromTimestamp = dt4.valueOf() // This month
|
||||
toTimestamp = new Date().valueOf()
|
||||
d.setFromTimestamp(dt4.valueOf()) // This month
|
||||
d.resetToTimestamp()
|
||||
break
|
||||
case Constants.TransactionTimePeriod.LastMonth:
|
||||
let dt5 = new Date()
|
||||
dt5.setDate(1)
|
||||
dt5.setMonth(dt5.getMonth()-1)
|
||||
dt5.setHours(0, 0, 0, 0)
|
||||
fromTimestamp = dt5.valueOf() // Last month
|
||||
d.setFromTimestamp(dt5.valueOf()) // Last month
|
||||
dt5.setDate(new Date(dt5.getFullYear(), dt5.getMonth(), 0).getDate() + 2)
|
||||
dt5.setHours(0, 0, 0, -1)
|
||||
toTimestamp = dt5.valueOf()
|
||||
d.setToTimestamp(dt5.valueOf())
|
||||
break
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
|
||||
activityController.setFilterTime(root.fromTimestamp/1000, root.toTimestamp/1000)
|
||||
activityController.updateFilter()
|
||||
applyTimeRange()
|
||||
}
|
||||
function setCustomTimeRange(fromTimestamp, toTimestamp) {
|
||||
root.fromTimestamp = fromTimestamp
|
||||
root.toTimestamp = toTimestamp
|
||||
|
||||
activityController.setFilterTime(root.fromTimestamp/1000, root.toTimestamp/1000)
|
||||
function setCustomTimeRange(fromTimestamp, toTimestamp) {
|
||||
d.setFromTimestamp(fromTimestamp)
|
||||
d.setToTimestamp(toTimestamp)
|
||||
|
||||
applyTimeRange()
|
||||
}
|
||||
|
||||
function applyTimeRange() {
|
||||
const startTimestamp = d.fromTimestampNoLimit
|
||||
? activityController.noLimitTimestamp
|
||||
: fromTimestamp/1000
|
||||
const endTimestamp = d.toTimestampNoLimit
|
||||
? activityController.noLimitTimestamp
|
||||
: toTimestamp/1000
|
||||
activityController.setFilterTime(startTimestamp, endTimestamp)
|
||||
activityController.updateFilter()
|
||||
}
|
||||
|
||||
|
@ -128,7 +160,7 @@ QtObject {
|
|||
property var typeFilters: []
|
||||
function toggleType(type, allFiltersCount) {
|
||||
// update filters
|
||||
typeFilters = _d.toggleFilterState(typeFilters, type, allFiltersCount)
|
||||
typeFilters = d.toggleFilterState(typeFilters, type, allFiltersCount)
|
||||
// Set backend values
|
||||
activityController.setFilterType(JSON.stringify(typeFilters))
|
||||
activityController.updateFilter()
|
||||
|
@ -138,7 +170,7 @@ QtObject {
|
|||
property var statusFilters: []
|
||||
function toggleStatus(status, allFiltersCount) {
|
||||
// update filters
|
||||
statusFilters = _d.toggleFilterState(statusFilters, status, allFiltersCount)
|
||||
statusFilters = d.toggleFilterState(statusFilters, status, allFiltersCount)
|
||||
// Set backend values
|
||||
activityController.setFilterStatus(JSON.stringify(statusFilters))
|
||||
activityController.updateFilter()
|
||||
|
@ -149,7 +181,7 @@ QtObject {
|
|||
property var tokensFilter: []
|
||||
function toggleToken(symbol) {
|
||||
// update filters
|
||||
tokensFilter = _d.toggleFilterState(tokensFilter, symbol, tokensList.count)
|
||||
tokensFilter = d.toggleFilterState(tokensFilter, symbol, tokensList.count)
|
||||
// Set backend values
|
||||
activityController.setFilterAssets(JSON.stringify(tokensFilter), false)
|
||||
activityController.updateFilter()
|
||||
|
@ -161,7 +193,7 @@ QtObject {
|
|||
property var collectiblesFilter: []
|
||||
function toggleCollectibles(id) {
|
||||
// update filters
|
||||
collectiblesFilter = _d.toggleFilterState(collectiblesFilter, id, collectiblesList.count)
|
||||
collectiblesFilter = d.toggleFilterState(collectiblesFilter, id, collectiblesList.count)
|
||||
// TODO go side filtering is pending
|
||||
// activityController.setFilterCollectibles(JSON.stringify(collectiblesFilter))
|
||||
// activityController.updateFilter()
|
||||
|
@ -176,7 +208,7 @@ QtObject {
|
|||
}
|
||||
function toggleRecents(address) {
|
||||
// update filters
|
||||
recentsFilters = _d.toggleFilterState(recentsFilters, address, recentsList.count)
|
||||
recentsFilters = d.toggleFilterState(recentsFilters, address, recentsList.count)
|
||||
activityController.setFilterToAddresses(JSON.stringify(recentsFilters.concat(savedAddressFilters)))
|
||||
activityController.updateFilter()
|
||||
}
|
||||
|
@ -195,7 +227,7 @@ QtObject {
|
|||
property var savedAddressFilters: []
|
||||
function toggleSavedAddress(address) {
|
||||
// update filters
|
||||
savedAddressFilters = _d.toggleFilterState(savedAddressFilters, address, savedAddressList.count)
|
||||
savedAddressFilters = d.toggleFilterState(savedAddressFilters, address, savedAddressList.count)
|
||||
// Set backend values
|
||||
activityController.setFilterToAddresses(JSON.stringify(recentsFilters.concat(savedAddressFilters)))
|
||||
activityController.updateFilter()
|
||||
|
@ -206,7 +238,7 @@ QtObject {
|
|||
}
|
||||
|
||||
function applyAllFilters() {
|
||||
activityController.setFilterTime(fromTimestamp/1000, toTimestamp/1000)
|
||||
applyTimeRange()
|
||||
activityController.setFilterType(JSON.stringify(typeFilters))
|
||||
activityController.setFilterStatus(JSON.stringify(statusFilters))
|
||||
activityController.setFilterAssets(JSON.stringify(tokensFilter), false)
|
||||
|
@ -218,8 +250,8 @@ QtObject {
|
|||
|
||||
function resetAllFilters() {
|
||||
selectedTime = Constants.TransactionTimePeriod.All
|
||||
fromTimestamp = activityController.status.startTimestamp * 1000
|
||||
toTimestamp = new Date().valueOf()
|
||||
d.resetFromTimestamp()
|
||||
d.resetToTimestamp()
|
||||
typeFilters = []
|
||||
statusFilters = []
|
||||
tokensFilter = []
|
||||
|
|
Loading…
Reference in New Issue