Improve Room Feature - #12
Conversation
…onStorage is empty or undefined
…ly method on PersistentStorage.set(key, value)
…arily via 6-digit code and temporary link
…alid keyRoom; Tidied up _joinKeyRoom method
|
Have you tested the code? The message and file transfer functions don't seem to work. |
…xpiration countdown end and on cancel
I overlooked two occurences when refactoring .ip to .roomId on server/index.js Now everything should be working fine again. Other changes:
|
|
@yjmp14 what do you think? |
Sorry, I'm busy with other things these few days, and I'm still thinking about how to reduce the complexity of the UI and interaction. |
|
Do you think the UI is getting too complicated? I‘d suggest splitting the roomDialog into two:
Also the implementation of this PR has the 6-digit code as a one time key (nonce), which gets invalidated as soon as someone is joining. Should we change this? |
|
What I'm thinking about:
And I don't think it's necessary to make the 6-digit code valid for only one time, we can consider shortening the valid time to, say, 1 minute or 3 minutes. |
No, I also thought about that. I think hiding complexity from the user is a good approach.
The reason are two different use cases:
Why not? There are notifications indicating the completion of message and file transfer.
I'm not sure about that. I guess 10 minutes are fine as the expiration time. When we make the room key valid for more than one time, the user experience should still indicate to the sending user that a device has joined successfully and close the RoomDialog as it is the case now. Maybe we could then add the time as a pill at the bottom: Tapping on the bottom line opens up the roomDialog again with the possibility to cancel |
This PR combines #9 , #10 and #11 .
It implements #8 by introducing temporary keyRooms with room keys.
What is new:
crypto.randomUUID()?room_key=123456or by using a permanent room link with parameter?room_id=2f79f900-68d6-43a5-8ca0-a6fd8c0a7100location.reload()with an event to reconnect to the websocket;To add a qr-code, I cherry-picked a commit from @SuperSandro2000 that I found simple and lightweight enough.
UI
Mobile (Darkmode)
Desktop (Lightmode)