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.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
|
||||
# currently we don't set error for emaillike recipients to avoid just that
|
||||
self.logger.debug('payment identifier resolve done')
|
||||
@@ -492,6 +492,11 @@ class SendTab(QWidget, MessageBoxMixin, Logger):
|
||||
self.show_error(pi.error)
|
||||
self.do_clear()
|
||||
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()
|
||||
|
||||
def get_message(self):
|
||||
|
||||
@@ -301,14 +301,12 @@ class PaymentIdentifier(Logger):
|
||||
try:
|
||||
if self.emaillike or self.domainlike:
|
||||
# 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:
|
||||
self.openalias_data = data
|
||||
self.logger.debug(f'OA: {data!r}')
|
||||
name = data.get('name')
|
||||
address = data.get('address')
|
||||
key = self.emaillike if self.emaillike else self.domainlike
|
||||
self.contacts[key] = ('openalias', name)
|
||||
if not data.get('validated'):
|
||||
self.warning = _(
|
||||
'WARNING: the alias "{}" could not be validated via an additional '
|
||||
@@ -639,8 +637,7 @@ class PaymentIdentifier(Logger):
|
||||
amount = lnaddr.get_amount_sat()
|
||||
return pubkey, amount, description
|
||||
|
||||
async def resolve_openalias(self) -> Optional[dict]:
|
||||
key = self.emaillike if self.emaillike else self.domainlike
|
||||
async def resolve_openalias(self, key: str) -> Optional[dict]:
|
||||
# TODO: below check needed? we already matched RE_EMAIL/RE_DOMAIN
|
||||
# if not (('.' in key) and ('<' not in key) and (' ' not in key)):
|
||||
# return None
|
||||
|
||||
Reference in New Issue
Block a user