using System; using System.Collections.Generic; using Content.Client.Chat.UI; using Content.Shared.Chat; using Robust.Shared.GameObjects; using Robust.Shared.Timing; namespace Content.Client.Chat.Managers { public interface IChatManager { ChatChannel ChannelFilters { get; } ChatSelectChannel SelectableChannels { get; } ChatChannel FilterableChannels { get; } void Initialize(); void FrameUpdate(FrameEventArgs delta); void SetChatBox(ChatBox chatBox); void RemoveSpeechBubble(EntityUid entityUid, SpeechBubble bubble); /// /// Current chat box control. This can be modified, so do not depend on saving a reference to this. /// ChatBox? CurrentChatBox { get; } IReadOnlyDictionary UnreadMessages { get; } IReadOnlyList History { get; } int MaxMessageLength { get; } bool IsGhost { get; } /// /// Invoked when CurrentChatBox is resized (including after setting initial default size) /// event Action? OnChatBoxResized; event Action? ChatPermissionsUpdated; event Action? UnreadMessageCountsUpdated; event Action? MessageAdded; event Action? FiltersUpdated; void ClearUnfilteredUnreads(); void ChatBoxOnResized(ChatResizedEventArgs chatResizedEventArgs); void OnChatBoxTextSubmitted(ChatBox chatBox, ReadOnlyMemory text, ChatSelectChannel channel); void OnFilterButtonToggled(ChatChannel channel, bool enabled); } public struct ChatPermissionsUpdatedEventArgs { public ChatSelectChannel OldSelectableChannels; } }