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

[Screen] Conversation Composer #1498

Open
nplasterer opened this issue Jan 10, 2025 · 14 comments · Fixed by #1513
Open

[Screen] Conversation Composer #1498

nplasterer opened this issue Jan 10, 2025 · 14 comments · Fixed by #1513
Assignees
Labels

Comments

@nplasterer
Copy link
Collaborator

nplasterer commented Jan 10, 2025

@nplasterer
Copy link
Collaborator Author

nplasterer commented Jan 10, 2025

@covrter can you give me a few visuals:

  • What it would look like to start typing a name and how the pop up to select a name would look?
  • What it would look like if I have a wallet address mixed in with the convos identities?

CleanShot 2025-01-13 at 13 26 17@2x

Updated 1/16 — here's the wallet address chip mixed in!

  • chip text is 0x1a2b…9999 (not that there is an elipsis character to use which is tidier than using 3 periods)
  • chip pfp gets the "default" avatar using the first 2 digits beyond the 0x — so in this case it's 1a

Image

@nplasterer
Copy link
Collaborator Author

Replaces
Image

@technoplato
Copy link
Collaborator

@nplasterer are we okay to consider sender-switching out of scope for this ticket?

CleanShot 2025-01-10 at 11 12 00@2x

@nplasterer
Copy link
Collaborator Author

Yes that is out of scope.

@nplasterer
Copy link
Collaborator Author

nplasterer commented Jan 16, 2025

Must

  • group creation errors are not surfaced it just looks like nothing happened when creation fails (adding self to group, bad keypackage etc..)
  • Identity look up should also match on name (sorry I was getting confused between username and display name - fixed by https://github.com/ephemeraHQ/converse-backend/pull/85)
  • The name look up should be inline with the selected names per designs
    • add “To” before the input field for clarity that you’re picking recipients (should be )
    • tapping a person chip shouldn’t delete it — it should select it; and then with keyboard “delete” key you can delete it or type over it (see iMessage and Messenger )
    • do not need a “clear” button in right of input field (bc it will now hold the chips too)
    • keep input focused even after I add a recipient (so keyboard stays up and I can quickly add more ppl) …
    • only time keyboard should be hidden on this view is when scrolling a long list of search results (I think)
  • add “no results” state for user search with share sheet tap — Loom, Figma
  • use new header UI style (taller, header on left, etc.)
  • remove “New convo” / “New group” in top right corner (it’s not useful unless it’s an entrypoint to setting group info priorto invitations, which we can treat as an incremental "new feature" for later)
  • Should immediately drop on screen with message and handle conversation lookup or creation and message send in background

Should

  • Should be an indicator that it's looking for names. When I type in Naomi and nothing happens its confusing. If no names are found it should indicate that after a timeout.

  • I can't send an image as a first message

  • include pfp in person chip

  • pasting a valid ethereum address that corresponds to an existing xmtp should immediately add that user to the pending group members chips after resolving the appropriate display value for the user

    • ie : username, display name, .eth address according to existing business logic and falling back to 0x... in the case that they have not created converse credentials yet
    • 0x only chips should remove 0x prefix and display first two hex values after the prefix in the avatar
  • pasting a 0x address that is on xmtp, but does not have any converse metadata (username, display name, etc) doesn't turn into a chip, it just sits in the input as text

  • allow space character in recipient search to enable finding people with spaces in display name (e.g. Billie Bob, Tiger Woods)

  • I compose a new message to a person who I’d “deleted” but not blocked. Composer opens the convo but my new message isn’t in the chat (but old one is) and convo isn’t added back to the conversations list (but should be)

  • A weird animation when entering the composer the keyboard is already open but the input field rises from the bottom independently (@thierryskoda on a fix for this)

@technoplato
Copy link
Collaborator

technoplato commented Jan 16, 2025

Compiling a first pass bug list

Must

  • group creation errors are not surfaced it just looks like nothing happened when creation fails (adding self to group, bad keypackage etc..)[x] Identity look up should also match on name

Should

  • Should be an indicator that it's looking for names. When I type in Naomi and nothing happens its confusing. If no names are found it should indicate that after a timeout.[ ] Should immediately drop on screen with message and handle conversation lookup or creation and message send in background[ ] The name look up should be inline with the selected names per designs[ ] A weird animation when entering the composer the keyboard is already open but the input field rises from the bottom independently[ ] I can't send an image as a first message

@nplasterer here's a loom addressing these: https://www.loom.com/share/0bea570bc1694c3ab6f2d3c1a6f47440 and the pr: https://github.com/ephemeraHQ/converse-app/pull/1532/files

@technoplato
Copy link
Collaborator

@technoplato
Copy link
Collaborator

@covrter type over it (see iMessage and Messenger is just a teeny complicated because to simplify this component the input box is always at the end. Is that groovy?

@technoplato
Copy link
Collaborator

Transcript of scope chat

00:01 Naomi's interpretation of performance in mobile applications, y'all. Okay. So this is kind of what I expect is how I expect the conversation to work for this B1 in a performance way. 00:14 Okay. It's so that you come into the conversation. Yes, and you add an address. Yes, and you add a different address. 00:22 Yes, and you add another one. Yes. Somewhere in the back end, or whatever, in the memcache, you have a list of addresses or inbox IDs at this point maybe if they're matched to condos their addresses right now okay they probably should stay addresses just for now yeah just in case those addresses don't 00:41 have inbox IDs right right okay so you have this list of four addresses in the mem cache and you nothing has happened right now nothing at all and then you go down here to this box, and you're like, hey, nice connecting, whatever. 00:57 And you hit this send button. What should happen immediately is that you should go into a group chat that has these addresses, and this message, blah, blah, blah, and the send box. 01:15 Like it should look exactly like conversation looks like immediately yeah and then in the background while the screen is showing you are like okay let's create a group yeah yeah okay so that's actually send the message yeah but like you land on the screen and the person's like also I'm cool right and 01:36 he hits send and also I'm super cool and he hits send well now he has three messages on the screen but he doesn't know what's happening in the background. 01:46 Now these three messages are sitting in like a memcash pool waiting to be sent. Okay, heard there. Now the rub is with DMs. 01:54 We can look up. We can actually look up and like plop you in your existing DM. And that takes a second. 02:01 But then we don't have that ability on group. So I can optimistically do this and we've held off on doing this because this is what I want to do. 02:08 But it's half baked because because you'll create a new group if If you access a group that you already belong, if you create a list of members for a group you already belong to, it's just going to create a new group. 02:19 Right, which is what we want. So what would happen in a scenario where you already have a group, like in the scenario where the protocol gives you a finding a group by members, would it pop you on the screen? 02:29 Then it's going to jump. And then you're going to send a couple messages and it's going to maybe show like a loading indicator or something and then it's going to refresh and there's going to load in all all the f****** past messages and maybe the group title changes. 02:42 It's not gonna jump. It's gonna be janky. But your fear whether you is create a separate second group. Well that's not my fear. 02:50 That's what's happening right now because we don't have the ability to give an elisted members check if there's a group. 02:54 But I'm saying that that's not a priority for many reasons is it like, if I take the time to go through the composer to add these four people instead of just going to the f****** index screen and searching. 03:06 You want a new group? I probably want a new group or I do that to search for old groups, but yeah, sometimes sometimes or like like if this is a group that I talk to frequently, I'm probably just going to click on it because it's in my like last f****** 15 groups or I'm going to search for it. 03:25 If it's if I don't even know that I have an existing group for it, who cares if I create a new one? 03:30 The message history is the only thing you gain if you go into your old group and maybe that context isn't necessarily like it's so not valuable that it's not in your main group and it's not recent. 03:43 Like this process is a pain in the blood. You know, like not not like saying you did a bad job. 03:50 No, no, no, it's more worked in scrolling on your lesson clicking a group. Yeah, it's like like I have like a group with like my family and I was like if I every time I went to talk to them like clicked, composed to find it, I'd be like going through my context searching for my sister. 04:02 That's a good point. So then the DM though So, did jumpies go ahead? Well, I'm not under select. We have a search on the inbox. 04:14 They would basically return conversations that matched. Was it the name? It was kind of weird, right? It was like, before we take the search box out of the inbox, we'd type in, I think it was a title of the chat. 04:29 So, it was also looking through your chat to see if you had chats that match. I have no idea how that worked. 04:36 And you tag all the members just like, tag all the members, just text, yeah. It was matching on the name of the group. 04:43 But if you look at the, uh, the name of the ball, there's just so much to know. But yeah, yeah. 04:47 True. Yeah. I was just thinking like, because the other thing we don't do yet, but we probably want to at some point is like, when you get to any composer, show some recommendations. 04:56 Show's your recent combos as well. Right. That's the short cut into. And that is that preview stuff that we're punting on because it's gonna it's so it's so edge-casey It's like you add three people and in the background. 05:09 It's like loading trying to find a group that has the I guess you say oh, okay Just in messenger when I go to recommendation People you talk exactly. 05:19 It's just like it's not who's f*** me. You go here It has this but it also just fills us with my suggested chats or whatever which is just another other. 05:30 Short cut towards getting it mitigates the thing where you're like suggested I can click that click that click that I already know exists I don't need to type this guy right so the problem with that is that you'd have to change your design because the way you have it designed right now it looks more 05:46 like an email well this is the same right it's just it's a it's a two-field yeah Yeah, watch our message because it's more obvious. 05:54 I don't want this guy and this guy. No, that's a different thing that we're talking about. I see the guys. 06:01 It's not recommended. That's the preview. Yeah, that's the preview. That's what I was talking about. I was talking about search. 06:07 When you pop up the composer, it on messenger shows your recent people you've talked to. Amory, my wife, right? Say no to the preview, right? 06:17 Ignore that, that's not there. And I'll say, who else is my brother, Zach, so I put them in there. And then it's giving you the same people. 06:27 The preview. Right. So what is my point of this? You were talking about suggestions. And you switched. I guess I was saying this here. 06:35 Like if it's somebody who's recent, it should be at the top. And as soon as you've entered somebody, it goes into preview mode. 06:44 Yeah, but that's its own thing. So what happened in the old combos was that they were using data from the transact like from the blockchain that was like find addresses that you have recently interacted with. 07:01 So like you know if I had like sent somebody an NFT if I had like you know sent them money if I had transacted with them on the blockchain they showed in the list which was like people I literally never wanted Okay, so this is doable and this is not like this is fairly easy and this is what I wanted 07:22 to do and we were holding off on doing it until we got the look up to list because I thought that was a complete behavior we wanted we didn't want to like do two things but this is doable the group is easy but then the DM if we if we immediately plopped on the DM screen will need a load um no I I think 07:38 it's the same that we can talk about that, so I can't let me. Well, no, we'll need the load state in the screen when you land. 07:44 Well, or some UX treatment, because it's going to jump. Let's talk through that. I think it's the same. So we just have one address. 07:52 Yeah. Well, before we get to handling that, just so I'm crystal clear, I'm going to leave it in. That's just like, we're saying, in the short term, it's fine if I'm accidentally creating multiple agree conversations with my wife and brother yeah because it's like and it's no big deal What's a good point 08:09 if you go to the composer you want a new group like if you're doing that it's a lot more work No, no way man. 08:14 I mean as a person who chats f****** constantly I don't know if I'm like in a group with okay, so it's a look at parents of my kids friends So I f****** don't know I have a group but I go to there and then I type them in and it's very very helpful to then see what we're talking about before And I message 08:32 does that messenger does that okay. We don't have it from month I'm just trying to get my arms around when and what I don't even like I think we need to be clear on what what that would look like So yeah, what happens in this Should we do DM first? 08:46 Well, I think sick with group and let's wrap it up. Yeah Because multiple entered anybody you enter into the composer field triggers the preview you for what conversation you're the previous pretty lightweight I think the preview has to be a little bit bigger so you add this so you you start typing in 09:06 this box so you click into this box and it opens the like the list the list so you type in the letter a yeah and it starts to populate like Andrew yeah And this list is literally just sorted by alphabetical order and best match to the letter a. 09:30 And what we're suggesting, or what Andrew is suggesting is that this is useless, there are like a million Andrews in here that I never, I don't even f****** know. 09:39 What Andrew's suggesting is that we're going to make a list instead that's like Andrew's message. Groups of Andrews, I think that's before you even type anything, though. 09:50 The suggestions? Well, both. Yes. You'd suggest them by default, but that means that you have an A character, then you can suggest a much better lesson, which is which. 09:58 So at the top here, Naomi, for me, can you write suggestions and like sorting algorithm? Like, these are different features. 10:06 Because like, the way we sort is separate from like the people you suggest at the beginning, but I don't, I'm kind to confuse where we're going for it. 10:13 Well, no, I said, this is what we do now, which is just like. It's a reggaex search in the chat room and name. 10:21 Yeah, it's pretty straightforward. Like reggaex on letter A, useless. And I guess we all probably feel this. It's like, when I'm looking for Andrew, I'm like, f***. 10:34 It's like, does Andrew own Andrew Dottie? Does he own Andrew C. Dottie? Does he own Andrew? or like what combinations of words do I have to put in before I get the Andrew that I'm trying to message? 10:45 So what we're saying is let's not even do this at all because it's not useful. Well, it has to be the fallback to the suggestions because the first, before you've ever messaged Andrew, you don't have any data. 10:57 You don't know who to go again, right? So we can keep it. Yeah, just put it appended to this, yeah. 11:03 But what we want is like the ideal scenarios is you type in letter A and you get suggestions. and the letter A would be Andrew's like message, group chats, group chats with Andrews on it. 11:20 Yeah, more f****** queries. And then it would be like, When you say messages in group G like DMs. Group names. 11:32 Oh, group name. Names with A in it. What is what is selecting a group name do from the composer? Well, like maybe I have a group that's like like you go to The Antelope high school and you're like, oh, I have a group that's like Antelope parents. 11:49 So it'll show Members of Antelope parents. No, it would it would show a group name. It's like Antelope parents And then you click that group name and it adds everybody in that group to your composer field What would happen if you could click this group name is it would probably say Antelope parents actually 12:06 what it would do. So you click Antelope parents, and it would take you out of the composer Because you're not composing anymore. 12:13 You're literally just going. All right. You're just going to the group. Oh, yeah, okay. Yeah If you if you have suggestions in here They already exist So there's no composing anymore. 12:26 It's just essentially a group search If if you have down here like so after you go through these then you have like things that include I and now you have like Andrew dot e who I've never messaged before and he's still in here for some reason and so I click on that and then you go back and now you have 12:47 and in the composer and your composer is like now Andrew dot e exists and you can do this whole cycle again so just to be sure here we're copying Miss Endure UX I just want to make sure we're not We are venting a new chapter. 13:03 I message I think we're I think it's messenger more like messenger face But yeah, the face of messenger. We don't because they spent billions on that like let's try to just copy it Okay, so that said that's not where we hear art today No, because that's not what our designs were and we didn't talk about 13:21 any of this before now That's totally I totally understand. Yes, so where do we cut out like? What do we get for March like what do we want to do for March 1st? 13:30 So for March 1st, I think and let's stick as close to what we have so we can so I think what I had originally talked about which is Okay, sorry, let's Let's get clear so out of these things which do we think are Most important. 13:49 I think the easiest ones to get would be messages with group name. This one is going to be costly. Group chat, Andrews. 14:02 Oh, what is it? I mean group chat, Andrews? Like any group chat that has somebody in the group with the name Andrew or any group chat that has somebody in the group with the letter A in their name. 14:14 Okay. It's going to be a member's search. This one's probably going to be the most costly. This one's gonna be hopefully pretty good. 14:21 Well no, we have this cache. Like you need to separate a little bit sometimes when you think about like what's the SDK allows and what we've got a cache in our mem cache from the client. 14:30 So we could probably, like what do you want and then we can probably do it. Like do we want all three of these? 14:35 Or just these I think we want all four. All four, and then. And I'll make that that list of four. 14:41 Cool, let's make that list of four. Clear right now. And then as far as the other thing is if you type in, and like I can easily plop you on the DM screen immediately, like you're saying, and I want that more, but I didn't want that UX jump. 14:54 Like we can do that while you're typing, I can like look up the conversation. We can, but. So on the suggestions, and correct me if I'm wrong here, we can get this straight from messenger. 15:08 Yeah, what do you, Terry, do you have a messenger? I'm like, I'm playing with it. Yeah, I was like, yeah, I think probably yes, but. 15:13 But I'm playing with IMSG and Messenger. I feel like Messenger's more enjoyable experience for me. It's, yeah, it's due to different UX. 15:24 So we just have to agree on what we want. It's message. I think messenger is like incremental to the IMSG UX. 15:33 It's how I'm understanding it, right? IMSG is just a certain thing. And messenger adds the concept of suggestions. Yeah. Yeah, yeah, yeah. 15:40 OK. Which makes it easier to do. You're a messenger. You're also doing high message. Yes. No, because we're not doing preview, which is like part of the message. 15:50 Oh, you're right. They all do preview, which is not doing it right away. You're right. You're right that messenger is just more stuck then. 15:58 Yeah, it has suggestions. It has groups like. I don't think it does previews. It does. And messenger. Yeah, yeah. Like here. 16:11 I have like a friend here, and I can see that's that's I message that's messenger Not yet, right? We want to do it So yeah, what I'm suggesting here is that when you click on Anne-Marie quarter It would just jump drop you into the DM with her not it's still wouldn't it wouldn't be a new message anymore 16:41 I create a message with Amory and you because I somehow have to get her into the composer field to add her as a member of a new group if that makes sense. 16:51 So what they do is if it's like yeah it's just someone individual it adds and then you add more but if you add like let's say I search for him and I can see that easily in this group it takes me to this group and then you cannot be there you are just so we can and do that flow. 17:06 So that flow would be, okay, but we still need to define suggestions, but I'm gonna re-draw the flow, okay? So you have the composer where you can put, where you can have an input feel and sending a message of your input boxes. 17:25 So if you click into this, it takes you to your suggestions, which we need to define all the things we want to suggest. 17:35 And if it is an individual, if it is just a person, Andrew, and you click on that, it's going to take you back to the composer, and it's going to be just Andrew here. 17:49 Hold on, hold on, don't ask questions, you're going to get through the flow. Not yet. It's just going to be Andrew here. 17:56 Then, and you can go back up here and you can click and add another person, and you can Do this cycle until you have 15 whatever 400 people in this f****** thing. 18:05 Yeah, okay, the other suggestion would be Group chats with Andrew in it Andrew Naomi And if you click this it drops you into the group chat Yeah The box and you can't get back to this flow unless you back out and you whatever you get back to the box in box If you click on A name, like, Antelopes, whatever 18:35 , that would also do this. A group name, yeah. Yeah, it would also go here. Okay, so in this triangle, so we're clear on this. 18:47 If there is an existing group chat and that's what you wanted, it'll just take you directly to the group chat and that's easy. 18:53 Because you already have the group ID here there. In this flow, you add Andrew and then you decide, But actually, I don't want to add a second person. 19:03 I actually was just trying to DM Andrew. So now you type in your message and you hit send. And then it shows you a DM with Andrew with the messages in it. 19:19 And probably your previous messages. Yeah, so there's going to be jump there. Well, the clarity here is that when you do this first triangle, what if we put in a men cache the group ID because by the time it takes them to fill out the message they were trying to send it. 19:37 We've loaded it here. Well we already have it because it's in cache already. Yeah. And so now you have the DMID. 19:45 So when he hits send you already have it and it can be instant. And the messages might be jumpy if that doesn't make sense. 19:53 So you shouldn't you have the scenario where you touched Andrew you found the group I do with Andrew but then he was like but then he was like actually I wanted to DM Andrew and Naomi so then you go back up here and you come here and you do another search and you see Naomi and you add it and now it's 20:13 Andrew and Naomi. At this point it's possible that there is already a group chat with Andrew and Naomi but they didn't get that out of this list so we're gonna take the risk of creating a new group chat. 20:30 Yeah, that's fair. Fair. I mean, that's fair. Yeah. That's what we say we're going to do this for a while. 20:37 No, this is going to, this is I think what we can do. This is immediate. Immediately. Yeah. What I mean is, ideally, you would be looking that up, but we can't look it up now, so we're just not going to. 20:47 Yeah, it's a costly call to put two inbox IDs and look it up. And I can only do that with whatever we've already fetched in cash locally, so you might miss anyway. 20:55 Like, we're only looking at 20 conversations when you start the app right now, so you probably wouldn't be able to look at a client site either, yeah. 21:02 So right now, you're going to create a new one, but we can, what can we do here? You can look up group names already. 21:12 And, And a group of people. So like, Andrew and Naomi was already in here and if I actually really wanted to message Andrew and Naomi, hopefully I would have clicked on it. 21:20 This is assuming we have support for having all the conversations you're in loaded, which we're not doing right now. Uh, for a suggestion? 21:30 Yes. So, if I want, if I'm in analogues, but that's my 21st conversation, right now, we literally just decreased our page size to 20. 21:37 So? Yeah, but I think it should be, There is an expectation that things like this take time. Like, there could be a loading, like, when you're, when you're searching, there is a level of user allowance for it to not be instant. 21:54 I think it's just, yeah, for someone that has a thousand conversations, like Shane, this might be an issue, but for most people to be fine. 22:02 OK. Like, how many conversations do you really have? Yeah, well, let's not worry about performance then until 1,000. Yeah, so if we're creating news for consumers messaging. 22:15 So we want to be in a situation where someone I have a hundred conversations. You're right. I'm f****** like a thousand. 22:21 Like if you look, I'm just said right now, do you have a thousand conversations? Sorry. This isn't, well, I'm just going to say, yeah, it's going to say a thousand person conversations is a solvable issue. 22:31 It's just not, not now. Yeah, yeah. And as we like organically grow, that may happen. So what's up that page shows? 22:40 I have. If you will have still explanations, it's just will be able to fetch in the background, and I think it'll be something that once you check for that, you'll be able to know if pagination is done, if it's still loading, you sure loader, until we've fully done, and then you show no results. 22:55 Yeah. And the group names, and then if you click a group name, which Andrew and Naomi, which it wouldn't be Andrew and Naomi, because that would be a DM, it would be Andrew. 23:04 No, no. This is, well, sorry, I am talking to myself. Yeah. I'm talking like I'm Mike. Okay. Yeah. Gotcha. That's it. 23:11 I'm not used to talking like I'm like, so that's what they're doing. So in true Naomi, click, if I click a group, it's in here, if I click an individual, it goes back to composer and puts them in the field, and then when I hit send on the message, I immediately create the group and, well, I immediately 23:26 ploppy in the group and create in the background and then populate the messages once those are, for a DM, for a DM, we're going to be able to look up. 23:34 Well, the DM might not exist. You will know if the DM exists when you click him. before you type the message, hopefully. 23:41 Yes. Look, if a DM exists, it's- I'm saying the message loading, so that could have some latency, but we can pre-fetch the messages as soon as you get into the field, and those will be in the cache. 23:50 It's still the race condition on it if I just set A and go, and it takes two seconds to load the message list, which is- You would have, I mean, if you click Andrew and it drops Andrew in here, it takes you, like, you know it, you have a DM with him, you find the DM, you're storing the DM. 24:05 The time that it, like, unless you're a f****** bot, But the time it takes you to type H like pre-fetch messages for every conversation on the upload So you'll have Oh, do we because there's a wait there was some jumping maybe we'll look into that Okay, I'm sure like now that um, but even iMessage and 24:22 messenger sometimes they do some jumping like it's not Okay, I just want to be very clear on my performances because if we're going for like top tier And then I'm kind of making some compromises here, then it doesn't feel like premium performance But I want it to be but I also know yeah like let's let's 24:37 figure out where we're making the compromises. Yeah, I mean Let's see how much like let me see the job and then I'll tell you if it's good enough. 24:44 Well, I need a right Can you can you create me a dm with like 300 messages? I was just seeing one maybe I was doing something wrong, but so right now there is because we have no paginations But like in two weeks, when we have graduations, we only look 20. 25:05 Perfect. It should be. Cool. So I have one. Yes. I get back to the elbow here, the very bottom elbow line. 25:12 So we're a de facto creating a forked group for people. Not forked. I mean, it's using a duplicate group. It is a second group with different message history with the same members. 25:25 And I would love to prevent that. And I have no problem letting it happen for a short period of time. 25:30 Well, what a network is still small and probably hopefully people are getting the right choices out of the first list And it's a it's hard to get into that elbow, but if you do it does it sucks So the question about this elbow is if the person was in here, and I just didn't see it and didn't click it 25:45 Yeah, it should exist so it should be fast Exactly. So maybe there is a fork here. Wait, wait, wait, wait. 25:51 Say that again. It should never happen if you think about it Say the thing that shouldn't happen. I search Andrew. 25:57 Yeah, I search Andrew and I see Andrew and Naomi in this group But for some reason, I didn't see it. 26:02 So I clicked Andrew instead, and it put him down here. And then I was like, well, I actually want to talk to Andrew and Naomi. 26:07 So I go back up, and I go in here, and I type in on. It shows me Naomi. Now I click Naomi. 26:12 Now it's Andrew and Naomi in here. But Andrew and Naomi have a group already. But we don't know if we're going to keep adding people. 26:19 So we can't dump them into the group right now. We can pre-touch the messages. Because they have chosen the page. 26:24 Yeah, they've chosen the path of adding people. So now it's Andrew and Naomi. It's a stupid question, how do we get this in the first place? 26:33 So I type in Andrew, and am I looking through our existing conversation list? Go back to Naomi, I'll finish your trend of thought here. 26:41 But this is important, so we'll come back there. Yeah. So now I have Andrew and Naomi in this group, and then I hit send, and because the group already existed, it knows that it existed, and the complexity here is there could be multiple Andrew and Naomi groups, we'd have to do a zero on it. 27:02 Like the first group that Andrew and Naomi are in. Or the last one that has a message in it. So you'd have to do like a recency. 27:10 Like because there is a potential that there are multiple groups that are just Andrew and Naomi. Yeah. You would say, are there any groups of Andrew and Naomi? 27:19 Give me the last one, just Andrew and Naomi. Yeah. Just Andrew and Naomi. Give me the one that has the last like the most recently sent message. 27:28 Yeah And 99.9% we should always find that through because we load all the Conversation anyway Right I guess well now we're loading the 20 conversations. 27:42 Yeah, but I'm talking in two weeks Okay, like once we have I can't do this right. I can't do this. 27:48 Well, we'll do this right now with 4x4 We'll just I'm gonna increase that page size would wait. No, no, I would wait. 27:56 Do it like that in two weeks with our paginations. And we're going to be able to see if it's still loading conversation and show a loader. 28:03 So I mean, you're going to be able to know if I'm still loading conversation or not. So you're going to be able to show good UX. 28:11 So I mean, no, that just feels overcompkin for what we're trying to do. So because to get this, I mean, I was doing, that's what I have my draft PR for right now. 28:22 I'm creating a member hash based off the members we fetch, the conversations we fetch, and then I'm doing that find on that member hash. 28:29 We could do a, I mean, it's just less performant to go through and loop through everything, every time. So keep the hash. 28:34 And so right now when we fetch our conversations, we're creating a hash based on the list of members for their address, based on their addresses. 28:42 So in order to get this, I've already loaded that. So yeah, there would be a little bit of loading there, But if we just increase the initial conversation load size then that will likely go away for most users Yeah, so let me do that and then I'll go back to the high way to include I will not play with 29:00 that first Okay, because I want to see first if once we have pagination so we can like loop quickly 10 at a time And if that's fast enough, it's gonna be better UX for people when opening the app Okay, because we're gonna use the same query and I want people when they open the app to be more instant 29:18 I don't want them to load 40 yeah, well now it's persisted if we get that persistent yeah, but the most up-to-date in one yeah, but yeah, you're right it's gonna be persistent in which you get 90% of the first load will be a little bit longer yeah, and I think that's okay yeah, so I think since everything 29:36 is persisted and in cash I think we'll never create a duplicate group yeah we can we should not yeah I don't want to unless for Shane that has a thousand conversation because this might take a while to load. 29:49 But once it's slowly that's in touch. It's just objects. It's one zero point one percent cases. Okay, so just zero point one percent. 29:57 There you go. Love that. But for what it's worth? Conversation, that's anyone on the network can make a bunch of groups with Andrew and Naomi. 30:05 So we do. Yeah, I'm gonna say some other app they're making people get groups every time they tell you. Yeah, whatever. 30:12 We have to handle. Oh, Oh shit, yeah. This suggestion, are we showing just the allow the one? I guess, right? 30:18 Yeah, yeah. Just, you know, like, with consent? Yeah, yeah, yeah, yeah. We suggest you message these people you blog. Okay, so this is what I was gonna do with them. 30:31 I think yes. Let's say like, it's funny. Let's say like, you send me a message and it's unknown, like I haven't checked your request. 30:38 And I'm like, oh, I need to text Andrew, I'm not searching Andrew. So like what will happen because you're not going to be in there because you're in the unknown So as a new recipe and the unknowns are fine, right? 30:51 Like unknowns are returning that's that last thing the Andrew Okay, so if okay, so I'm gonna see this with the content that's like you sent me a message, but I haven't approved it Why don't you see any of that because what if I'm listening correctly? 31:03 I sent you a message you haven't seen. Yeah Now you start to message me. Yeah, your DM just works. You just message me and And by virtue of you starting that conversation, that's the consent. 31:14 Okay, but it's going to be the same conversation or. So, super edge case. It's basically like you're free tapping consent and joining that conversation, but through the composer, which is a great idea. 31:25 Hold on, hold on. That's a great question. And I need to think about it. Okay, so we need to walk through another scenario here about unknown consent. 31:37 How does everybody feel about this can you say the user story again? So I I sent her a message no no, no, no, that's what we're getting to are you done with this? 31:47 I've agreed about you want to take a picture of it I know it's on this recording, but do you want to take a clear picture for you? 31:55 Yeah, until Google canceled it You can't use anything Google creates So we're gonna erase this we're gonna talk about I'm going to talk about unknowing incentives. 32:06 One product. And what do you do in that situation? OK. So what I'm talking about is app like Gritchhat basics is so hard because of edge cases. 32:19 OK. OK. So we're going to have two clients here. We're going to have Mike. And we're going to have Andrew. 32:34 Okay, so Mike is on his phone and Andrew is on his phone and they're at a conference and they're like, hey, let's connect and Mike's like cool and Andrew's like, I'll send you a message and then Andrew sends Mike a message. 32:49 So Andrew messages Mike, implicitly inside of the protocol, Andrew can sense to talking to Mike. 33:03 Okay, so he has a message here that's like Mike, because he created it. And then Mike comes in here and Mike's like, oh, I thought Andrew was going to message me, but I don't see it. 33:15 And I don't understand how this UI works. So I'm just going to message him. So then Mike comes into his composer. 33:22 So Mike goes into his composer. Mike's in his composer. And he goes out and he's like, this is Guy Andrew in my suggestions. 33:34 And he's not going to see Andrew in here because it looks for approved conversations, things that you are actually interacting with, in the top, in the top. 33:46 Yeah, yeah, and then down here it's gonna be like oh here's Andrew from this conference I think that was his freaking handle and he's gonna click on it. 33:55 Yeah, and it's gonna take him into this composer Okay It's gonna say there is no approved conversation with Andrew So I don't have a group ID wait hold on hold on. 34:12 Okay. What does consent like me if there's no approved? you approved him but he oh because he didn't message me that's what he didn't approve me he has not approved you but I just want to say something here I think it's gonna be still pretty easy for us to show that there's an unknown conversation unknown 34:29 not declined so yeah but we can show the preview of it yeah pretty easily that's what I'm saying yeah so okay so that's what I'm saying is that you don't have a group ID from from this however you're like okay I don't have a group ID maybe find maybe look to see if there's an unknown one yeah yeah exactly 34:48 it's like okay I don't have an approved one maybe there's an unknown one with this guy yeah and it looks to see if there's an unknown one yeah and it's like oh I found an unknown thing from Mike that you have been consented to yet so I think we should show you the preview here no no I don't think we 35:06 can show the preview here because we don't know this user's intent maybe he wanted to message Andrew and and he also met Josh at the conference. 35:14 We have to keep this open. You have to now be able to add Josh. I don't know where I came up with Josh. 35:21 We can still show that why can we show the preview? Just like an i-mess, you can still add people while showing the preview. 35:26 You can still show the preview. Check out the UX. I feel like, are you sure you can do that performantly? 35:32 Yes, if you can send the cash, why not? So you guys want to put preview into scope? Because if we do- I don't know if I want to put in a scope from March 1st. 35:40 Okay, because if we put preview in this view, then it's going to be preview for everything because we can't just have a weird preview for our the one person you haven't Yeah, that's what I've been saying like loading the mess and plopping them on another screen is terrible. 35:52 I think we can easily do it. If it's going to pass, I don't know. We can test that with a protocol, but I think it's easily doable. 35:59 And I think 90% is going to be chashed. I think it's I mean everyone wants it. It may be easy. 36:07 I would say, yeah, I would just be careful. I don't know. I treat it as a bonus. Let me do it at the end. 36:14 I'll come back. Let's do the optimistic pop them on the screen first. Now we know like okay, unknown consent. We're gonna add those to suggested this as well. 36:23 Not to the suggested this. After this. No? Okay. I think you'd You'd rather want to see that you have a conversation with Andrew. 36:32 Is this sketch? Hold on, hold on. No, we're not yet. So I'm saying preview is out of scope. We're not going to show that Andrew already messaged you. 36:40 Previous nice to have. I think it should be better. I agree with you. Let's back to it. Let's come back to it. 36:45 Yeah. And then we can talk about that. So the risk of it if you don't show that Andrew has already messaged you, you know that it exists because you just looked it up in the thing so you had the group ID. 36:55 You want to keep it open so that he can add another person here. You don't want to close this down then you type in hey good to meet you whatever you hit send The risk here and then and then it goes. 37:08 There's an unknown conversation It sends this message and now you see the message that he has sent and you're like oh Andrew had already messaged me It is a weird experience because at this point when you sent the message if Andrew said hey, it was nice to meet you What do you think about getting dinner 37:22 and then you respond and say hey? It was nice to meet you. What do you think about getting dinner? But this send of the message would consent. 37:33 So you wouldn't have to see a box that says approve Andrew. The send actually would consent. So you would never see the weird UI that's like, Why is it weird? 37:43 Well, it's not weird. I don't think it's weird. I think I love seeing that. So the case that you're talking about is that we're going to put preview and scope. 37:52 But if we put preview and scope for this scenario, we're putting preview and scope for all scenarios. Yeah, it would be it be all or nothing. 37:59 I want to come back. I want to get the group minute. I don't I mean, I think it should be fine, but it is also like. 38:05 So if preview is in scope, sorry, just to put a bell on this. If preview is in scope, you click on Andrew, you go here. 38:11 It doesn't have an approved conversation. It looks it finds an unknown one. It loads the screen. You're going to prove or deny and and however, it's going to be another screen because it's not going to be this screen with the proven deny. 38:25 It's going to be the composer screen with the proven deny. If we're going to really get into designing the state, there's no proven deny because you are trying to prove it. 38:36 He approved you. Yeah. Yeah. That's a good idea. Okay. If you're messaging a person, like you implicit, it's implicit consent. 38:45 Okay. Yeah. This is a new time. This is a new view. That's why I'm going to, I think I want to make it a separate, I want to make an optimistic composer, new conversation screen. 38:53 I think optimistic, in my opinion, is better preview than optimistic. It's better to have preview than optimistic. That's what I think. 39:03 But. Okay. Okay, so if we're putting this changes everything, we might have to go through this whole f****** thing again, because preview is a hard one. 39:09 No, no, no. Let's keep it like that. Well, no, but we have to, I think everything is doable, so like, Well, yeah, everything is doable, everything in technology is doable. 39:18 But if we're putting preview in scope, if you have 400 messages, we have to do something different on this screen than this screen. 39:29 So you're not just taking this screen and putting it in a smaller screen with the word composer on top. No, what do you mean? 39:36 We're just loading 10 messages and showing them. 10 messages. Yeah. That's an implementation. Do you tell that we need to scope? 39:42 The composer only shows the last 10 messages. You can't scroll forever on this screen. You can scroll forever. Okay. But that's it. 39:52 I don't know it could even be scrolling. It might be. I don't know. It's the same. What is the downside of just leaving out a scope and then racing through the scope making it great and then just doing it after the fact? 40:06 I just don't want to, like, over stuff our first plan. I want to nail the first milestone instead of coming up in February 25th, and then be like, oh, we just barely finished. 40:17 The only case that preview is really, really helpful is this weird f****** edge case where I meet Mike at a conference. 40:23 So I don't feel like I need it right now. I also like it for group look up. It's nice. As a weirdo. 40:29 Yeah. It's if you meet Mike at a conference and you don't understand how or request tab works. Yeah, try to message them on hotel Wi-Fi. 40:36 It's a tradition. Well, you don't understand how a request tab works. Like, if you understood how the request tab works, you would have just went to his requests and seen that Andrew had already messaged him and he wouldn't gone through this composer flow. 40:48 But I'm still going to do the optimistic. I'm going do optimistic first, because it's easier. And then we'll get the preview in. 40:57 I'm going to do optimistic. Get all this shit. Well, this is also a new scope, too. You suggestions and stuff. 41:04 But we're saying that the suggestions have to happen. They're more value, the value that they add is that you're not creating duplicate groups. 41:14 The suggestions should be the same as stopping duplicate groups. If you can suggest a group, you can stop a duplicate group. 41:23 And so that's why I wanted to come back there. We still have to load all of the groups. We still have to be able to look up group, I membership them. 41:34 I do, but I have to load it like that makes the I if I can load all of your conversations and not have a limit then that's like super simple, but then if you have to like look for the hash and then page through everything for search results, I'm not really sure Like that just seems overly complicated 41:52 . So the way it is,

@nplasterer
Copy link
Collaborator Author

nplasterer commented Jan 23, 2025

A small piece of context from the call today

MVP

  • Visually appealing, supports dark mode, supports android
  • Prevents to the best of our ability duplicate groups
    • Ranking search
      • first 5 dms I've messaged before with this word in the persons name
        • clicking this will add the partner in the dm to the composer list
      • first 5 groups that have a member with this query in their meta data (display name/username/etc)
        • clicking this will immediately navigate me to the conversation
      • first 5 groups that have this query in the name
        • clicking this will immediately navigate me to the conversation
      • The rest of dms, groups, and group names that match outside of the first 5
      • Anything that matches this query

Out of scope

  • Preview conversation
  • Suggest people to talk to
  • Pasting an address to chip
  • Attaching an image on first message send

@technoplato
Copy link
Collaborator

technoplato commented Jan 28, 2025

@thierryskoda handing this off to you as discussed January 28, 2025 am

#1569

loom status: https://www.loom.com/share/77a21e47914e4fd79361b58370a020f9

member searching is functional and has a handful of tests written - the primary piece to finish here is optimistic conversation creation / message sending

@thierryskoda
Copy link
Collaborator

thierryskoda commented Feb 6, 2025

Bugs:

  • Empty state and loading not taking account the keyboard
  • Background color of search list
  • When creating a new group, the transition is fast but looks clunky
  • Can't scroll search list results
  • First time loading seems very long. Return some results as soon as we have some? (or after few secs)
  • Created a new DM and message seems to have sent but didn't see it in the conversation and still new creating conversation view. (seems to be protocol error)
  • Make sure to have the last message when adding a conversation to conversation list. Created a new conversation and didn't see the last message when i went back to conversation list
  • Hit slop on search text input
  • Haptic when selecting chip and removing chip?

@covrter
Copy link
Collaborator

covrter commented Feb 13, 2025

VQA tracking comment

Note that the composer is quite buggy (known) so I am only able to QA a lil bit so far.

  • Let's focus the text input immediately when the view opens (so keyboard is up, cursor is in there)
  • When a chip is selected, the cursor shouldn't be visible/active
  • VQA figma in-progress

@humanagent
Copy link
Collaborator

humanagent commented Feb 15, 2025

Image

[] Composer is showing a different address than the one im talking to (i had a previous existing conversation with 0xa9bFE9aDA6D816E4A7A1e03d19043C521423655C

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants