Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ios : Creer une DM avec un Externe #876

Closed
mcalinghee opened this issue Sep 18, 2023 · 6 comments · Fixed by #883
Closed

ios : Creer une DM avec un Externe #876

mcalinghee opened this issue Sep 18, 2023 · 6 comments · Fixed by #883

Comments

@mcalinghee
Copy link

mcalinghee commented Sep 18, 2023

Steps to reproduce

  1. Sur iOS, avec un compte interne, creer un message direct avec un externe (existant ou pas)
  2. Envoyer un message
  3. Revenir sur l'ecran d'Accueil

Outcome

What did you expect?

Sur l'ecran d'Accueil, dans le fil de discussion, on peut voir la discussion avec l'externe

What happened instead?

  • Sur l'ecran d'Accueil, dans le fil de discussion, on ne voit pas le salon (Message Direct) avec l'externe et donc ne peut revenir dans ce salon pour dialoguer avec l'externe.
  • En revanche :
    • on peut s'apercevoir que le salon (Message Direct) avec l'externe est bien présent sur Tchap-web
    • si le salon a été créé dans Tchap-Web avec un compte interne => sur iOS, on voit bien les salons (Message Direct) avec des externes sur l'ecran d'Accueil sous l'onglet Personnes

Your phone model

No response

Operating system version

No response

Application version

2.4.8

Homeserver

No response

Will you send logs?

No

@mcalinghee
Copy link
Author

Pour investiguer, on peut regarder l'appel URL effectue lors de la creation de la room sur Tchap-web ou Android et de comparer avec notre probleme sur iOS

@NicolasBuquet
Copy link
Contributor

Peut-être lié au fait que sur iOS, lorsque l'on invite un externe en DM, il n'est pas possible d'écrire un premier message suite à l'invitation (premier message impossible avant acceptation de l'invitation, sinon, souci de chiffrement car ce premier message avant acceptation sera définitivement chiffré pour l'invité).
Ce premier message est possible et même demandé si l'on invite depuis le client web.

@NicolasBuquet
Copy link
Contributor

Sur Tchap iOS 2.5.0 en test, l'invitation d'un externe à un salon DM fonctionne mais présente un défaut majeur.

Après envoi de l'invitation, celle-ci ne semble pas reçue dans l'application de l'externe lancée sur simulateur.

Mais en se rendant sur le compte externe dans les paramètres utilisateur puis en revenant sur l'interface générale des salons, celle-ci se rafraîchit et l'invitation est alors visible.

L'accepter permet de rejoindre le salon, qui est alors bien listée sur la version web 4.3.8 dans la liste des Direct Messages.

Par contre, cette room DM n'est pas visible sur iOS (ni en Direct Messages, ni en salon classique).

Lors d'un premier essai, elle était visible sur Android 2.9.2 en Direct Message. Et elle est devenue visible sur iOS.

Lors d'un second essai, elle n'est plus visible sur Android que dans les salons généraux ( et plus dans les DM), et elle n'apparaît plus sur iOS. Elle st toujours listée dans le DM sur web.

@NicolasBuquet
Copy link
Contributor

Le roomLevel peut-il être en cause ?

@NicolasBuquet
Copy link
Contributor

NicolasBuquet commented Oct 2, 2023

La cause du problème est trouvée : il y a un bout de code spécifique qui masque les rooms DM avec les externes si le directUserId de ces rooms est un email (et non un Matrix ID).

Riot/Modules/Common/Recents/DataSources/RecentDataSources.m :

- (NSArray<id<MXRoomSummaryProtocol>> *)allChatsRoomCellDataArray
{
    // Tchap: Hide the rooms created to invite some non-tchap contact by email.
    NSMutableArray<id<MXRoomSummaryProtocol>> *rooms = [NSMutableArray new];
    for (MXRoom *room in self.recentsListService.allChatsRoomListData.rooms)
    {
        if (room.isDirect && [MXTools isEmailAddress:room.directUserId])
        {
            continue;
        }
        [rooms addObject:room];
    }
    return rooms;
}

Et idem pour la meethode breadcrumbsRoomCellDataArray.

Lorsqu'un utilisateur externe est invité sur Tchap, son user ID est son email.

Lorsqu'un utilisateur externe rejoint Tchap, son user ID devient un Matrix ID.

Dans le cas qui nous intéresse, si une room DM comporte encore un user ID d'externe au format email, c'est que cet externe n'a pas encore accepté l'invitation.

A partir de là, lui envoyer un message serait inutile car s'il n'a pas encore rejoint Tchap, il n'a pas de clés de chiffrement, et tout message envoyé sera définitivement chiffré pour lui.

Donc ce filtrage sert ou a servi à éviter que les premiers messages d'une room DM soient chiffrés à jamais.

Depuis, il y a eu d'autres travaux d'effectuer au niveau UI pour empêcher la saisie de message dans une room DM "non prête". Ce filtrage est donc peut-être devenu inutile.

Ce filtrage n'est pas présent sur Android ou web.

Problème constaté

En pre-prod, le back-end ne remplace pas le user ID de l'invité par un Matrix ID quand l'invité rejoint Tchap.

image

En prod, le user ID semble être remplacé par un Matrix ID (testé par Yoan).

A vérifier

  • la prod et la pre-pro sont-elles ISO fonctionnellement à ce sujet ?
  • vérifier sur iOS si, en supprimant le filtrage, on peut donc voir et entrer dans un salon DM "non prêt", mais que la saisie de message est impossible.

Si ce dernier point d'avère vrai, alors il suffira dans un premier temps de supprimer le filtrage sur iOS.

@NicolasBuquet NicolasBuquet moved this to En étude in Roadmap Produit Oct 3, 2023
@NicolasBuquet NicolasBuquet moved this from En étude to prêt pour le sprint in Roadmap Produit Oct 3, 2023
@odelcroi odelcroi changed the title Creer une DM avec un Externe ios : Creer une DM avec un Externe Oct 3, 2023
@NicolasBuquet
Copy link
Contributor

NicolasBuquet commented Oct 3, 2023

Voici le cheminement d'écran lors de l'invitation d'un externe sous Tchap iOS 2.4.7.

dm-externe

Ecran 1 :

  • tant que l'externe n'a pas créé de compte sur Tchap, le salon présente l'entête d'attente du correspondant et ne présente pas de zone de saisie en bas d'écran

Ecran 2 :

  • l'externe a créé son compte sur Tchap et l'a donc validé par le lien reçu dans l'email de confirmation. Il a donc un Matrix ID (affiché à la place de l'email dans cet écran). Les échanges peuvent donc être chiffrés. Le salon ne présente plus l'entête d'attente du correspondant et affiche la zone de saisie en bas d'écran

Ecran 3 :

  • l'externe a accepté l'invitation et a rejoint le salon DM. Son matrix ID a été remplacé par son email.

Cela signifie que l'on peut retirer le filtrage d'affichage de salon DM externe en attente sur la liste principale des salon, car même si on rentre dans ce salon, si l'externe n'a pas créé son compte, la zone de saisie sera absente, et aucun message ne pourra lui être envoyé (et donc rester définitivement chiffré).

Ce processus a été testé sur pre-prod et prod et fonctionne de la même manière sur chacune.

@NicolasBuquet NicolasBuquet moved this from prêt pour le sprint to sprint en cours - WIP in Roadmap Produit Oct 3, 2023
@github-project-automation github-project-automation bot moved this from sprint en cours - WIP to déployé en prod in Roadmap Produit Oct 5, 2023
@odelcroi odelcroi moved this from déployé en prod to beta phase / infra à déployer in Roadmap Produit Oct 10, 2023
@yostyle yostyle moved this from beta phase / infra à déployer to déployé en prod in Roadmap Produit Oct 24, 2023
@odelcroi odelcroi moved this from déployé en prod to done in Roadmap Produit Jan 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: done
Development

Successfully merging a pull request may close this issue.

2 participants