microsoft/teams.net

Public

mirrored from https://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
feature/user-agent-header

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Api/Activities/Message/MessageReactionActivity.cs

79lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using System.Text.Json.Serialization;
5
6using Microsoft.Teams.Common;
7
8namespace Microsoft.Teams.Api.Activities;
9
10public partial class ActivityType : StringEnum
11{
12 public static readonly ActivityType MessageReaction = new("messageReaction");
13 public bool IsMessageReaction => MessageReaction.Equals(Value);
14}
15
16public class MessageReactionActivity() : Activity(ActivityType.MessageReaction)
17{
18 [JsonPropertyName("reactionsAdded")]
19 [JsonPropertyOrder(121)]
20 public IList<Messages.Reaction>? ReactionsAdded { get; set; }
21
22 [JsonPropertyName("reactionsRemoved")]
23 [JsonPropertyOrder(122)]
24 public IList<Messages.Reaction>? ReactionsRemoved { get; set; }
25
26 public MessageReactionActivity AddReaction(Messages.Reaction reaction)
27 {
28 ReactionsAdded ??= [];
29 ReactionsAdded.Add(reaction);
30 return this;
31 }
32
33 public MessageReactionActivity AddReaction(Messages.ReactionType type)
34 {
35 ReactionsAdded ??= [];
36 ReactionsAdded.Add(new() { Type = type });
37 return this;
38 }
39
40 public MessageReactionActivity RemoveReaction(Messages.Reaction reaction)
41 {
42 ReactionsRemoved ??= [];
43
44 if (ReactionsAdded is not null)
45 {
46 var i = ReactionsAdded.ToList().FindIndex(r =>
47 r.Type.Equals(reaction.Type) && r.User?.Id == reaction.User?.Id
48 );
49
50 if (i > -1)
51 {
52 ReactionsAdded.RemoveAt(i);
53 return this;
54 }
55 }
56
57 ReactionsRemoved.Add(reaction);
58 return this;
59 }
60
61 public MessageReactionActivity RemoveReaction(Messages.ReactionType type)
62 {
63 ReactionsRemoved ??= [];
64
65 if (ReactionsAdded is not null)
66 {
67 var i = ReactionsAdded.ToList().FindIndex(r => r.Type.Equals(type));
68
69 if (i > -1)
70 {
71 ReactionsAdded.RemoveAt(i);
72 return this;
73 }
74 }
75
76 ReactionsRemoved.Add(new() { Type = type });
77 return this;
78 }
79}