Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
139 stars 2 forks source link

If world host is invisible, do not show session in session list #2582

Open Cataena opened 3 months ago

Cataena commented 3 months ago

Is your feature request related to a problem? Please describe.

Sometimes I am invisible and open a world orb as contacts instead of private (for world hop reasons). The worlds list still shows me as a host to all my contacts and the world is joinable, even though I am invisible. _deltawolf tested this and it even sends out a notification to users who have "New Contact Sessions" notifications enabled.

Describe the solution you'd like

If a host is invisible, the worlds they host are also invisible by default, to not break their privacy. It should also not send out that "New Contact Session" notification if you are invisible.

Describe alternatives you've considered

Having the "Don't show in session list" setting when clicking orbs would be an alternative, but if you forget to click it, you're still joinable even though everyone is invisible. If you forget to click it, all of your contacts who have "new contacts sessions" notifications will still also get a notification. https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/1510

Additional Context

One of the reasons we use world orbs as "Contacts" is for invisible world hops. If there are several invisible people, and we want to switch to a new world, it is easiest and fastest right now to spawn the orb, set it to "Contacts", and have everyone click it, than to invite everyone one by one or to wait for the world to load enough to set it to Don't Show In Session Lists, then mark it as contacts, then return and let everyone know they can click it now. Even with the other proposed change (issue 1510), if someone misclicks, their status is broadcasted to those with notifications on.

Requesters

@Cataena

XDelta commented 3 months ago

I'll add that testing some of this found that

Users that have the notification settings for "New Contact Sessions" enabled will see a notification for the session (as it is open to contacts) despite the host being invisible

The world will be shown in the worlds tab for contacts. image

some of this should be covered with #1510 and making the same override for invis defaulting to Private, also set it not visible in session list.

shiftyscales commented 3 months ago

The way the system is currently designed- if you are opening a session that is "Contacts" (not hidden), it is a public session to anyone that is a contact of yours.

If you had a means of setting "Do not show in session lists" by default, or if the invisible status also appended "Do not show in session lists" along with the private status to all worlds that are opened while invisible, it would hide the session from the list to not announce it to contacts while still allowing you to world hop.

Having invisible automatically append the "do not show in session lists" property to all opened sessions unless explicitly toggled otherwise would also be a fairly logical thing to do to prevent the user from accidentally leaking their online status unless they explicitly choose to make their session publicly visible as you highlighted above, @Cataena.

Seeking input from @Frooxius or @ProbablePrime on the best approach / path forward for this issue.

Frooxius commented 3 months ago

I think best solution here is just to ensure that the worlds are enforced to start as hidden when you're invisible.

If you set the world to public - you've set it to public and it will be inherently visible - at that point you made that choice, so I don't think we should change how that behaves - users might prefer to host worlds, while still not appearing in online in contact list - it's like choosing to make "little noise" vs "a lot of noise" to draw attention that you're around.

How exactly are you starting the sessions though? There already should've been mechanism that makes the worlds Private by default when you start them while invisible. It sounds like that might not be working in some cases.

shiftyscales commented 3 months ago

This issue is specific to starting a "custom session", e.g. from a world orb, or from the worlds tab, @Frooxius.

As highlighted in #1510 - there is no way to set a world to Do not show in session lists while opening the modal for this.

image

It does default it to private as it should, but the user can switch off of it. In the context of @Cataena's use case- she is world hopping from world to world- having the worlds default to hidden would resolve this. :)

But as you highlighted, it would be best if worlds are also enforced hidden as well for redundancy as a default.

shiftyscales commented 3 months ago

From testing @XDelta did on #1495 - the invisible status otherwise properly sets sessions to "private" as expected from all common means of opening a world- it just doesn't flag them as hidden.

ProbablePrime commented 2 months ago

@BlueCyro / @RyuviTheViali this one seems easy for either of you!