libertysoft3 / saidit

The reddit open source fork powering SaidIt
https://saidit.net
Other
226 stars 40 forks source link

Explore possibility of using native suspension #93

Open sau226 opened 3 years ago

sau226 commented 3 years ago

Hey there,

I was wondering if you might explore using Reddit's native suspension feature in Saidit.

The main benefits I would see from a switch are that buttons don't disappear (as they do when a user is globally banned) and that it is better in UX terms (i.e. a large banner is shown to the user while logged in). There may be other benefits, search for in_timeout for a better list.

You can emulate a "native" permanent suspension by doing the following: (run reddit-shell in src/reddit/r2 or equivalent location) from r2.models import Account u = Account._by_name ('yourusername') u.in_timeout = True u.days_remaining_in_timeout = 0 u._commit () where yourusername is a user you want to test it on.

I am not sure how to issue a "native" temporary suspension, but it appears that TempTimeout in the code has those capabilities, if you figure out how to use your custom code as a wrapper around it.

Thanks,

sau226

libertysoft3 commented 3 years ago

Thanks sau, great ideas. Utilizing what reddit had in place for bans would certainly be a better implementation. I'll explore it sometime.

CrystalVulpine commented 1 year ago

u.days_remaining_in_timeout = 0 isn't necessary, it's the default. As a matter of fact you can't set it directly, because it's a getter method. If you want a suspension to be temporary you have to use TempTimeout.schedule(). Weird way to do it, probably slower too since it uses a separate lookup table. And also buggy, because if the program that lifts suspensions at the end of its duration fails it becomes a permanent suspension. I have no idea why someone would design it that way.