diff --git a/backend/src/api/explorer/channels.api.ts b/backend/src/api/explorer/channels.api.ts index 768d5d1e1..56f2e4ac3 100644 --- a/backend/src/api/explorer/channels.api.ts +++ b/backend/src/api/explorer/channels.api.ts @@ -533,6 +533,23 @@ class ChannelsApi { logger.err('$setChannelsInactive() error: ' + (e instanceof Error ? e.message : e)); } } + + public async $getLatestChannelUpdateForNode(publicKey: string): Promise { + try { + const query = ` + SELECT MAX(UNIX_TIMESTAMP(updated_at)) as updated_at + FROM channels + WHERE node1_public_key = ? + `; + const [rows]: any[] = await DB.query(query, [publicKey]); + if (rows.length > 0) { + return rows[0].updated_at; + } + } catch (e) { + logger.err(`Can't getLatestChannelUpdateForNode for ${publicKey}. Reason ${e instanceof Error ? e.message : e}`); + } + return 0; + } } export default new ChannelsApi(); diff --git a/backend/src/tasks/lightning/network-sync.service.ts b/backend/src/tasks/lightning/network-sync.service.ts index 8d6d64d66..b9b7df92c 100644 --- a/backend/src/tasks/lightning/network-sync.service.ts +++ b/backend/src/tasks/lightning/network-sync.service.ts @@ -63,6 +63,9 @@ class NetworkSyncService { let deletedSockets = 0; const graphNodesPubkeys: string[] = []; for (const node of nodes) { + const latestUpdated = await channelsApi.$getLatestChannelUpdateForNode(node.pub_key); + node.last_update = Math.max(node.last_update, latestUpdated); + await nodesApi.$saveNode(node); graphNodesPubkeys.push(node.pub_key); ++progress; diff --git a/frontend/src/app/components/bisq-master-page/bisq-master-page.component.html b/frontend/src/app/components/bisq-master-page/bisq-master-page.component.html index dfd0f0695..d07f9d60c 100644 --- a/frontend/src/app/components/bisq-master-page/bisq-master-page.component.html +++ b/frontend/src/app/components/bisq-master-page/bisq-master-page.component.html @@ -2,7 +2,36 @@