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);
        }
示例#2
0
        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
            });
        }