Skip to content

Commit 9f9e34e

Browse files
committed
refactor(slack): Code cleanup
1 parent 9364dca commit 9f9e34e

File tree

1 file changed

+17
-23
lines changed

1 file changed

+17
-23
lines changed

src/sentry/notifications/utils/actions.py

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,34 @@
55
from typing import Any, Literal
66

77

8-
@dataclass
9-
class MessageAction:
10-
name: str
11-
12-
# Optional label. This falls back to name.
13-
label: str | None = None
8+
@dataclass(kw_only=True)
9+
class _BaseMessageAction:
10+
"""
11+
Base class used to hold the fields for a notification message action.
12+
TODO(ecosystem): this class seems to only be used for Slack notifications, can we move this?
13+
"""
1414

15+
name: str
1516
type: Literal["button", "select"] = "button"
16-
17-
# If this is a button type, a url is required.
17+
# If the message action is a button type, the url is required
1818
url: str | None = None
19-
20-
# If this is a select type, the selected value.
19+
# If the message action is a select type, this is the selected value
2120
value: str | None = None
22-
2321
# Denotes the type of action
2422
action_id: str | None = None
23+
block_id: str | None = None
24+
selected_options: Sequence[Mapping[str, Any]] | None = None
2525

26-
style: Literal["primary", "danger", "default"] | None = None
2726

28-
# TODO(mgaeta): Refactor this to be provider-agnostic
29-
selected_options: Sequence[Mapping[str, Any]] | None = None
27+
@dataclass
28+
class MessageAction(_BaseMessageAction):
29+
# Label is optional, if empty it falls back to name
30+
label: str | None = None
31+
style: Literal["primary", "danger", "default"] | None = None
3032
option_groups: Sequence[Mapping[str, Any]] | None = None
31-
block_id: str | None = None
3233
elements: Sequence[Mapping[str, Any]] | None = None
3334

3435

3536
@dataclass
36-
class BlockKitMessageAction:
37-
name: str
37+
class BlockKitMessageAction(_BaseMessageAction):
3838
label: str
39-
type: Literal["button", "select"] = "button"
40-
url: str | None = None
41-
value: str | None = None
42-
action_id: str | None = None
43-
block_id: str | None = None
44-
selected_options: Sequence[Mapping[str, Any]] | None = None

0 commit comments

Comments
 (0)