示例#1
0
        public async Task GroupChatNameChangedTest()
        {
            await client1.AuthenticationClient.CreateSessionWithEmailAsync(email1, password1);

            var createDialogResponse = await client1.ChatClient.CreateDialogAsync("Chat name Dialog", DialogType.Group, $"{id2},{id3}");

            Assert.AreEqual(HttpStatusCode.Created, createDialogResponse.StatusCode);

            string newName             = "Chat name Dialog NEW!";
            var    updateDialogRequest = new UpdateDialogRequest()
            {
                DialogId = createDialogResponse.Result.Id,
                Name     = newName
            };
            var updateResponse = await client1.ChatClient.UpdateDialogAsync(updateDialogRequest);

            Assert.AreEqual(updateResponse.StatusCode, HttpStatusCode.OK);

            var chatManager1 = client1.ChatXmppClient.GetGroupChatManager(createDialogResponse.Result.XmppRoomJid, createDialogResponse.Result.Id);
            var chatManager2 = client2.ChatXmppClient.GetGroupChatManager(createDialogResponse.Result.XmppRoomJid, createDialogResponse.Result.Id);

            chatManager1.JoinGroup(id1.ToString());
            chatManager2.JoinGroup(id2.ToString());

            await Task.Delay(1000);

            chatManager1.NotifyGroupNameChanged(newName, updateResponse.Result.UpdateAt);

            await Task.Delay(5000);
        }
示例#2
0
        public async Task <Dialog> UpdateDialogAsync(string dialogId, List <int> addedUsers = null, List <int> deletedUsers = null, string name = null, string photo = null)
        {
            var updateDialog = new UpdateDialogRequest();

            updateDialog.DialogId = dialogId;

            if (addedUsers != null)
            {
                updateDialog.PushAll = new EditedOccupants()
                {
                    OccupantsIds = addedUsers
                };
            }

            if (deletedUsers != null)
            {
                updateDialog.PullAll = new EditedOccupants()
                {
                    OccupantsIds = deletedUsers
                };
            }

            updateDialog.Name      = name;
            updateDialog.PhotoLink = photo;

            var dialogResponse = await this.client.ChatClient.UpdateDialogAsync(updateDialog);

            if (dialogResponse.StatusCode == HttpStatusCode.OK)
            {
                return(dialogResponse.Result);
            }

            return(null);
        }
示例#3
0
        /// <summary>
        /// Updates a dialog. Works only if type=1(PUBLIC_GROUP) or 2(GROUP).
        /// Users who are in occupants_ids can update a dialog with type=2(GROUP). If type=1(PUBLIC_GROUP) - only dialog’s owner can update it.
        /// </summary>
        /// <param name="updateDialogRequest">Update dialog request info</param>
        /// <returns></returns>
        public async Task <HttpResponse <Dialog> > UpdateDialogAsync(UpdateDialogRequest updateDialogRequest)
        {
            if (updateDialogRequest == null)
            {
                throw new ArgumentNullException("updateDialogRequest");
            }

            var uriMethod = String.Format(QuickbloxMethods.UpdateDialogMethod, updateDialogRequest.DialogId);
            var headers   = RequestHeadersBuilder.GetDefaultHeaders().GetHeaderWithQbToken(this.quickbloxClient.Token);

            return(await HttpService.PutAsync <Dialog, UpdateDialogRequest>(this.quickbloxClient.ApiEndPoint, uriMethod, updateDialogRequest, headers));
        }
示例#4
0
        public async Task GroupChatTest()
        {
            IGroupChatManager chatManager1 = client1.ChatXmppClient.GetGroupChatManager(groupJid, groupDialogId);

            chatManager1.JoinGroup(id1.ToString());
            IGroupChatManager chatManager2 = client2.ChatXmppClient.GetGroupChatManager(groupJid, groupDialogId);

            chatManager2.JoinGroup(id2.ToString());
            IGroupChatManager chatManager3 = client3.ChatXmppClient.GetGroupChatManager(groupJid, groupDialogId);

            chatManager3.JoinGroup(id3.ToString());
            await Task.Delay(2000);

            chatManager1.SendMessage("One reports to the group.");
            await Task.Delay(1000);

            chatManager2.SendMessage("Three reports to the group");
            await Task.Delay(1000);

            chatManager3.SendMessage("Three reports to the group");
            await Task.Delay(1000);

            Debug.WriteLine("############ Updating name");
            string newName             = "Name1";
            var    updateDialogRequest = new UpdateDialogRequest {
                DialogId = groupDialogId
            };

            updateDialogRequest.Name = newName;
            var updateDialogResponse = await client2.ChatClient.UpdateDialogAsync(updateDialogRequest);

            Assert.AreEqual(updateDialogResponse.StatusCode, HttpStatusCode.OK);

            chatManager2.NotifyGroupNameChanged(newName, DateTime.Now);
            await Task.Delay(1000);

            Debug.WriteLine("############ Checking messaging again");

            chatManager1.SendMessage("One reports to the group.");
            await Task.Delay(1000);

            chatManager2.SendMessage("Three reports to the group");
            await Task.Delay(1000);

            chatManager3.SendMessage("Three reports to the group");
            await Task.Delay(1000);

            await Task.Delay(3000);
        }
示例#5
0
        public async Task UpdateDialogsSuccessTest()
        {
            var responseDialogs = await this.client.ChatClient.GetDialogsAsync();

            Assert.AreEqual(responseDialogs.StatusCode, HttpStatusCode.OK);

            var updateDialogRequest = new UpdateDialogRequest()
            {
                DialogId = responseDialogs.Result.Items.First().Id,
                Name     = "New name 2"
            };
            var responseDelete = await this.client.ChatClient.UpdateDialogAsync(updateDialogRequest);

            Assert.AreEqual(responseDelete.StatusCode, HttpStatusCode.OK);
            Assert.AreEqual(responseDelete.Result.Name, updateDialogRequest.Name);
        }
		public async Task<Dialog> UpdateDialogAsync(string dialogId, List<int> addedUsers = null, List<int> deletedUsers = null, string name = null, string photo = null)
		{
			var updateDialog = new UpdateDialogRequest ();
			updateDialog.DialogId = dialogId;

			if (addedUsers != null) {
				updateDialog.PushAll = new EditedOccupants () {
					OccupantsIds = addedUsers
				};
			}

			if (deletedUsers != null) {
				updateDialog.PullAll = new EditedOccupants () {
					OccupantsIds = deletedUsers
				};
			}

			updateDialog.Name = name;
			updateDialog.PhotoLink = photo;

			var dialogResponse = await this.client.ChatClient.UpdateDialogAsync(updateDialog);
			if (dialogResponse.StatusCode == HttpStatusCode.OK) {
				return dialogResponse.Result;
			}

			return null;
		}
        private async void SaveCommandExecute()
        {
            IsLoading = true;
            var updateDialogRequest = new UpdateDialogRequest { DialogId = currentDialog.Id };

            if (newImageBytes != null)
            {
                var contentHelper = new ContentClientHelper(QuickbloxClient);
                updateDialogRequest.PhotoLink = (await contentHelper.UploadPublicImage(newImageBytes))?.Url;
            }

            if (currentDialog.Name != ChatName)
            {
                updateDialogRequest.Name = ChatName;
            }

            if (!string.IsNullOrEmpty(updateDialogRequest.PhotoLink) || !string.IsNullOrEmpty(updateDialogRequest.Name))
            {
                var updateDialogResponse = await QuickbloxClient.ChatClient.UpdateDialogAsync(updateDialogRequest);

                if (updateDialogResponse.StatusCode == HttpStatusCode.OK)
                {
                    var dialogsManager = ServiceLocator.Locator.Get<IDialogsManager>();
                    var dialog = dialogsManager.Dialogs.FirstOrDefault(d => d.Id == currentDialog.Id);

                    var groupChatManager = QuickbloxClient.ChatXmppClient.GetGroupChatManager(currentDialog.XmppRoomJid, currentDialog.Id);

                    if (!string.IsNullOrEmpty(updateDialogRequest.Name))
                    {
                        dialog.Name = updateDialogRequest.Name;
                        groupChatManager.NotifyGroupNameChanged(updateDialogRequest.Name, updateDialogResponse.Result.UpdateAt);
                    }

                    if (!string.IsNullOrEmpty(updateDialogRequest.PhotoLink))
                    {
                        dialog.Photo = updateDialogRequest.PhotoLink;
                        dialog.Image = ChatImage;
                        groupChatManager.NotifyGroupImageChanged(updateDialogRequest.PhotoLink, updateDialogResponse.Result.UpdateAt);
                    }
                    
                    IsLoading = false;
                    NavigationService.GoBack();
                }
            }

            IsLoading = false;
        }
        private async Task UpdateGroup()
        {
            var selectedContacts = allContacts.Where(c => c.IsSelected).ToList();

            var updateDialogRequest = new UpdateDialogRequest {DialogId = editedDialog.Id};
            var addedUsers = selectedContacts.Where(c => !editedDialog.OccupantIds.Contains(c.Item.UserId)).Select(u => u.Item.UserId).ToArray();
            if (addedUsers.Any())
                updateDialogRequest.PushAll = new EditedOccupants() {OccupantsIds = addedUsers};

            var updateDialogResponse = await QuickbloxClient.ChatClient.UpdateDialogAsync(updateDialogRequest);

            if (updateDialogResponse.StatusCode == HttpStatusCode.OK)
            {
                var dialogsManager = ServiceLocator.Locator.Get<IDialogsManager>();
                var dialog = dialogsManager.Dialogs.FirstOrDefault(d => d.Id == editedDialog.Id);
                dialog.OccupantIds = updateDialogResponse.Result.OccupantsIds;

                var groupChatManager = QuickbloxClient.ChatXmppClient.GetGroupChatManager(editedDialog.XmppRoomJid, editedDialog.Id);
                groupChatManager.NotifyAboutGroupUpdate(addedUsers, new List<int>(), updateDialogResponse.Result);

                NavigationService.Navigate(ViewLocator.GroupChat, editedDialog.Id);
            }
        }