mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-01 17:27:53 +00:00
feat(wallet) api to retrieve last activity timestamp
Bumps status-go to include the new API endpoint. Integrate the new API endpoint with the ActivityFilterPanel. Closes #11169
This commit is contained in:
parent
bea4c8c2ad
commit
eb0406b556
@ -1,4 +1,4 @@
|
||||
import NimQml, logging, std/json, sequtils, sugar, options, strutils
|
||||
import NimQml, logging, std/json, sequtils, sugar, options, strutils, times
|
||||
import tables, stint, sets
|
||||
|
||||
import model
|
||||
@ -52,6 +52,8 @@ QtObject:
|
||||
# call updateAssetsIdentities after updating chainIds
|
||||
chainIds: seq[int]
|
||||
|
||||
startTimestamp: int
|
||||
|
||||
proc setup(self: Controller) =
|
||||
self.QObject.setup
|
||||
|
||||
@ -224,6 +226,22 @@ QtObject:
|
||||
|
||||
self.currentActivityFilter.types = types
|
||||
|
||||
proc startTimestampChanged*(self: Controller) {.signal.}
|
||||
|
||||
proc getOldestActivityTimestamp(self: Controller): int {.slot.} =
|
||||
let resJson = backend_activity.getOldestActivityTimestamp(self.addresses)
|
||||
if resJson.error != nil or resJson.result.kind != JInt:
|
||||
error "error fetching oldest activity timestamp: ", resJson.error, ", ", resJson.result.kind
|
||||
return
|
||||
|
||||
return resJson.result.getInt()
|
||||
|
||||
# Call this method on every data update (ideally only if updates are before the last timestamp retrieved)
|
||||
# This depends on self.addresses being set, call on every address change
|
||||
proc updateStartTimestamp*(self: Controller) {.slot.} =
|
||||
self.startTimestamp = self.getOldestActivityTimestamp()
|
||||
self.startTimestampChanged()
|
||||
|
||||
proc newController*(transactionsModule: transactions_module.AccessInterface,
|
||||
currencyService: currency_service.Service,
|
||||
tokenService: token_service.Service,
|
||||
@ -322,6 +340,7 @@ QtObject:
|
||||
|
||||
proc setFilterAddresses*(self: Controller, addresses: seq[string]) =
|
||||
self.addresses = addresses
|
||||
self.updateStartTimestamp()
|
||||
|
||||
proc setFilterToAddresses*(self: Controller, addresses: seq[string]) =
|
||||
self.currentActivityFilter.counterpartyAddresses = addresses
|
||||
@ -361,4 +380,17 @@ QtObject:
|
||||
return
|
||||
|
||||
let result = json.to(response.result, backend_activity.GetAllRecipientsResponse)
|
||||
self.recipientsModel.addAddresses(result.addresses, self.recipientsModel.getCount(), result.hasMore)
|
||||
self.recipientsModel.addAddresses(result.addresses, self.recipientsModel.getCount(), result.hasMore)
|
||||
|
||||
proc getStartTimestamp*(self: Controller): int {.slot.} =
|
||||
return if self.startTimestamp > 0:
|
||||
self.startTimestamp
|
||||
else:
|
||||
int(times.parse("2000-01-01", "yyyy-MM-dd").toTime().toUnix())
|
||||
|
||||
QtProperty[int] startTimestamp:
|
||||
read = getStartTimestamp
|
||||
notify = startTimestampChanged
|
||||
|
||||
proc updateFilterBase(self: Controller) {.slot.} =
|
||||
self.updateStartTimestamp()
|
||||
|
@ -313,4 +313,7 @@ type GetAllRecipientsResponse* = object
|
||||
|
||||
rpc(getAllRecipients, "wallet"):
|
||||
offset: int
|
||||
limit: int
|
||||
limit: int
|
||||
|
||||
rpc(getOldestActivityTimestamp, "wallet"):
|
||||
addresses: seq[string]
|
||||
|
@ -18,6 +18,10 @@ Flow {
|
||||
|
||||
spacing: 8
|
||||
|
||||
Component.onCompleted: {
|
||||
activityFilterStore.updateFilterBase()
|
||||
}
|
||||
|
||||
StatusRoundButton {
|
||||
id: filterButton
|
||||
width: 32
|
||||
|
@ -18,8 +18,7 @@ QtObject {
|
||||
|
||||
// Time filters
|
||||
property int selectedTime: Constants.TransactionTimePeriod.All
|
||||
// To-do get this from the backend once oldest Tx timestamp is available
|
||||
property double fromTimestamp
|
||||
property double fromTimestamp: activityController.startTimestamp * 1000
|
||||
property double toTimestamp: new Date().valueOf()
|
||||
function setSelectedTimestamp(selcTime) {
|
||||
selectedTime = selcTime
|
||||
@ -173,4 +172,8 @@ QtObject {
|
||||
}
|
||||
return tempFilters
|
||||
}
|
||||
|
||||
function updateFilterBase() {
|
||||
activityController.updateFilterBase()
|
||||
}
|
||||
}
|
||||
|
@ -241,7 +241,6 @@ QtObject {
|
||||
|
||||
property bool marketHistoryIsLoading: Global.appIsReady? walletSectionAllTokens.marketHistoryIsLoading : false
|
||||
|
||||
// TODO: range until we optimize to cache the data and abuse the requests
|
||||
function fetchHistoricalBalanceForTokenAsJson(address, tokenSymbol, currencySymbol, timeIntervalEnum) {
|
||||
if (Global.appIsReady)
|
||||
walletSectionAllTokens.fetchHistoricalBalanceForTokenAsJson(address, tokenSymbol, currencySymbol, timeIntervalEnum)
|
||||
|
2
vendor/status-go
vendored
2
vendor/status-go
vendored
@ -1 +1 @@
|
||||
Subproject commit bf54a577805671df7f07c69b414184764b79e091
|
||||
Subproject commit ea7a3890755b25856ec8f8da7bdda0189a3fcc68
|
Loading…
x
Reference in New Issue
Block a user