RightMesh / meshIM

An on- or off-line messaging app powered by RightMesh!
GNU General Public License v3.0
17 stars 8 forks source link

Add the ability to block users. #20

Open FrazerSeymour opened 6 years ago

FrazerSeymour commented 6 years ago

Since the meshIM default behaviour is to allow anyone to message anyone using the app, this leaves the app open to spam/harassment/what have you. We need the ability to block a user from messaging you.

There are some mockups for this, but still some product decisions that need to be made about what happens when we block someone. Do we delete messages on either side? Can a blocked user still see the messages sent before the block or does the user that block them disappear from their conversations list? Does the blocked user disappear from the message list of the user that blocked them?

If the blocked user can see the past messages, do they get a different UI that tells them they were blocked? Or do we just show the blocking user as perpetually offline and not send any updates about their username/avatar?

On a technical side, do we block all messages going to the blocking user from the blocked user (e.g. username changes)? Same deal from blocking to blocked? Or are username/pictures assumed to be public and they get those updates just not online status?

JMortemore commented 6 years ago

Action of blocking a user

Consequences for Blocker

Consequences for Blockee

compscidr commented 6 years ago

From a network pespective - it would be interesting if the block action actually sent something to the blockees phone that actually prevented them from sending messages out into the mesh in the first place. Otherwise, the blockee could still conceivably spam into the mesh and degrade the mesh performance if it gets filtered on the blocker side. Since this is open source, and someone could conceivably make a version that doesn't behave this way, it would also probably be prudent to still filter any messages on the blocker side as well.

FrazerSeymour commented 6 years ago

Yeah we were thinking that, set "blocked" in the blockee's database somehow as well so stuff just never sends either. That said their database would reset if they say uninstall/reinstall the app, so they could still conceivably try to/inadvertantly flood the network.

Maybe we can have a check for "if we receive a packet from a blocked user, remind them they're blocked" so we cut them off if they try something sneaky.