[feature] Status thread mute/unmute functionality (#2278)

* add db models + functions for keeping track of threads

* give em the old linty testy

* create, remove, check mutes

* swagger

* testerino

* test mute/unmute via api

* add info log about new index creation

* thread + allow muting of any remote statuses that mention a local account

* IsStatusThreadMutedBy -> IsThreadMutedByAccount

* use common processing functions in status processor

* set = NULL

* favee!

* get rekt darlings, darlings get rekt

* testrig please, have mercy muy liege
This commit is contained in:
tobi
2023-10-25 16:04:53 +02:00
committed by GitHub
parent 27f4659139
commit c7b6cd7770
48 changed files with 1750 additions and 198 deletions

View File

@@ -6527,6 +6527,44 @@ paths:
summary: View accounts that have faved/starred/liked the target status.
tags:
- statuses
/api/v1/statuses/{id}/mute:
post:
description: |-
Target status must belong to you or mention you.
Status thread mutes and unmutes are idempotent. If you already mute a thread, muting it again just means it stays muted and you'll get 200 OK back.
operationId: statusMute
parameters:
- description: Target status ID.
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: The now-muted status.
schema:
$ref: '#/definitions/status'
"400":
description: bad request; you're not part of the target status thread
"401":
description: unauthorized
"403":
description: forbidden
"404":
description: not found
"406":
description: not acceptable
"500":
description: internal server error
security:
- OAuth2 Bearer:
- write:mutes
summary: Mute a status's thread. This prevents notifications from being created for future replies, likes, boosts etc in the thread of which the target status is a part.
tags:
- statuses
/api/v1/statuses/{id}/pin:
post:
description: |-
@@ -6703,6 +6741,44 @@ paths:
summary: Unstar/unlike/unfavourite the given status.
tags:
- statuses
/api/v1/statuses/{id}/unmute:
post:
description: |-
Target status must belong to you or mention you.
Status thread mutes and unmutes are idempotent. If you already unmuted a thread, unmuting it again just means it stays unmuted and you'll get 200 OK back.
operationId: statusUnmute
parameters:
- description: Target status ID.
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: The now-unmuted status.
schema:
$ref: '#/definitions/status'
"400":
description: bad request; you're not part of the target status thread
"401":
description: unauthorized
"403":
description: forbidden
"404":
description: not found
"406":
description: not acceptable
"500":
description: internal server error
security:
- OAuth2 Bearer:
- write:mutes
summary: Unmute a status's thread. This reenables notifications for future replies, likes, boosts etc in the thread of which the target status is a part.
tags:
- statuses
/api/v1/statuses/{id}/unpin:
post:
operationId: statusUnpin
@@ -7336,6 +7412,7 @@ securityDefinitions:
read:follows: grant read access to follows
read:lists: grant read access to lists
read:media: grant read access to media
read:mutes: grant read access to mutes
read:notifications: grants read access to notifications
read:search: grant read access to searches
read:statuses: grants read access to statuses
@@ -7347,6 +7424,7 @@ securityDefinitions:
write:follows: grants write access to follows
write:lists: grants write access to lists
write:media: grants write access to media
write:mutes: grants write access to mutes
write:statuses: grants write access to statuses
write:user: grants write access to user-level info
tokenUrl: https://example.org/oauth/token