コード例 #1
0
        private async Task <List <ChatMessageDataTemplate> > LoadMoreMamMessagesAsync()
        {
            Logger.Info("Requesting MAM messages for \"" + MODEL.Chat.Chat.id + "\".");
            QueryFilter filter = GenerateMamQueryFilter();
            // For MUCs ask the MUC server and for everything else ask our own server for messages:
            string target = MODEL.Chat.Chat.chatType == ChatType.CHAT ? MODEL.Chat.Client.getXMPPAccount().getBareJid() : MODEL.Chat.Chat.chatJabberId;
            MessageResponseHelperResult <MamResult> result = await MODEL.Chat.Client.GENERAL_COMMAND_HELPER.requestMamAsync(filter, target);

            if (result.STATE == MessageResponseHelperResultState.SUCCESS)
            {
                Logger.Info("Found " + result.RESULT.COUNT + " MAM messages for \"" + MODEL.Chat.Chat.id + "\".");
                Logger.Debug("MAM result: " + result.RESULT.ToString());

                mamRequested = result.RESULT.COMPLETE;

                List <ChatMessageDataTemplate> msgs = new List <ChatMessageDataTemplate>();
                foreach (QueryArchiveResultMessage msg in result.RESULT.RESULTS)
                {
                    ChatMessageDataTemplate tmp = new ChatMessageDataTemplate
                    {
                        Message = new ChatMessageTable(msg.MESSAGE, MODEL.Chat.Chat),
                        Chat    = MODEL.Chat.Chat,
                        MUC     = MODEL.Chat.MucInfo
                    };
                    msgs.Add(tmp);
                    await ChatDBManager.INSTANCE.setChatMessageAsync(tmp.Message, false, false);
                }
                return(msgs);
            }
            else
            {
                Logger.Error("Failed to load more MAM messages for \"" + MODEL.Chat.Chat.id + "\". Failed with: " + result.STATE);
                return(new List <ChatMessageDataTemplate>());
            }
        }
 public void Decline(ChatMessageDataTemplate msg)
 {
     MODEL.Invite.state = MucDirectInvitationState.DECLINED;
     using (MainDbContext ctx = new MainDbContext())
     {
         ctx.Update(MODEL.Invite);
     }
 }
 public void Accept(ChatMessageDataTemplate msg)
 {
     MODEL.Invite.state = MucDirectInvitationState.ACCEPTED;
     using (MainDbContext ctx = new MainDbContext())
     {
         ctx.Update(MODEL.Invite);
     }
 }
コード例 #4
0
        //--------------------------------------------------------Constructor:----------------------------------------------------------------\\
        #region --Constructors--


        #endregion
        //--------------------------------------------------------Set-, Get- Methods:---------------------------------------------------------\\
        #region --Set-, Get- Methods--


        #endregion
        //--------------------------------------------------------Misc Methods:---------------------------------------------------------------\\
        #region --Misc Methods (Public)--
        public void UpdateView(DependencyPropertyChangedEventArgs args)
        {
            if (!(ChatMessageModel is null))
            {
                ChatMessageModel.PropertyChanged -= ChatMessage_PropertyChanged;
            }

            if (args.NewValue is ChatMessageDataTemplate newChatMessage)
            {
                ChatMessageModel = newChatMessage;
                ChatMessageModel.PropertyChanged += ChatMessage_PropertyChanged;
                MODEL.UpdateView(ChatMessageModel.Chat, ChatMessageModel.Message);
            }
        }
コード例 #5
0
 public async Task DeclineAsync(ChatMessageDataTemplate msg)
 {
     await Task.Run(async() => await ChatDBManager.INSTANCE.deleteChatMessageAsync(msg.Message, true));
 }
コード例 #6
0
 public async Task AcceptAsync(ChatMessageDataTemplate msg)
 {
     await Task.Run(() => ChatDBManager.INSTANCE.setMUCDirectInvitationState(msg.Message.id, MUCDirectInvitationState.ACCEPTED));
 }