From 6704bdfc414cdd065a72296aa47fe3c8c95d615b Mon Sep 17 00:00:00 2001 From: relativistic electron Date: Fri, 25 Feb 2022 10:00:27 +0100 Subject: [PATCH 001/317] poc check chaintip --- .../specter/managers/wallet_manager.py | 29 +++++++++++++++++ .../templates/includes/sidebar/sidebar.jinja | 31 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/cryptoadvance/specter/managers/wallet_manager.py b/src/cryptoadvance/specter/managers/wallet_manager.py index ffc67a7f8f..c894c7a2a4 100644 --- a/src/cryptoadvance/specter/managers/wallet_manager.py +++ b/src/cryptoadvance/specter/managers/wallet_manager.py @@ -19,6 +19,10 @@ purposes, ) +from apscheduler.schedulers.background import BackgroundScheduler +import time +import atexit + logger = logging.getLogger(__name__) @@ -48,6 +52,31 @@ def __init__( # define different wallet classes for liquid and bitcoin self.WalletClass = LWallet if is_liquid(chain) else Wallet self.update(data_folder, rpc, chain) + self.chaintips = None + + def update_if_chaintip_changed(): + if self.rpc: + newchaintips = self.rpc.getchaintips() + if self.chaintips != newchaintips: + self.chaintips = newchaintips + logger.info(self.chaintips) + self.update() + else: + logger.info("do nothing") + + if ( + os.environ.get("WERKZEUG_RUN_MAIN") != "true" + ): # in debug mode flask initializes everything twice. This env checks if it is already running + scheduler = BackgroundScheduler() + scheduler.add_job( + func=update_if_chaintip_changed, + trigger="interval", + seconds=5, + max_instances=1, + ) + atexit.register(lambda: scheduler.shutdown(wait=False)) + scheduler.start() + print("scheduler activated") def update(self, data_folder=None, rpc=None, chain=None, use_threading=True): if self.is_loading: diff --git a/src/cryptoadvance/specter/templates/includes/sidebar/sidebar.jinja b/src/cryptoadvance/specter/templates/includes/sidebar/sidebar.jinja index c334e35856..8aca25c8c6 100644 --- a/src/cryptoadvance/specter/templates/includes/sidebar/sidebar.jinja +++ b/src/cryptoadvance/specter/templates/includes/sidebar/sidebar.jinja @@ -224,6 +224,37 @@ {% include "services/sidebar_services_list.jinja" %} {{ sidebar_btn(url_for('services_endpoint.choose'), 'Choose plugins', 'btn_plugins') }}
+ + + + +