Coverage for polar/webhook/slack.py: 92%
12 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 17:15 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 17:15 +0000
1from typing import Any, Literal, NotRequired, TypedDict 1a
3from polar.config import settings 1a
6class SlackText(TypedDict): 1a
7 type: Literal["mrkdwn", "plain_text"] 1a
8 text: str 1a
9 emoji: NotRequired[bool] 1a
10 verbatim: NotRequired[bool] 1a
13class SlackPayload(TypedDict): 1a
14 text: str 1a
15 blocks: NotRequired[list[dict[str, Any]]] 1a
18def get_branded_slack_payload(payload: SlackPayload) -> SlackPayload: 1a
19 return {
20 **payload,
21 "blocks": [
22 *payload.get("blocks", []),
23 {
24 "type": "context",
25 "elements": [
26 {
27 "type": "image",
28 "image_url": settings.FAVICON_URL,
29 "alt_text": "Polar",
30 },
31 {"type": "mrkdwn", "text": "Powered by Polar.sh"},
32 ],
33 },
34 ],
35 }