"""DMS collaboration — IAM permission definitions."""

from __future__ import annotations

from simorgh.apps.iam.registry import register_permission

# Comment permissions
PERM_COMMENT_VIEW = "dms.comment.view"
PERM_COMMENT_CREATE = "dms.comment.create"
PERM_COMMENT_RESOLVE = "dms.comment.resolve"
PERM_COMMENT_DELETE_OWN = "dms.comment.delete_own"
PERM_COMMENT_DELETE_ANY = "dms.comment.delete_any"

# Annotation permissions
PERM_ANNOTATION_VIEW = "dms.annotation.view"
PERM_ANNOTATION_CREATE = "dms.annotation.create"
PERM_ANNOTATION_DELETE_OWN = "dms.annotation.delete_own"
PERM_ANNOTATION_DELETE_ANY = "dms.annotation.delete_any"


def register_all() -> None:
    register_permission(
        codename=PERM_COMMENT_VIEW,
        label="DMS: View comments",
        description="Allows reading comments and discussion threads on documents.",
    )
    register_permission(
        codename=PERM_COMMENT_CREATE,
        label="DMS: Post comments",
        description="Allows creating comments and replies on documents.",
    )
    register_permission(
        codename=PERM_COMMENT_RESOLVE,
        label="DMS: Resolve comments",
        description="Allows marking comment threads as resolved or re-opening them.",
    )
    register_permission(
        codename=PERM_COMMENT_DELETE_OWN,
        label="DMS: Delete own comments",
        description="Allows a user to delete their own comments.",
    )
    register_permission(
        codename=PERM_COMMENT_DELETE_ANY,
        label="DMS: Delete any comment",
        description="Allows an administrator to delete any user's comment.",
    )
    register_permission(
        codename=PERM_ANNOTATION_VIEW,
        label="DMS: View annotations",
        description="Allows reading annotations on document versions.",
    )
    register_permission(
        codename=PERM_ANNOTATION_CREATE,
        label="DMS: Create annotations",
        description="Allows adding highlight, note, stamp, and other annotations to document versions.",
    )
    register_permission(
        codename=PERM_ANNOTATION_DELETE_OWN,
        label="DMS: Delete own annotations",
        description="Allows a user to delete their own annotations.",
    )
    register_permission(
        codename=PERM_ANNOTATION_DELETE_ANY,
        label="DMS: Delete any annotation",
        description="Allows an administrator to delete any user's annotation.",
    )
