Skip to content

Commit 075f098

Browse files
authored
emoji-change events: add subtype helper (#19)
1 parent a6b28f0 commit 075f098

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

source/src/Slackbot.Net.Endpoints/Models/Events/EmojiChangedEvent.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,45 @@ namespace Slackbot.Net.Endpoints.Models.Events;
44
// https://api.slack.com/events/emoji_changed
55
public class EmojiChangedEvent : SlackEvent
66
{
7+
public const string SubTypeAdd = "add";
8+
public const string SubTypeRemove = "remove";
9+
public const string SubTypeRename = "rename";
10+
11+
public string SubType { get; init; } = string.Empty; // subtype: add, remove, rename
712
public string? Name { get; set; } // subtype: add
813
public string[] Names { get; set; } = []; //subtype: remove
914
public string OldName { get; set; } // subtype: rename
1015
public string NewName { get; set; } // subtype: rename
1116
public Uri? Value { get; set; }// subtypes: add, rename
17+
18+
public EmojiChange CreateSubType() => SubType switch
19+
{
20+
SubTypeAdd => new EmojiAdded { Name = Name!, Value = Value! },
21+
SubTypeRemove => new EmojiRemoved { Names = Names },
22+
SubTypeRename => new EmojiRenamed { OldName = OldName, NewName = NewName, Value = Value },
23+
_ => new UnknownEmojiChange()
24+
};
25+
}
26+
27+
public class EmojiChange();
28+
29+
public class EmojiAdded : EmojiChange
30+
{
31+
public required string Name { get; init; }
32+
public Uri Value { get; init; }
33+
}
34+
35+
public class EmojiRemoved : EmojiChange
36+
{
37+
public string[] Names { get; set; } = [];
1238
}
39+
40+
public class EmojiRenamed : EmojiChange
41+
{
42+
public string OldName { get; set; } // subtype: rename
43+
public string NewName { get; set; } // subtype: rename
44+
public Uri? Value { get; set; }// subtypes: add, rename
45+
}
46+
47+
public class UnknownEmojiChange() : EmojiChange;
48+

0 commit comments

Comments
 (0)