osu-stable-issues icon indicating copy to clipboard operation
osu-stable-issues copied to clipboard

Ignore list/Chat Ignore Setting Merge

Open msmcculley opened this issue 1 year ago • 3 comments

(discussion here: https://discord.com/channels/188630481301012481/218677502141399041/1313569523034619905)

Basically, users on stable can either do /ignore to ignore for a session, or they can input the user's username in the chat ignore list setting within the stable settings.

The /ignore function checks to make sure a user is online before actually ignoring the user, this can cause issues as lazer users are online but they appear offline to Bancho. Using the profile page block feature doesn't seem to block the user from stable's chat, nor does using /ignore work (because they are offline), so they are forced to use the Chat Ignore List setting.

This isn't necessarily intuitive as a lot of players think that /ignore usually persists through multiple sessions. On top of the fact that lazer users circumvent this way of ignoring a user.

A solution chromb and I thought up were to remove the online check for stable and merge the two lists so that if someone does /ignore Blushing, Blushing is automatically added to the Chat Ignore Listing.

If you need anything from myself or chromb dont be afraid to reach out. Thanks!

msmcculley avatar Dec 04 '24 01:12 msmcculley

I do wonder if we should just remove the in-game block functionality and make the web one the single source of truth.

peppy avatar Dec 05 '24 09:12 peppy

I do wonder if we should just remove the in-game block functionality and make the web one the single source of truth.

This feels like the simplest way to consolidate things however I'm unsure if people will find it less obvious to need to view the website to block somebody - likely less of an issue in osu!(lazer) as we have the in-game overlays but for stable it might be less obvious (maybe the Ignore User button could redirect to the website?).

We'd also probably want to give some people warning so they can move over any users they blocked in-game over to the website if they didn't already...

This'd probably also have implications for stable as it'd need a way to fetch the block list, I don't think the API is an option here unless we want to start doing OAuth in stable. A job for web-10?

I already have a branch to make the changes desired in the original issue post, I was hoping I'd be able to simplify the code during that process but because of how the config block list works that really wasn't the case at all so I think I'd favour this direction...

tsunyoku avatar Dec 05 '24 10:12 tsunyoku

https://github.com/ppy/osu/issues/32552 reminded me of this issue, so it's probably a good time to work on it here as well. I reached out to Blushing to have a longer discussion about how the current system works and how any improvements should work.

I have some ideas on how I think the changes here should be accomplished, they're somewhat based on my previous comment.

From what I hear, explaining that /ignore is session-bound whilst the list on the options screen is preserved between sessions is a common thing for #osu mods. I do think that this system is confusing if not entirely just bad. /ignore being bound to users logged into Bancho is also probably not a good thing, since players could be using osu!(lazer) and communicating that way.

I think the best way to address this is to entirely drop the current functionality and replace it with one system that is more akin to web (and soon lazer's) way of doing things. User panels should have a Block User button, /ignore should continue to exist but go through the same logic. This logic would not be local storage but instead preserved server-side and fetched upon login. This would allow for web, stable and lazer to have a single source of truth. /ignore would no longer need to enforce the user being online since the server-side can instruct if the user exists.

This poses a new problem though - how does stable retrieve, add and remove the block list? I think this should be solvable without too much issue, I have a couple proposals:

  • Add support for stable to authenticate to API v2 (similarly to how lazer does it, if not the same), and make use of the existing block-related endpoints
  • Add endpoints to web-10 that retrieves, adds and removes to the same block list that web is using

I can't make that choice myself, but I think this is the best way forward. It makes the most sense to me as a user, and I think maintainability wise this should be a once-and-done sort of solution.

@peppy how do you feel about this?

tsunyoku avatar Mar 28 '25 12:03 tsunyoku

It would definitely involve the latter (adding a new endpoint, or returning as part of the bancho connection process). I can make that happen easily enough, and generally agree with the direction here (/ignore should probably be removed though, and replaced with the block system completely).

peppy avatar Apr 03 '25 02:04 peppy

Sure. I agree that removing /ignore is probably for the best, we can just leave the UI for blocking users. If they need to block someone who's not logged in, they can use the website.

Let me know if you decide on how you want to have the backend block interactions work, I have some local changes that already begin to pull out the existing ignore logic.

tsunyoku avatar Apr 03 '25 09:04 tsunyoku

I also feel like if we remove the ignore list there's going to be backlash, so I'm tempted to just not touch stable because stable.

If anything, we just want to make sure that block on website works correctly in stable. If that's not the case, it should likely be resolved at bancho's end if we can.

peppy avatar Apr 04 '25 11:04 peppy

Hmm, maybe. I think the way the ignore list works is generally inconvenient and seems to be a common query, but I understand why changing it is also a risk. Bancho handling blocks so that presence isn't sent and messages aren't received is definitely better than nothing, but I'm not sure how much of an improvement this would really be. I don't think it will be clear to an end user that blocking on the website is a different interaction to ignoring in-game.

tsunyoku avatar Apr 04 '25 11:04 tsunyoku