private async Task Initialize(ChatNavigationParameter chatParameter) { IsLoading = true; currentUserId = SettingsManager.Instance.ReadFromSettings<int>(SettingsKeys.CurrentUserId); if (chatParameter.Dialog != null) { dialog = chatParameter.Dialog; ChatName = chatParameter.Dialog.Name; ChatImage = chatParameter.Dialog.Image; int otherUserId = dialog.OccupantIds.FirstOrDefault(id => id != currentUserId); await QmunicateLoggerHolder.Log(QmunicateLogLevel.Debug, string.Format("Initializing Chat page. CurrentUserId: {0}. OtherUserId: {1}.", currentUserId, otherUserId)); if (!string.IsNullOrEmpty(chatParameter.Dialog.Id)) await MessageCollectionViewModel.LoadMessages(chatParameter.Dialog.Id); if (otherUserId != 0) { privateChatManager = QuickbloxClient.ChatXmppClient.GetPrivateChatManager(otherUserId, chatParameter.Dialog.Id); privateChatManager.OnMessageReceived += ChatManagerOnOnMessageReceived; privateChatManager.OnIsTyping += PrivateChatManagerOnOnIsTyping; privateChatManager.OnPausedTyping += PrivateChatManagerOnOnPausedTyping; } CheckIsMessageSendingAllowed(); } IsLoading = false; }
private async Task Initialize(ChatNavigationParameter chatParameter) { IsLoading = true; currentUserId = SettingsManager.Instance.ReadFromSettings<int>(SettingsKeys.CurrentUserId); if (chatParameter.Dialog != null) { dialog = chatParameter.Dialog; ChatName = chatParameter.Dialog.Name; ChatImage = chatParameter.Dialog.Image; otherUserId = dialog.OccupantIds.FirstOrDefault(id => id != currentUserId); await QmunicateLoggerHolder.Log(QmunicateLogLevel.Debug, string.Format("Initializing Chat page. CurrentUserId: {0}. OtherUserId: {1}.", currentUserId, otherUserId)); if (!string.IsNullOrEmpty(chatParameter.Dialog.Id)) await MessageCollectionViewModel.LoadMessages(chatParameter.Dialog.Id); if (otherUserId != 0) { privateChatManager = QuickbloxClient.ChatXmppClient.GetPrivateChatManager(otherUserId, chatParameter.Dialog.Id); privateChatManager.MessageReceived += ChatManagerOnOnMessageReceived; privateChatManager.OpponentStartedTyping += PrivateChatManagerOnOpponentStartedTyping; privateChatManager.OpponentPausedTyping += PrivateChatManagerOpponentOpponentPausedTyping; } QuickbloxClient.ChatXmppClient.PresenceReceived += ChatXmppClientOnPresenceReceived; IsOnline = QuickbloxClient.ChatXmppClient.Presences.Any(p => p.UserId == otherUserId && (p.PresenceType == PresenceType.None || p.PresenceType == PresenceType.Subscribed)); var otherUser = await ServiceLocator.Locator.Get<ICachingQuickbloxClient>().GetUserById(otherUserId); if (otherUser?.LastRequestAt != null) LastActive = otherUser.LastRequestAt.Value; CheckIsMessageSendingAllowed(); } IsLoading = false; }