// use crate::{ // channel_view::ChannelView, is_channels_feature_enabled, render_avatar, ChatPanelSettings, // }; // use anyhow::Result; // use call::ActiveCall; // use channel::{ChannelChat, ChannelChatEvent, ChannelMessageId, ChannelStore}; // use client::Client; // use collections::HashMap; // use db::kvp::KEY_VALUE_STORE; // use editor::Editor; // use gpui::{ // actions, // elements::*, // platform::{CursorStyle, MouseButton}, // serde_json, // views::{ItemType, Select, SelectStyle}, // AnyViewHandle, AppContext, AsyncAppContext, Entity, ModelHandle, Subscription, Task, View, // ViewContext, ViewHandle, WeakViewHandle, // }; // use language::LanguageRegistry; // use menu::Confirm; // use message_editor::MessageEditor; // use project::Fs; // use rich_text::RichText; // use serde::{Deserialize, Serialize}; // use settings::SettingsStore; // use std::sync::Arc; // use theme::{IconButton, Theme}; // use time::{OffsetDateTime, UtcOffset}; // use util::{ResultExt, TryFutureExt}; // use workspace::{ // dock::{DockPosition, Panel}, // Workspace, // }; // mod message_editor; // const MESSAGE_LOADING_THRESHOLD: usize = 50; // const CHAT_PANEL_KEY: &'static str = "ChatPanel"; // pub struct ChatPanel { // client: Arc, // channel_store: ModelHandle, // languages: Arc, // active_chat: Option<(ModelHandle, Subscription)>, // message_list: ListState, // input_editor: ViewHandle, // channel_select: ViewHandle, // ) -> AnyElement