Room Invites #118

Open
opened 2026-04-02 17:33:02 +00:00 by hodlbod · 16 comments
Owner

Looks pretty simple, just a create invite code and a code tag on join-room:

https://github.com/nostr-protocol/nips/blob/master/29.md

This will have to be combined with room invite codes. Probably the best thing to do for a first pass would be to add a "create invite" option to the RoomDetail menu which creates the same kind of link we create for the space invite, but with both a space and a room invite code included. This code will have to be used when joining rooms explicitly, but also parsed and used when joining spaces.

Related: https://github.com/coracle-social/zooid/issues/12

Looks pretty simple, just a create invite code and a code tag on join-room: https://github.com/nostr-protocol/nips/blob/master/29.md This will have to be combined with room invite codes. Probably the best thing to do for a first pass would be to add a "create invite" option to the RoomDetail menu which creates the same kind of link we create for the space invite, but with both a space and a room invite code included. This code will have to be used when joining rooms explicitly, but also parsed and used when joining spaces. Related: https://github.com/coracle-social/zooid/issues/12
hodlbod added this to the Future milestone 2026-04-02 17:33:02 +00:00
hodlbod added the design label 2026-04-02 18:56:50 +00:00
hodlbod removed this from the Future milestone 2026-04-02 18:57:08 +00:00
hodlbod added this to the Current milestone 2026-04-02 19:03:48 +00:00
hodlbod changed title from Room invite codes to Design oom invite codes 2026-04-02 19:11:45 +00:00
hodlbod changed title from Design oom invite codes to Design Room Invites 2026-04-02 19:11:52 +00:00
hodlbod changed title from Design Room Invites to Room Invites 2026-04-02 19:24:35 +00:00
hodlbod added this to the Spaces and Rooms project 2026-04-02 19:45:17 +00:00
Collaborator

Hi @hodlbod, I have understood this issue and have a clear picture of how to design this.

Just wanted to clarify two things:

  1. If a room invite is sent to someone who isn’t part of the space, the room invite itself will completely accommodate the space invite as well as the room invite, right?
  2. Should room invites also be shareable across other rooms, so users in different rooms within the same space can join directly via the invite?

If this aligns, I’d like to work on this. Could you assign this issue to me?

Thanks

Hi @hodlbod, I have understood this issue and have a clear picture of how to design this. Just wanted to clarify two things: 1. If a room invite is sent to someone who isn’t part of the space, the room invite itself will completely accommodate the space invite as well as the room invite, right? 2. Should room invites also be shareable across other rooms, so users in different rooms within the same space can join directly via the invite? If this aligns, I’d like to work on this. Could you assign this issue to me? Thanks
Author
Owner

1 — yes, all invites should include a space url and claim, as well as optionally an h and a code for the room invite.
2 — yes, invite links should be clickable from within flotilla. I believe this already exists in the form of navigating to the room and opening the join dialog with the invite url populated. The history gets a little goofy though, so special casing it might be an improvement.

1 — yes, all invites should include a space url and claim, as well as optionally an `h` and a `code` for the room invite. 2 — yes, invite links should be clickable from within flotilla. I believe this already exists in the form of navigating to the room and opening the join dialog with the invite url populated. The history gets a little goofy though, so special casing it might be an improvement.
sakshamjain was assigned by hodlbod 2026-04-02 21:32:41 +00:00
Collaborator

Hi @hodlbod ,

I am done with a preliminary iteration of this design. Currently, I have worked on the flow, main high-fidelity mockup screens and a minimal prototype.

Figma Link - https://www.figma.com/design/GkkFIIOBqEquBpqPMnRFB7/Flotilla-Design---Saksham-Jain?node-id=0-1&t=RBMP6dGduIszWsCC-1

Prototype Link - https://www.figma.com/proto/GkkFIIOBqEquBpqPMnRFB7/Flotilla-Design---Saksham-Jain?page-id=0%3A1&node-id=1-3&viewport=392%2C545%2C0.17&t=Fr6uAHoxKx6OnVkJ-1&scaling=min-zoom&content-scaling=fixed&starting-point-node-id=1%3A3

After your feedback, I will finalise the flow and then design the following parts.

  • Receiving-end screen designs (DM + Rooms)
  • Joining Modals (if any)
  • Complete the interaction states
  • Toast pop-up screens
  • Mobile viewport designs.

Glimpse:
image.png
image.png
image.png

Currently, my approach has been to make it as functional and as similar to the existing design as possible. There are a lot of improvements that could be done in terms of UI/UX and usability enhancement, but that would lead to an overhaul of the Room details modal. Do let me know if you would want me to work on that as well.

Hi @hodlbod , I am done with a preliminary iteration of this design. Currently, I have worked on the flow, main high-fidelity mockup screens and a minimal prototype. Figma Link - https://www.figma.com/design/GkkFIIOBqEquBpqPMnRFB7/Flotilla-Design---Saksham-Jain?node-id=0-1&t=RBMP6dGduIszWsCC-1 Prototype Link - https://www.figma.com/proto/GkkFIIOBqEquBpqPMnRFB7/Flotilla-Design---Saksham-Jain?page-id=0%3A1&node-id=1-3&viewport=392%2C545%2C0.17&t=Fr6uAHoxKx6OnVkJ-1&scaling=min-zoom&content-scaling=fixed&starting-point-node-id=1%3A3 After your feedback, I will finalise the flow and then design the following parts. - Receiving-end screen designs (DM + Rooms) - Joining Modals (if any) - Complete the interaction states - Toast pop-up screens - Mobile viewport designs. Glimpse: ![image.png](/attachments/885a20d3-a58d-4457-b620-9670e0aa4374) ![image.png](/attachments/db0188c2-32a1-43d5-bac8-234ae4f2c6ab) ![image.png](/attachments/f3832730-ade2-4d43-a6e1-925bf68a4f1d) Currently, my approach has been to make it as functional and as similar to the existing design as possible. There are a lot of improvements that could be done in terms of UI/UX and usability enhancement, but that would lead to an overhaul of the Room details modal. Do let me know if you would want me to work on that as well.
561 KiB
1.4 MiB
473 KiB
Author
Owner

Right now the members list has an "Add members" button on the member list. Would you suggest keeping that or removing it and replacing it with this new dialog? It seems odd to have it in two places, although I've noticed in practice the current placement is unwieldy. I do like the "Create invite" button being inline on the room form.

Right now the members list has an "Add members" button on the member list. Would you suggest keeping that or removing it and replacing it with this new dialog? It seems odd to have it in two places, although I've noticed in practice the current placement is unwieldy. I do like the "Create invite" button being inline on the room form.
Collaborator

Right now the members list has an "Add members" button

This button is not visible for regular users, It would be really helpful if you can also share a snippet how the current "Add members" list looks.

We can actually keep both functionalities, since both of them have slight variations in their working:

  1. The Add Members Button: It is a button that is specifically visible to admins / moderators and have the power to directly add members to the room (Members have the option to join the member list or not)
  2. The Invite People Button: It sends an invite in the DM of the members and gives them the option to accept the invite ot reject it.
> Right now the members list has an "Add members" button This button is not visible for regular users, It would be really helpful if you can also share a snippet how the current "Add members" list looks. We can actually keep both functionalities, since both of them have slight variations in their working: 1. The Add Members Button: It is a button that is specifically visible to admins / moderators and have the power to directly add members to the room (Members have the option to join the member list or not) 2. The Invite People Button: It sends an invite in the DM of the members and gives them the option to accept the invite ot reject it.
Author
Owner

Sure, attached is what the current add members stuff looks like.

For inviting via DM, I think we should validate that with users first by doing usability testing with invites. So let's leave it out for now. However, it occurs to me it might be helpful to have a share button here which invokes the native share dialog on Android/iOS. Want to take a look at adding that?

Sure, attached is what the current add members stuff looks like. For inviting via DM, I think we should validate that with users first by doing usability testing with invites. So let's leave it out for now. However, it occurs to me it might be helpful to have a share button here which invokes the native share dialog on Android/iOS. Want to take a look at adding that?
Collaborator

Got it, that makes sense.

Just to confirm, the idea is to add a Share button that triggers the native share dialog on mobile (Android/iOS), with the invite link pre-filled so users can share it across other apps like WhatsApp, Messages, etc., right?

to have a share button here

Secondly, should the placement of that button be inside the "Create a Room Invite" modal I am currently designing?

Got it, that makes sense. Just to confirm, the idea is to add a Share button that triggers the native share dialog on mobile (Android/iOS), with the invite link pre-filled so users can share it across other apps like WhatsApp, Messages, etc., right? > to have a share button here Secondly, should the placement of that button be inside the "Create a Room Invite" modal I am currently designing?
Author
Owner

Just to confirm, the idea is to add a Share button that triggers the native share dialog on mobile (Android/iOS), with the invite link pre-filled so users can share it across other apps like WhatsApp, Messages, etc., right?

Yep!

Secondly, should the placement of that button be inside the "Create a Room Invite" modal I am currently designing?

Yes, but I'm not sure exactly how it should be done. A good starting point would be to add a share button to SpaceInvite somewhere, and then copy that dialog for the RoomInvite. Feel free to make multiple design passes to fail left/right and experiment with different approaches.

> Just to confirm, the idea is to add a Share button that triggers the native share dialog on mobile (Android/iOS), with the invite link pre-filled so users can share it across other apps like WhatsApp, Messages, etc., right? Yep! > Secondly, should the placement of that button be inside the "Create a Room Invite" modal I am currently designing? Yes, but I'm not sure exactly how it should be done. A good starting point would be to add a share button to SpaceInvite somewhere, and then copy that dialog for the RoomInvite. Feel free to make multiple design passes to fail left/right and experiment with different approaches.
Collaborator

Feel free to make multiple design passes to fail left/right and experiment with different approaches.

Understood. I will share the iterations with you today.

> Feel free to make multiple design passes to fail left/right and experiment with different approaches. Understood. I will share the iterations with you today.
Collaborator

What are your opinions on these:
image.png

I found these to be clean iterations. I can share more approaches as well.

What are your opinions on these: ![image.png](/attachments/aaec2c5b-5f1d-4b4b-af62-58062b59f791) I found these to be clean iterations. I can share more approaches as well.
Author
Owner

Looks good, I think I prefer the one with the share button on the right. Did you want to implement this as well?

Looks good, I think I prefer the one with the share button on the right. Did you want to implement this as well?
Collaborator

I’d love to implement this. Although I haven’t worked with native Android/iOS environments before, I do have a strong background in web development.

I’m open to giving it a try with some guidance, or starting with a simpler version / one platform first.

Since I’m primarily in the design track for Summer of Bitcoin, I just wanted to check what you’d prefer.

I’d love to implement this. Although I haven’t worked with native Android/iOS environments before, I do have a strong background in web development. I’m open to giving it a try with some guidance, or starting with a simpler version / one platform first. Since I’m primarily in the design track for Summer of Bitcoin, I just wanted to check what you’d prefer.
Author
Owner

This shouldn't be too hard, you can use https://capacitorjs.com/docs/apis/share and it should work the same way everywhere. Feel free to just test on web and I can test on ios/android, but it also isn't difficult to test using an emulator. Just do pnpm build and then run the project in android studio or xcode. Up to you though. Let me know if you'd like to try developing, or we can leave this to another contributor.

This shouldn't be too hard, you can use https://capacitorjs.com/docs/apis/share and it should work the same way everywhere. Feel free to just test on web and I can test on ios/android, but it also isn't difficult to test using an emulator. Just do `pnpm build` and then run the project in android studio or xcode. Up to you though. Let me know if you'd like to try developing, or we can leave this to another contributor.
Collaborator

Thanks for the guidance, this makes sense.

I’d be happy to take this on. Since this can be handled via Capacitor, I’ll start with the web implementation using the Share API, and we can test it across platforms after.

Thanks for the guidance, this makes sense. I’d be happy to take this on. Since this can be handled via Capacitor, I’ll start with the web implementation using the Share API, and we can test it across platforms after.
Collaborator

Hi @hodlbod,

I had implemented this functionality via Capacitor earlier, and it’s working as expected on the web.

Screenshot 2026-04-13 173650.png Screenshot 2026-04-13 173804.png

However, while testing on Android (via Android Studio), I’m consistently facing an issue where the rest of the app works, but the Space screen renders completely blank.

I’ve spent the last couple of days debugging this and tried multiple approaches:

  • Different emulators/devices (most of them either crash or don’t run properly)
  • Rebuilds and clean setups
  • Verifying permissions and configs

At this point, I’m not sure if the issue is:

  • Specific to my Android Studio/emulator setup, or
  • Related to Spaces (possibly WebRTC / audio handling not working properly in emulator)

Sharing a short video for reference.

Would really appreciate your guidance on whether:

  1. This is a known limitation on Android/emulators, or
  2. There’s something specific I should check/debug further.

Thanks!

Hi @hodlbod, I had implemented this functionality via Capacitor earlier, and it’s working as expected on the web. <img width="1439" alt="Screenshot 2026-04-13 173650.png" src="attachments/db29f302-de77-459d-86e3-94f150ce60c9"> <img width="1439" alt="Screenshot 2026-04-13 173804.png" src="attachments/51358ec2-1231-4527-ac1f-430ebc80d53b"><video src="attachments/bd884182-c44f-4027-ac6c-59d3cca5bdf3" title="Screen_recording_20260413_171026.webm" controls></video> However, while testing on Android (via Android Studio), I’m consistently facing an issue where the rest of the app works, but the **Space screen renders completely blank**. I’ve spent the last couple of days debugging this and tried multiple approaches: * Different emulators/devices (most of them either crash or don’t run properly) * Rebuilds and clean setups * Verifying permissions and configs At this point, I’m not sure if the issue is: * Specific to my Android Studio/emulator setup, or * Related to Spaces (possibly WebRTC / audio handling not working properly in emulator) Sharing a short video for reference. Would really appreciate your guidance on whether: 1. This is a known limitation on Android/emulators, or 2. There’s something specific I should check/debug further. Thanks!
Author
Owner

This looks good, I think the blank spaces issue is a regression from last week; I pushed a fix in c740bd21d4

This looks good, I think the blank spaces issue is a regression from last week; I pushed a fix in c740bd21d434835b621e2bfdbfd5d9447d2f2b6f
sakshamjain was unassigned by hodlbod 2026-05-06 16:35:33 +00:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: coracle/flotilla#118