status-im / status-desktop

Status Desktop client made in Nim & QML
https://status.app
Mozilla Public License 2.0
291 stars 78 forks source link

Support ENS names in share and parse urls #11403

Open MishkaRogachev opened 1 year ago

MishkaRogachev commented 1 year ago

Continue https://github.com/status-im/status-desktop/issues/10851

Description

Add api function and parseUserURLWithENS and shareUserURLWithENS implementation to messenger_share_urls.go. Parsing shared url with ens name should ask mailservers for a contact by ENS name

Right now, we support passing a chat key, but we need to support an ENS name as well as per https://github.com/vacp2p/rfc/pull/602#discussion_r1213035855

Acceptance Criteria

John-44 commented 1 year ago

@MishkaRogachev it might be better if we just share chat keys for ens name users as a temp solution, as we are going to completely rewrite and re architect how ens works in the future. Not worth spending time on this now IMHO

John-44 commented 1 year ago

I propose postponing this item until at least the 0.19 release

jrainville commented 1 year ago

@MishkaRogachev how far along were you?

MishkaRogachev commented 1 year ago

@jrainville @John-44 I've been working on it for a few days now, but I don't really like the result. The thing is that the necessary functionality is implemented in ENSService here, and it's very messy to dump the whole api into messenger. Besides, there is already ENSResolver, which partially duplicates the functionality of ENSService. What I'm trying now is to refactor the common code to add the function of getting the public key by name. But it's not working (melting smile).

On other hand i would prefer to have some common tool to call other services with messenger

jrainville commented 1 year ago

@MishkaRogachev alright then, let's drop it and focus on it another time then

John-44 commented 1 year ago

@jrainville @John-44 I've been working on it for a few days now, but I don't really like the result. The thing is that the necessary functionality is implemented in ENSService here, and it's very messy to dump the whole api into messenger. Besides, there is already ENSResolver, which partially duplicates the functionality of ENSService. What I'm trying now is to refactor the common code to add the function of getting the public key by name. But it's not working (melting smile).

On other hand i would prefer to have some common tool to call other services with messenger

@MishkaRogachev everything to do with our current ENS integration needs to be thrown away and we need to start again, because there is soo soo much missing and soo much that needs to be done differently. We are going to do this at some point next year, hence why I don't think we should invest any more than the absolute minimum amount in the current ENS functionality as we know we are going to be throwing it away.

The once thing we need to make sure is working, is that when a user who is using and ENS name shares a link to their profile, that link includes their status chat key. As long as this works we are good for now.

jrainville commented 1 year ago

@MishkaRogachev can you confirm that when a user with an ENS name shares their URL, it uses the "normal" contact link and not the ens link?

MishkaRogachev commented 1 year ago

@MishkaRogachev can you confirm that when a user with an ENS name shares their URL, it uses the "normal" contact link and not the ens link?

It depends on what endpoint the client is using, if it is ShareUserURLWithENS then we can't parse it yet. But we can make a crutch on the client side: if /u is not followed by zQ3sh, we can parse the url in nim and request pubkey from ENSService. Is a desktop-side crutch not as scary as a status-go crutch? :)

jrainville commented 1 year ago

What I mean is that when going in the Profile Modal, the URL should always be the "normal" Share URL, ie something like this: https://status.app/u/Ow==#zQ3shtdTkTVyx886T8MDhmFEChkJ7EdGLUVfrdaB7TSdFNGZE and that, even when when the user has an ENS name.

If it needs a "patch", then yes, 100% do it in Nim or QML so that we only call the "normal" share URL functions

MishkaRogachev commented 1 year ago

ShareUserURLWithENS

What I mean is that when going in the Profile Modal, the URL should always be the "normal" Share URL, ie something like this: https://status.app/u/Ow==#zQ3shtdTkTVyx886T8MDhmFEChkJ7EdGLUVfrdaB7TSdFNGZE and that, even when when the user has an ENS name.

I see that we're only using shareUserUrlWithData here, so it should be fine