// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using Microsoft.Teams.Core.Schema; namespace Microsoft.Teams.Apps.Schema.Entities; /// /// Mention entity extension methods. /// public static class MentionEntityExtensions { /// /// Gets all mention entities from the activity. /// public static IEnumerable GetMentions(this TeamsActivity activity) { ArgumentNullException.ThrowIfNull(activity); if (activity.Entities == null) { return []; } return activity.Entities.Where(e => e is MentionEntity).Cast(); } /// /// Internal helper to add a mention to an activity. /// internal static void AddToActivity(TeamsActivity activity, ConversationAccount account, string? text, bool addText) { ArgumentNullException.ThrowIfNull(activity); ArgumentNullException.ThrowIfNull(account); string? mentionText = text ?? account.Name; if (addText) { string? currentText = activity is MessageActivity message ? message.Text : (activity.Properties.TryGetValue("text", out object? value) ? value?.ToString() : null); string updatedText = $"{mentionText} {currentText}"; if (activity is MessageActivity msg) { msg.Text = updatedText; } else { activity.Properties["text"] = updatedText; } } activity.Entities ??= []; activity.Entities.Add(new MentionEntity(account, $"{mentionText}")); } }