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

Escalate can be pressed multiple times #996

Open
trichoplax opened this issue Feb 1, 2023 · 13 comments
Open

Escalate can be pressed multiple times #996

trichoplax opened this issue Feb 1, 2023 · 13 comments
Labels
area: html/css/js Changes to front-end code complexity: unassessed Needs further developer investigation before complexity/feasibility can be determined. priority: medium type: bug Something isn't working

Comments

@trichoplax
Copy link
Contributor

Describe the bug
After a moderator presses "Escalate" on a flag, the Escalate button remains, so they can press it again, escalating the same flag as many times as they choose.

When an admin views the escalated flag, they only see the message from the last time it was escalated, even if different messages were included with each subsequent escalation (those previous messages are lost).

To Reproduce
Steps to reproduce the behavior:

  1. As a moderator, press Escalate on a flag and fill out a message and press Escalate in the pop up box.
  2. Repeat
  3. As an admin, see only 1 escalated flag, with only the final message that the moderator entered

Expected behavior
The Escalate button should be disabled immediately after escalation, not waiting until the next page refresh.

Screenshots
Escalate button still showing after escalating:
Escalate button still showing after escalating

After pressing Escalate 3 times, only the 3rd message is displayed:
After pressing Escalate 3 times, only the 3rd message is displayed

Desktop (please complete the following information):

  • OS: Linux (Fedora 27)
  • Browser: Firefox 109.0 and Chromium 109.0.5414.74

Additional context
Add any other context about the problem here.

@trichoplax
Copy link
Contributor Author

Currently, the Escalate button does not become disabled until the next time the page is refreshed, rather than immediately after the flag is escalated.

Does the flag even need to remain visible on the Active tab of the Moderator Flag Queue page? If it dropped off the page and only showed for the admins then the Escalate button would not need to be disabled - a moderator cannot press a button on a flag that is no longer visible.

@trichoplax
Copy link
Contributor Author

If it is decided that escalated flags should remain visible on the Active tab of the Moderator Flag Queue page, should they be sorted to the bottom so that flags that still need moderator attention are sorted to the top?

@cellio
Copy link
Member

cellio commented Feb 1, 2023

If the button is disabled on subsequent loads, then the scope of damage here seems to be one mod quickly overwriting previous messages, not mods stomping on each other or on something they've long since forgotten about, right? (Just checking assumptions before prioritizing -- sounds like something we should fix but that's kind of a rare edge case?)

If escalated flags are only on the escalated list and not also on the main flags list, then we probably want some sort of indicator (visible on the main list) that there are escalated flags, since that's a rare situation. Silver dot, "there are 2 escalated flags" at the top, something else... don't have strong opinions, but we don't want mod A to think that that flag from yesterday was handled because mod B escalated it and moved it out of easy view.

If escalated flags stay on the main (active) list, does something show that it's been escalated? (Can't remember, haven't set up a test case.)

@cellio cellio added area: html/css/js Changes to front-end code type: bug Something isn't working labels Feb 1, 2023
@trichoplax
Copy link
Contributor Author

If the button is disabled on subsequent loads, then the scope of damage here seems to be one mod quickly overwriting previous messages, not mods stomping on each other or on something they've long since forgotten about, right?

I hadn't thought about multiple mods being involved unwittingly. I suppose that if two mods are viewing a flag at the same time then they will both have an Escalate button, and this current issue demonstrates that the backend does not prevent multiple escalations. So if two moderators Ash and Bobby both decide to escalate the same flag, and Ash escalates first, then Bobby's message will overwrite Ash's message and neither of them will know about it. The only fix I can think of for this is allowing multiple escalations and keeping all the messages (in the same way that a user can raise multiple flags on the same post without overwriting - all of the flags show up separately for the moderators).

The time scope for this overwriting by another mod is not narrow enough to avoid it happening once the site gets busy. To avoid Bobby overwriting Ash's escalation message, Ash needs to escalate the flag before Bobby opens the flags page (so the Escalate button will not exist for Bobby). Worst case, Bobby opens the flags page, then goes to lunch, then escalates the flag after lunch. Now Ash's escalation message will be overwritten if it was submitted at any point during Bobby's lunch break.

If escalated flags are only on the escalated list and not also on the main flags list, then we probably want some sort of indicator (visible on the main list) that there are escalated flags, since that's a rare situation.

I agree it would be useful to have an indicator on the Escalated tab (since the Active tab is the one shown by default, and if that also has flags to process it would be easy to forget to check the Escalated tab).

We don't want mod A to think that that flag from yesterday was handled because mod B escalated it and moved it out of easy view.

I had assumed that only admins could process escalated flags, but I've just checked and I was wrong. Only admins see the Escalated tab, but each escalated flag also continues to show on the Active tab for moderators, who can still press "Helpful" or "Decline", even when the flag is already marked "Escalated". This makes the flag disappear from both the Active and Escalated tabs. So if Ash escalates a flag, Bobby can still press "Helpful" or "Decline" at any point before an admin sees it, and then the admin will never see it (unless they go looking through the Handled tab).

Is this the behaviour we want to keep?

If a moderator decides to escalate a flag, should that ensure an admin will see it, or should a moderator (the same moderator or another) be able to overrule this decision and handle the flag personally?

If it is decided to make only admins able to process escalated flags, we could make escalated flags drop off the Active tab for moderators but remain visible to admins, as an additional reminder that the Escalated tab needs working.

If escalated flags stay on the main (active) list, does something show that it's been escalated?

Yes, the Escalate button becomes a disabled button that says "Escalated". Once that happens it cannot be escalated again.

@cellio
Copy link
Member

cellio commented Feb 1, 2023

Oh, collisions between mods -- good catch. We want to prevent that.

I think (@ArtOfCode- please correct me if I'm wrong) that collision detection could only happen at the server -- two mods open the flag, one escalates, the other (without refreshing) escalates -- it could only be caught when the second one hits the server. This is after the mod has typed a possibly-long message, so that's not great UX. Yes it's rare, but when it happens it's annoying to lose a comment, flag text, edit, etc. As a mod somewhere else, when I escalated a matter I usually collected and reported a bunch of details, sort of a dossier on the situation. It'd be annoying to lose that work.

If we can only catch it at the server, how hard would it be to append the new escalation instead of overwriting? This way nothing is lost, at least.

As for mods handling escalated flags, I'm fine with that. Mod A might see something tricky, not know what to do, and escalate. Then more-experienced Mod B comes along and knows what to do with it -- go ahead and handle it, in my opinion. So we want Mod B to know about the escalation (flag should not disappear from view), but we don't want the escalation to block on an admin being available to handle it. The larger and more active a network grows, the more important it is to let mods handle things they can handle. In other words, an escalation is a request for help, not a complete hand-off, in my opinion. And I don't know where this is configured, but as an admin I get email about escalations, so that's either true in general or something a network can set. With email, admins will still know it happened, even if it's since been handled.

@trichoplax
Copy link
Contributor Author

I think ... that collision detection could only happen at the server -- two mods open the flag, one escalates, the other (without refreshing) escalates -- it could only be caught when the second one hits the server.

Sounds right to me (unless we build some kind of live collaboration approach where mods can see what each other are typing as they type - which would be a lot more work and I think unnecessary).

If we can only catch it at the server, how hard would it be to append the new escalation instead of overwriting? This way nothing is lost, at least.

I can't see a reason that would be difficult (no clue how to do it in Ruby, but I mean generally).

For when further discussion is needed it would be good if the admin could clearly see which part of the message came from which mod. We already have support for multiple flags per post from the same or different users, so taking that same approach with escalation might be one option (treat an escalation as a flag on a flag). This might show in the admin interface as multiple instances of the same flag, each with a different escalation message.

Alternatively we could have an internal record type that consists of an escalation message and an associated moderator, and we could append that whole record to the flag rather than just appending the message text (maybe this is what you already had in mind?). Then in the admin interface the flag would show just once, but with potentially multiple escalation records listed on it, each showing which moderator made the escalation.

In other words, an escalation is a request for help, not a complete hand-off, in my opinion.

That's a handy way of thinking about it - thank you.

With email, admins will still know it happened, even if it's since been handled.

That seems like a good failsafe against potential problems.

@cellio
Copy link
Member

cellio commented Feb 1, 2023

I don't know how escalations (and escalators) are represented in the code now (properties of a flag? assume only one of each?), but it feels like we ought to be able to replace strings with appended strings, maybe? You're right that we don't want to lose the information about which mods were involved.

If this is hard, though, then any approach that doesn't drop data, even if it's just "you can use the back button to get the message you tried to send and copy/paste it somewhere else" seems good enough to me for this infrequent case. Open to other opinions!

@cellio cellio added priority: medium complexity: unassessed Needs further developer investigation before complexity/feasibility can be determined. labels Feb 1, 2023
@trichoplax
Copy link
Contributor Author

Even if it's not as straightforward as I thought, I think investing effort in the moderation support as early as possible is important.

@cellio
Copy link
Member

cellio commented Feb 1, 2023

We would have more options when #767 is available (I'm thinking here of a private thread for mods and admins when something needs to be escalated). But I don't know when we'll have that.

@trichoplax
Copy link
Contributor Author

Your suggestion of being able to use the back button to rescue the lost message text makes me realise that I don't know what a moderator would then do with that text. The Escalate button is disabled by this point, so all they can do is manually contact an admin, which may not happen to be the same admin that picks up the escalated flag.

Maybe the Escalate button should stay available (just like the Flag button stays available on a post) so that if several moderators have relevant information to add to a flag they can.

What about flags that don't need to be escalated but where a moderator wants to leave it for another moderator to pick up? Perhaps they have a personal connection to the flag and want to add a note but not make a final decision.

Should escalation (getting an admin involved) and annotation (adding information to a flag without resolving or escalating it) be two separate buttons that can be used in either order?

@trichoplax
Copy link
Contributor Author

We would have more options when #767 is available (I'm thinking here of a private thread for mods and admins when something needs to be escalated).

Maybe this is the answer to my question (I hadn't spotted this comment when I was writing mine).

Would this be a thread specific to the flag? That sounds ideal.

@trichoplax
Copy link
Contributor Author

I think that longer term, an Escalate button that has no text field, combined with a separate way for moderators and admins to communicate privately about a specific flag, solves this problem completely.

Until that's available, do we accept the risk of some data loss (across all instances known and unknown), or is there an interim solution that could be implemented sooner?

@cellio
Copy link
Member

cellio commented Feb 2, 2023

What about flags that don't need to be escalated but where a moderator wants to leave it for another moderator to pick up? Perhaps they have a personal connection to the flag and want to add a note but not make a final decision.

Moderators in that situation can raise a regular flag, which all moderators will see. I've done that before, and I've been a mod on the receiving end.

And maybe that's the answer here: if a flag has already been escalated, then instead of overwriting or failing, turn the escalation comment into a regular flag and automatically escalate it. The admin will see two escalated flags on the same post. When we get better tools, we can do something more elegant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: html/css/js Changes to front-end code complexity: unassessed Needs further developer investigation before complexity/feasibility can be determined. priority: medium type: bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants