Shared Blocked Lists #6570

Open
opened 2021-07-20 01:57:22 +02:00 by tiger5226 · 1 comment
tiger5226 commented 2021-07-20 01:57:22 +02:00 (Migrated from github.com)

IN PROGRESS

Capabilities

  • Each channel can have a blocked list that they own and share publicly or use another user's shared blocked list.
  • A channel can invite others to contribute to the shared blocked list. These invites can be accepted or rejected.
  • The owner can allow participating members to invite others to the shared blocked list.
  • The owner of the shared blocked list can rescind any invite at any time.
  • Any block by an invited member, its delegated moderators or the owner is propagated to all invited members and users of the shared blocked list.
  • A block can have 3 strikes, which creates a time based block and allows for increasing penalties, there is no upper limit in hours someone is blocked at each strike level.
  • A block from a shared blocked list can be appealed to the invited member who blocked them. This appeal can also be automatic for a shared blocked list, via a curse jar tip, amount set by owner of the shared blocked list.

APIs

blockedlist.Update

This api will initialize the channel's blocked list if it does not exist, otherwise it allows the channel to manage the blocked lists settings.

parameters

type SharedBlockedListUpdateArgs struct {
        // Authorization
        ChannelName string `json:"channel_name"` // REQUIRED
	ChannelID   string `json:"channel_id"` // REQUIRED
	Signature   string `json:"signature"` // REQUIRED
	SigningTS   string `json:"signing_ts"` // REQUIRED
	// A user friendly identifier for the owner/users
	Name *string `json:"name"` // REQUIRED
	// The category of block list this is so others search
	Category    *string `json:"category"` // REQUIRED
	Description *string `json:"description"`
	// Can members invite others contributors?
	MemberInviteEnabled *bool `json:"member_invite_enabled"`
	// Strikes are number of hours a user should be banned for if
	// part of this blocked list. Strikes 1,2,3 are intended to be
	// progressively higher. Strike 3 is the highest.
	StrikeOne   *uint64 `json:"strike_one"`
	StrikeTwo   *uint64 `json:"strike_two"`
	StrikeThree *uint64 `json:"strike_three"`
	// The number of hours until a sent invite expires.
	InviteExpiration *uint64 `json:"invite_expiration"`
	// Curse jar allows automatic appeals. If they tip the owner of
	// the shared blocked list their appeal is automatically accepted.
	CurseJarAmount *uint64 `json:"curse_jar_amount"`
}

blockedlist.Get

This api will return the details of a particular Shared Blocked List. Including all the invited members unless None is passed for the status.

parameters

type SharedBlockedListGetArgs struct {
	SharedBlockedListID uint64             `json:"blocked_list_id"`
         // Status can be All(0-default), Pending(1), Accepted(2), Rejected(3), None(4)
	Status              InviteMemberStatus `json:"status"`
}

blockedlist.Accept

This api will allow an invited member to accept an invite, which in turn merges their blocked entries with the shared blocked list. In addition they can withdraw from the shared list at any time, by sending the api as accepted=false.

parameters

type SharedBlockedListInviteAcceptArgs struct {
	// Authorization
        ChannelName string `json:"channel_name"` // REQUIRED
	ChannelID   string `json:"channel_id"` // REQUIRED
	Signature   string `json:"signature"` // REQUIRED
	SigningTS   string `json:"signing_ts"` // REQUIRED
	SharedBlockedListID uint64 `json:"blocked_list_id"`
	Accepted            bool   `json:"accepted"`
}

blockedlist.Rescind

This api will allow the owner of a shared blocked list to rescind any invite created by any invited member.

parameters

type SharedBlockedListRescindArgs struct {
	// Authorization
        ChannelName string `json:"channel_name"` // REQUIRED
	ChannelID   string `json:"channel_id"` // REQUIRED
	Signature   string `json:"signature"` // REQUIRED
	SigningTS   string `json:"signing_ts"` // REQUIRED
	InvitedChannelName string `json:"invited_channel_name"` // REQUIRED
	InvitedChannelID   string `json:"invited_channel_id"` // REQUIRED
}
# *IN PROGRESS* ## Capabilities - Each channel can have a blocked list that they own and share publicly or use another user's shared blocked list. - A channel can invite others to contribute to the shared blocked list. These invites can be accepted or rejected. - The owner can allow participating members to invite others to the shared blocked list. - The owner of the shared blocked list can rescind any invite at any time. - Any block by an invited member, its delegated moderators or the owner is propagated to all invited members and users of the shared blocked list. - A block can have 3 strikes, which creates a time based block and allows for increasing penalties, there is no upper limit in hours someone is blocked at each strike level. - A block from a shared blocked list can be appealed to the invited member who blocked them. This appeal can also be automatic for a shared blocked list, via a curse jar tip, amount set by owner of the shared blocked list. ## APIs ### `blockedlist.Update` This api will initialize the channel's blocked list if it does not exist, otherwise it allows the channel to manage the blocked lists settings. #### parameters ```go type SharedBlockedListUpdateArgs struct { // Authorization ChannelName string `json:"channel_name"` // REQUIRED ChannelID string `json:"channel_id"` // REQUIRED Signature string `json:"signature"` // REQUIRED SigningTS string `json:"signing_ts"` // REQUIRED // A user friendly identifier for the owner/users Name *string `json:"name"` // REQUIRED // The category of block list this is so others search Category *string `json:"category"` // REQUIRED Description *string `json:"description"` // Can members invite others contributors? MemberInviteEnabled *bool `json:"member_invite_enabled"` // Strikes are number of hours a user should be banned for if // part of this blocked list. Strikes 1,2,3 are intended to be // progressively higher. Strike 3 is the highest. StrikeOne *uint64 `json:"strike_one"` StrikeTwo *uint64 `json:"strike_two"` StrikeThree *uint64 `json:"strike_three"` // The number of hours until a sent invite expires. InviteExpiration *uint64 `json:"invite_expiration"` // Curse jar allows automatic appeals. If they tip the owner of // the shared blocked list their appeal is automatically accepted. CurseJarAmount *uint64 `json:"curse_jar_amount"` } ``` ### `blockedlist.Get` This api will return the details of a particular Shared Blocked List. Including all the invited members unless `None` is passed for the status. #### parameters ```go type SharedBlockedListGetArgs struct { SharedBlockedListID uint64 `json:"blocked_list_id"` // Status can be All(0-default), Pending(1), Accepted(2), Rejected(3), None(4) Status InviteMemberStatus `json:"status"` } ``` ### `blockedlist.Accept` This api will allow an invited member to accept an invite, which in turn merges their blocked entries with the shared blocked list. In addition they can withdraw from the shared list at any time, by sending the api as `accepted=false`. #### parameters ```go type SharedBlockedListInviteAcceptArgs struct { // Authorization ChannelName string `json:"channel_name"` // REQUIRED ChannelID string `json:"channel_id"` // REQUIRED Signature string `json:"signature"` // REQUIRED SigningTS string `json:"signing_ts"` // REQUIRED SharedBlockedListID uint64 `json:"blocked_list_id"` Accepted bool `json:"accepted"` } ``` ### `blockedlist.Rescind` This api will allow the owner of a shared blocked list to rescind any invite created by any invited member. #### parameters ```go type SharedBlockedListRescindArgs struct { // Authorization ChannelName string `json:"channel_name"` // REQUIRED ChannelID string `json:"channel_id"` // REQUIRED Signature string `json:"signature"` // REQUIRED SigningTS string `json:"signing_ts"` // REQUIRED InvitedChannelName string `json:"invited_channel_name"` // REQUIRED InvitedChannelID string `json:"invited_channel_id"` // REQUIRED }
kauffj commented 2021-08-04 21:52:15 +02:00 (Migrated from github.com)

this is workable @infinite-persistence

this is workable @infinite-persistence
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: LBRYCommunity/lbry-desktop#6570
No description provided.