# retoor <retoor@molodetz.nl>
from __future__ import annotations
from ..spec import Action
from ._shared import confirm, path, query
SOCIAL_ACTIONS: tuple[Action, ...] = (
Action(
name="follow_user",
method="POST",
path="/follow/{username}",
summary="Follow a user",
params=(path("username", "Username to follow."),),
),
Action(
name="unfollow_user",
method="POST",
path="/follow/unfollow/{username}",
summary="Unfollow a user",
params=(path("username", "Username to unfollow."),),
),
Action(
name="block_user",
method="POST",
path="/block/{username}",
summary="Block a user so their posts, comments and messages are hidden and they cannot notify you",
params=(path("username", "Username to block."),),
),
Action(
name="unblock_user",
method="POST",
path="/block/unblock/{username}",
summary="Unblock a user",
params=(path("username", "Username to unblock."),),
),
Action(
name="mute_user",
method="POST",
path="/mute/{username}",
summary="Mute a user so they can no longer create notifications for you",
params=(path("username", "Username to mute."),),
),
Action(
name="unmute_user",
method="POST",
path="/mute/unmute/{username}",
summary="Unmute a user",
params=(path("username", "Username to unmute."),),
),
Action(
name="list_followers",
method="GET",
path="/profile/{username}/followers",
summary="List the users who follow a profile",
requires_auth=False,
params=(
path("username", "Username whose followers to list."),
query("page", "Page number, 25 per page."),
),
),
Action(
name="list_following",
method="GET",
path="/profile/{username}/following",
summary="List the users a profile follows",
requires_auth=False,
params=(
path("username", "Username whose following to list."),
query("page", "Page number, 25 per page."),
),
),
Action(
name="list_media",
method="GET",
path="/profile/{username}",
summary="List a user's uploaded media, newest first",
requires_auth=False,
params=(
path("username", "Username whose media to list."),
query("tab", "Profile tab (defaults to media for this action)."),
query("page", "Page number, 24 per page."),
),
),
Action(
name="delete_media",
method="POST",
path="/media/{uid}/delete",
summary="Delete an uploaded media attachment (your own, or anyone's when you are an administrator)",
description=(
"Removes the attachment from the user's Media tab and from any post, project, or "
"gist where it was attached. Soft delete (restorable from admin trash). Show the user "
"the exact media, get explicit confirmation, then call again with confirm=true."
),
requires_auth=True,
params=(path("uid", "Attachment uid to delete."), confirm()),
),
Action(
name="view_leaderboard",
method="GET",
path="/leaderboard",
summary="View the leaderboard",
requires_auth=False,
),
)