// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.Text.Json.Serialization;
using Microsoft.Teams.Apps.Schema;
using Microsoft.Teams.Core.Schema;
namespace Microsoft.Teams.Apps.Handlers;
///
/// Represents a conversation update activity.
///
public class ConversationUpdateActivity : TeamsActivity
{
///
/// Convenience method to create a ConversationUpdateActivity from a CoreActivity.
///
/// The CoreActivity to convert.
/// A ConversationUpdateActivity instance.
public static new ConversationUpdateActivity FromActivity(CoreActivity activity)
{
ArgumentNullException.ThrowIfNull(activity);
return new ConversationUpdateActivity(activity);
}
///
/// Default constructor.
///
[JsonConstructor]
internal ConversationUpdateActivity() : base(TeamsActivityTypes.ConversationUpdate)
{
}
///
/// Internal constructor to create ConversationUpdateActivity from CoreActivity.
///
/// The CoreActivity to convert.
internal ConversationUpdateActivity(CoreActivity activity) : base(activity)
{
/*
if (activity.Properties.TryGetValue("topicName", out var topicName))
{
TopicName = topicName?.ToString();
activity.Properties.Remove("topicName");
}
*/
MembersAdded = activity.Properties.Extract>("membersAdded");
MembersRemoved = activity.Properties.Extract>("membersRemoved");
}
//TODO : review properties
/*
///
/// Gets or sets the updated topic name of the conversation.
///
[JsonPropertyName("topicName")]
public string? TopicName { get; set; }
*/
///
/// Gets or sets the collection of members added to the conversation.
///
[JsonPropertyName("membersAdded")]
public IList? MembersAdded { get; set; }
///
/// Gets or sets the collection of members removed from the conversation.
///
[JsonPropertyName("membersRemoved")]
public IList? MembersRemoved { get; set; }
}
///
/// String constants for conversation event types.
///
public static class ConversationEventTypes
{
///
/// Channel created event.
///
public const string ChannelCreated = "channelCreated";
///
/// Channel deleted event.
///
public const string ChannelDeleted = "channelDeleted";
///
/// Channel renamed event.
///
public const string ChannelRenamed = "channelRenamed";
///
/// Channel shared event.
///
public const string ChannelShared = "channelShared";
///
/// Channel unshared event.
///
public const string ChannelUnShared = "channelUnshared";
///
/// Channel member added event.
///
public const string ChannelMemberAdded = "channelMemberAdded";
///
/// Channel member removed event.
///
public const string ChannelMemberRemoved = "channelMemberRemoved";
//TODO : review these events
/*
///
/// Channel restored event.
///
public const string ChannelRestored = "channelRestored";
*/
///
/// Team member added event.
///
public const string TeamMemberAdded = "teamMemberAdded";
///
/// Team member removed event.
///
public const string TeamMemberRemoved = "teamMemberRemoved";
///
/// Team archived event.
///
public const string TeamArchived = "teamArchived";
///
/// Team deleted event.
///
public const string TeamDeleted = "teamDeleted";
///
/// Team renamed event.
///
public const string TeamRenamed = "teamRenamed";
///
/// Team unarchived event.
///
public const string TeamUnarchived = "teamUnarchived";
/*TODO : review these events
///
/// Team hard deleted event.
///
public const string TeamHardDeleted = "teamHardDeleted";
///
/// Team restored event.
///
public const string TeamRestored = "teamRestored";
*/
}