diff --git a/electrum/gui/qt/send_tab.py b/electrum/gui/qt/send_tab.py index fcd2753b0..59e9cfcd8 100644 --- a/electrum/gui/qt/send_tab.py +++ b/electrum/gui/qt/send_tab.py @@ -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): diff --git a/electrum/payment_identifier.py b/electrum/payment_identifier.py index dd65a36dc..4d618b41c 100644 --- a/electrum/payment_identifier.py +++ b/electrum/payment_identifier.py @@ -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