private string UpdateStateIcon(TLDraftMessageBase draft, TLMessageBase message, TLMessageState state) { if (draft is TLDraftMessage) { return(string.Empty); } if (message is TLMessage topMessage) { if (topMessage.IsOut && IsOut(ViewModel)) { switch (state) { case TLMessageState.Sending: return("\uE600"); case TLMessageState.Confirmed: return("\uE602"); case TLMessageState.Read: return("\uE601"); } } } return(string.Empty); }
private TLDialog GetItemFromStatement(ref Statement statement) { var flags = (TLDialog.Flag)Sqlite3.sqlite3_column_int(statement, 0); var id = Sqlite3.sqlite3_column_int64(statement, 1); TLPeerBase peer = null; if (((ulong)id & PeerIdTypeMask) == PeerIdUserShift) { peer = new TLPeerUser { UserId = (int)(uint)((ulong)id & PeerIdMask) }; } else if (((ulong)id & PeerIdTypeMask) == PeerIdChatShift) { peer = new TLPeerChat { ChatId = (int)(uint)((ulong)id & PeerIdMask) }; } else if (((ulong)id & PeerIdTypeMask) == PeerIdChannelShift) { peer = new TLPeerChannel { ChannelId = (int)(uint)((ulong)id & PeerIdMask) }; } var top_message = Sqlite3.sqlite3_column_int(statement, 3); var read_inbox_max_id = Sqlite3.sqlite3_column_int(statement, 4); var read_outbox_max_id = Sqlite3.sqlite3_column_int(statement, 5); var unread_count = Sqlite3.sqlite3_column_int(statement, 6); TLPeerNotifySettingsBase notifySettings; var notifyType = Sqlite3.sqlite3_column_type(statement, 7); if (notifyType == 1) { notifySettings = new TLPeerNotifySettings { Flags = (TLPeerNotifySettings.Flag)Sqlite3.sqlite3_column_int(statement, 7), MuteUntil = Sqlite3.sqlite3_column_int(statement, 8), Sound = Sqlite3.sqlite3_column_text(statement, 9) }; } else { notifySettings = new TLPeerNotifySettingsEmpty(); } int?pts = null; if (flags.HasFlag(TLDialog.Flag.Pts)) { pts = Sqlite3.sqlite3_column_int(statement, 10); } TLDraftMessageBase draft = null; if (flags.HasFlag(TLDialog.Flag.Draft)) { var draftFlags = (TLDraftMessage.Flag)Sqlite3.sqlite3_column_int(statement, 11); int?replyToMsgId = null; if (draftFlags.HasFlag(TLDraftMessage.Flag.ReplyToMsgId)) { replyToMsgId = Sqlite3.sqlite3_column_int(statement, 12); } var message = Sqlite3.sqlite3_column_text(statement, 13); TLVector <TLMessageEntityBase> entities = null; if (draftFlags.HasFlag(TLDraftMessage.Flag.Entities)) { entities = JsonConvert.DeserializeObject <TLVector <TLMessageEntityBase> >(Sqlite3.sqlite3_column_text(statement, 14), _settings); } draft = new TLDraftMessage { Flags = draftFlags, ReplyToMsgId = replyToMsgId, Message = message, Entities = entities, Date = Sqlite3.sqlite3_column_int(statement, 15) }; } return(new TLDialog { Flags = flags, Peer = peer, TopMessage = top_message, ReadInboxMaxId = read_inbox_max_id, ReadOutboxMaxId = read_outbox_max_id, UnreadCount = unread_count, NotifySettings = notifySettings, Pts = pts, Draft = draft }); }