swaps: factor out pubkey_to_rgb_color into core lib
This commit is contained in:
@@ -13,9 +13,8 @@ from electrum.logging import get_logger
|
|||||||
from electrum.transaction import PartialTxOutput, PartialTransaction
|
from electrum.transaction import PartialTxOutput, PartialTransaction
|
||||||
from electrum.util import (NotEnoughFunds, NoDynamicFeeEstimates, profiler, get_asyncio_loop, age,
|
from electrum.util import (NotEnoughFunds, NoDynamicFeeEstimates, profiler, get_asyncio_loop, age,
|
||||||
wait_for2)
|
wait_for2)
|
||||||
from electrum.submarine_swaps import NostrTransport, SwapServerTransport
|
from electrum.submarine_swaps import NostrTransport, SwapServerTransport, pubkey_to_rgb_color
|
||||||
from electrum.fee_policy import FeePolicy
|
from electrum.fee_policy import FeePolicy
|
||||||
from electrum.crypto import sha256
|
|
||||||
|
|
||||||
from electrum.gui import messages
|
from electrum.gui import messages
|
||||||
|
|
||||||
@@ -70,14 +69,6 @@ class QESwapServerNPubListModel(QAbstractListModel):
|
|||||||
self._services = []
|
self._services = []
|
||||||
self.endResetModel()
|
self.endResetModel()
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def str_to_color(color_input: str) -> QColor:
|
|
||||||
input_hash = int.from_bytes(sha256(color_input), byteorder="big")
|
|
||||||
r = (input_hash & 0xFF0000) >> 16
|
|
||||||
g = (input_hash & 0x00FF00) >> 8
|
|
||||||
b = input_hash & 0x0000FF
|
|
||||||
return QColor(r, g, b)
|
|
||||||
|
|
||||||
def offer_to_model(self, x: 'SwapOffer'):
|
def offer_to_model(self, x: 'SwapOffer'):
|
||||||
return {
|
return {
|
||||||
'npub': x.server_npub,
|
'npub': x.server_npub,
|
||||||
@@ -89,7 +80,7 @@ class QESwapServerNPubListModel(QAbstractListModel):
|
|||||||
'max_reverse_amount': x.pairs.max_reverse,
|
'max_reverse_amount': x.pairs.max_reverse,
|
||||||
'timestamp': age(x.timestamp),
|
'timestamp': age(x.timestamp),
|
||||||
'pow_bits': x.pow_bits,
|
'pow_bits': x.pow_bits,
|
||||||
'color': self.str_to_color(x.server_pubkey),
|
'color': QColor(*pubkey_to_rgb_color(x.server_pubkey)),
|
||||||
}
|
}
|
||||||
|
|
||||||
def updateModel(self, items: Sequence['SwapOffer']):
|
def updateModel(self, items: Sequence['SwapOffer']):
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ from electrum.util import NotEnoughFunds, NoDynamicFeeEstimates, UserCancelled
|
|||||||
from electrum.bitcoin import DummyAddress
|
from electrum.bitcoin import DummyAddress
|
||||||
from electrum.transaction import PartialTxOutput, PartialTransaction
|
from electrum.transaction import PartialTxOutput, PartialTransaction
|
||||||
from electrum.fee_policy import FeePolicy
|
from electrum.fee_policy import FeePolicy
|
||||||
from electrum.crypto import sha256
|
from electrum.submarine_swaps import NostrTransport, pubkey_to_rgb_color
|
||||||
from electrum.submarine_swaps import NostrTransport
|
|
||||||
|
|
||||||
from electrum.gui import messages
|
from electrum.gui import messages
|
||||||
from . import util
|
from . import util
|
||||||
@@ -519,14 +518,7 @@ class SwapServerDialog(WindowModalDialog, QtEventListener):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _pubkey_to_q_icon(server_pubkey: str) -> QIcon:
|
def _pubkey_to_q_icon(server_pubkey: str) -> QIcon:
|
||||||
def str_to_rgb(color_input: str) -> int:
|
color = QColor(*pubkey_to_rgb_color(server_pubkey))
|
||||||
input_hash = int.from_bytes(sha256(color_input), byteorder="big")
|
|
||||||
r = (input_hash & 0xFF0000) >> 16
|
|
||||||
g = (input_hash & 0x00FF00) >> 8
|
|
||||||
b = input_hash & 0x0000FF
|
|
||||||
return (r << 16) | (g << 8) | b
|
|
||||||
|
|
||||||
color = QColor(str_to_rgb(server_pubkey))
|
|
||||||
color_pixmap = QPixmap(100, 100)
|
color_pixmap = QPixmap(100, 100)
|
||||||
color_pixmap.fill(color)
|
color_pixmap.fill(color)
|
||||||
return QIcon(color_pixmap)
|
return QIcon(color_pixmap)
|
||||||
|
|||||||
@@ -186,6 +186,16 @@ class SwapData(StoredObject):
|
|||||||
return self._payment_pending or bool(self.funding_txid)
|
return self._payment_pending or bool(self.funding_txid)
|
||||||
|
|
||||||
|
|
||||||
|
def pubkey_to_rgb_color(swapserver_pubkey: str) -> Tuple[int, int, int]:
|
||||||
|
assert isinstance(swapserver_pubkey, str), type(swapserver_pubkey)
|
||||||
|
assert len(swapserver_pubkey) == 64, len(swapserver_pubkey)
|
||||||
|
input_hash = int.from_bytes(sha256(swapserver_pubkey), byteorder="big")
|
||||||
|
r = (input_hash & 0xFF0000) >> 16
|
||||||
|
g = (input_hash & 0x00FF00) >> 8
|
||||||
|
b = input_hash & 0x0000FF
|
||||||
|
return r, g, b
|
||||||
|
|
||||||
|
|
||||||
class SwapManager(Logger):
|
class SwapManager(Logger):
|
||||||
|
|
||||||
network: Optional['Network'] = None
|
network: Optional['Network'] = None
|
||||||
|
|||||||
Reference in New Issue
Block a user