payment_identifier: move adding openalias to contacts out of _do_resolve.
This fixes "cannot pickle '_thread.RLock' object" when paying from Contacts tab
This commit is contained in:
@@ -483,7 +483,7 @@ class SendTab(QWidget, MessageBoxMixin, Logger):
|
|||||||
self.prepare_for_send_tab_network_lookup()
|
self.prepare_for_send_tab_network_lookup()
|
||||||
self.payto_e.payment_identifier.resolve(on_finished=self.resolve_done_signal.emit)
|
self.payto_e.payment_identifier.resolve(on_finished=self.resolve_done_signal.emit)
|
||||||
|
|
||||||
def on_resolve_done(self, pi):
|
def on_resolve_done(self, pi: 'PaymentIdentifier'):
|
||||||
# TODO: resolve can happen while typing, we don't want message dialogs to pop up
|
# TODO: resolve can happen while typing, we don't want message dialogs to pop up
|
||||||
# currently we don't set error for emaillike recipients to avoid just that
|
# currently we don't set error for emaillike recipients to avoid just that
|
||||||
self.logger.debug('payment identifier resolve done')
|
self.logger.debug('payment identifier resolve done')
|
||||||
@@ -492,6 +492,11 @@ class SendTab(QWidget, MessageBoxMixin, Logger):
|
|||||||
self.show_error(pi.error)
|
self.show_error(pi.error)
|
||||||
self.do_clear()
|
self.do_clear()
|
||||||
return
|
return
|
||||||
|
# if openalias add openalias to contacts
|
||||||
|
if pi.type == PaymentIdentifierType.OPENALIAS:
|
||||||
|
key = pi.emaillike if pi.emaillike else pi.domainlike
|
||||||
|
pi.contacts[key] = ('openalias', pi.openalias_data.get('name'))
|
||||||
|
|
||||||
self.update_fields()
|
self.update_fields()
|
||||||
|
|
||||||
def get_message(self):
|
def get_message(self):
|
||||||
|
|||||||
@@ -301,14 +301,12 @@ class PaymentIdentifier(Logger):
|
|||||||
try:
|
try:
|
||||||
if self.emaillike or self.domainlike:
|
if self.emaillike or self.domainlike:
|
||||||
# TODO: parallel lookup?
|
# TODO: parallel lookup?
|
||||||
data = await self.resolve_openalias()
|
key = self.emaillike if self.emaillike else self.domainlike
|
||||||
|
data = await self.resolve_openalias(key)
|
||||||
if data:
|
if data:
|
||||||
self.openalias_data = data
|
self.openalias_data = data
|
||||||
self.logger.debug(f'OA: {data!r}')
|
self.logger.debug(f'OA: {data!r}')
|
||||||
name = data.get('name')
|
|
||||||
address = data.get('address')
|
address = data.get('address')
|
||||||
key = self.emaillike if self.emaillike else self.domainlike
|
|
||||||
self.contacts[key] = ('openalias', name)
|
|
||||||
if not data.get('validated'):
|
if not data.get('validated'):
|
||||||
self.warning = _(
|
self.warning = _(
|
||||||
'WARNING: the alias "{}" could not be validated via an additional '
|
'WARNING: the alias "{}" could not be validated via an additional '
|
||||||
@@ -639,8 +637,7 @@ class PaymentIdentifier(Logger):
|
|||||||
amount = lnaddr.get_amount_sat()
|
amount = lnaddr.get_amount_sat()
|
||||||
return pubkey, amount, description
|
return pubkey, amount, description
|
||||||
|
|
||||||
async def resolve_openalias(self) -> Optional[dict]:
|
async def resolve_openalias(self, key: str) -> Optional[dict]:
|
||||||
key = self.emaillike if self.emaillike else self.domainlike
|
|
||||||
# TODO: below check needed? we already matched RE_EMAIL/RE_DOMAIN
|
# TODO: below check needed? we already matched RE_EMAIL/RE_DOMAIN
|
||||||
# if not (('.' in key) and ('<' not in key) and (' ' not in key)):
|
# if not (('.' in key) and ('<' not in key) and (' ' not in key)):
|
||||||
# return None
|
# return None
|
||||||
|
|||||||
Reference in New Issue
Block a user