public async Task NewMessageEvent(KahlaUser receiver, Conversation conversation, string content, KahlaUser sender, bool alert) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var newMessageEvent = new NewMessageEvent { ConversationId = conversation.Id, Sender = sender, Content = content, AESKey = conversation.AESKey, Muted = !alert }; var pushTasks = new List <Task>(); if (channel != -1) { pushTasks.Add(_stargatePushService.PushMessageAsync(token, channel, _Serialize(newMessageEvent), true)); } if (alert && receiver.Id != sender.Id) { pushTasks.Add(_thirdPartyPushService.PushAsync(receiver.Id, sender.Email, _Serialize(newMessageEvent))); } await Task.WhenAll(pushTasks); }
public async Task RefreshUserProfile() { BotLogger.LogInfo($"Getting account profile..."); var profile = await AuthService.MeAsync(); Profile = profile.Value; }
public async Task NewFriendRequestEvent(KahlaUser target, Request request) { var token = await _appsContainer.AccessToken(); var newFriendRequestEvent = new NewFriendRequestEvent { Request = request }; if (target.CurrentChannel > 0) { _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, target.CurrentChannel, newFriendRequestEvent)); } _cannonService.FireAsync <ThirdPartyPushService>(s => s.PushAsync(target.HisDevices, newFriendRequestEvent)); }
public async Task NewFriendRequestEvent(KahlaUser target, Request request) { var token = await _appsContainer.AccessToken(); var newFriendRequestEvent = new NewFriendRequestEvent { Request = request }; if (target.CurrentChannel != -1) { await _stargatePushService.PushMessageAsync(token, target.CurrentChannel, JsonConvert.SerializeObject(newFriendRequestEvent), true); } await _thirdPartyPushService.PushAsync(target.HisDevices, "*****@*****.**", JsonConvert.SerializeObject(newFriendRequestEvent)); }
public async Task DissolveEvent(KahlaUser receiver, int conversationId) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var dissolvevent = new DissolveEvent { ConversationId = conversationId }; if (channel != -1) { await _stargatePushService.PushMessageAsync(token, channel, JsonConvert.SerializeObject(dissolvevent), true); } }
public async Task DissolveEvent(KahlaUser receiver, int conversationId) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var dissolvevent = new DissolveEvent { ConversationId = conversationId }; if (channel > 0) { _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, channel, dissolvevent)); } }
public async Task SomeoneLeftEvent(KahlaUser receiver, KahlaUser leftMember, int conversationId) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var someoneLeftEvent = new SomeoneLeftEvent { LeftUser = leftMember, ConversationId = conversationId }; if (channel != -1) { await _stargatePushService.PushMessageAsync(token, channel, JsonConvert.SerializeObject(someoneLeftEvent), true); } }
public async Task NewMemberEvent(KahlaUser receiver, KahlaUser newMember, int conversationId) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var newMemberEvent = new NewMemberEvent { NewMember = newMember, ConversationId = conversationId }; if (channel > 0) { _cannonService.FireAsync <StargatePushService>(s => s.PushMessageAsync(token, channel, newMemberEvent), async(e) => await HandleError(e)); } }
public async Task FriendAcceptedEvent(KahlaUser receiver, KahlaUser accepter) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var friendAcceptedEvent = new FriendAcceptedEvent { Target = accepter }; if (channel != -1) { await _stargatePushService.PushMessageAsync(token, channel, JsonConvert.SerializeObject(friendAcceptedEvent), true); } await _thirdPartyPushService.PushAsync(receiver.Id, "*****@*****.**", JsonConvert.SerializeObject(friendAcceptedEvent)); }
public async Task TimerUpdatedEvent(KahlaUser receiver, int newTimer, int conversationId) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var timerUpdatedEvent = new TimerUpdatedEvent { NewTimer = newTimer, ConversationId = conversationId }; if (channel > 0) { _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, channel, timerUpdatedEvent)); } }
public async Task WereDeletedEvent(KahlaUser receiver, KahlaUser trigger) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var wereDeletedEvent = new WereDeletedEvent { Trigger = trigger }; if (channel != -1) { await _stargatePushService.PushMessageAsync(token, channel, _Serialize(wereDeletedEvent), true); } await _thirdPartyPushService.PushAsync(receiver.Id, "*****@*****.**", _Serialize(wereDeletedEvent)); }
public async Task SomeoneLeftEvent(KahlaUser receiver, KahlaUser leftMember, int conversationId) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var someoneLeftEvent = new SomeoneLeftEvent { LeftUser = leftMember, ConversationId = conversationId }; if (channel > 0) { _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, channel, someoneLeftEvent)); } }
public async Task TimerUpdatedEvent(KahlaUser receiver, int newTimer, int conversationId) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var timerUpdatedEvent = new TimerUpdatedEvent { NewTimer = newTimer, ConversationId = conversationId }; if (channel != -1) { await _stargatePushService.PushMessageAsync(token, channel, _Serialize(timerUpdatedEvent), true); } }
public async Task NewFriendRequestEvent(KahlaUser receiver, KahlaUser requester) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var newFriendRequestEvent = new NewFriendRequestEvent { RequesterId = requester.Id, Requester = requester }; if (channel != -1) { await _stargatePushService.PushMessageAsync(token, channel, _Serialize(newFriendRequestEvent), true); } await _thirdPartyPushService.PushAsync(receiver.Id, requester.Email, _Serialize(newFriendRequestEvent)); }
public async Task GroupJoinedEvent(KahlaUser receiver, GroupConversation createdConversation, Message latestMessage, int messageCount) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var groupJoinedEvent = new GroupJoinedEvent { CreatedConversation = createdConversation, LatestMessage = latestMessage, MessageCount = messageCount }; if (channel != -1) { await _stargatePushService.PushMessageAsync(token, channel, JsonConvert.SerializeObject(groupJoinedEvent), true); } }
public async Task FriendsChangedEvent(KahlaUser target, Request request, bool result, PrivateConversation conversation) { var token = await _appsContainer.AccessToken(); var friendAcceptedEvent = new FriendsChangedEvent { Request = request, Result = result, CreatedConversation = conversation }; if (target.CurrentChannel != -1) { await _stargatePushService.PushMessageAsync(token, target.CurrentChannel, JsonConvert.SerializeObject(friendAcceptedEvent), true); } await _thirdPartyPushService.PushAsync(target.HisDevices, "*****@*****.**", JsonConvert.SerializeObject(friendAcceptedEvent)); }
public async Task FriendsChangedEvent(KahlaUser target, Request request, bool result, PrivateConversation conversation) { var token = await _appsContainer.AccessToken(); var friendAcceptedEvent = new FriendsChangedEvent { Request = request, Result = result, CreatedConversation = conversation }; if (target.CurrentChannel > 0) { _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, target.CurrentChannel, friendAcceptedEvent)); } _cannonService.FireAsync <ThirdPartyPushService>(s => s.PushAsync(target.HisDevices, friendAcceptedEvent)); }
public async Task GroupJoinedEvent(KahlaUser receiver, GroupConversation createdConversation, Message latestMessage, int messageCount) { var token = await _appsContainer.AccessToken(); var channel = receiver.CurrentChannel; var groupJoinedEvent = new GroupJoinedEvent { CreatedConversation = createdConversation, LatestMessage = latestMessage, MessageCount = messageCount }; if (channel > 0) { _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, channel, groupJoinedEvent)); } }
public async Task FriendDeletedEvent(int stargateChannel, IEnumerable <Device> devices, KahlaUser trigger, int deletedConversationId) { var token = await _appsContainer.AccessToken(); var friendDeletedEvent = new FriendDeletedEvent { Trigger = trigger, ConversationId = deletedConversationId }; if (stargateChannel > 0) { _cannonService.FireAsync <PushMessageService>(s => s.PushMessageAsync(token, stargateChannel, friendDeletedEvent)); } _cannonService.FireAsync <ThirdPartyPushService>(s => s.PushAsync(devices, friendDeletedEvent)); }
public async Task FriendDeletedEvent(int stargateChannel, IEnumerable <Device> devices, KahlaUser trigger, int deletedConversationId) { var token = await _appsContainer.AccessToken(); var friendDeletedEvent = new FriendDeletedEvent { Trigger = trigger, ConversationId = deletedConversationId }; if (stargateChannel != -1) { await _stargatePushService.PushMessageAsync(token, stargateChannel, JsonConvert.SerializeObject(friendDeletedEvent), true); } await _thirdPartyPushService.PushAsync(devices, "*****@*****.**", JsonConvert.SerializeObject(friendDeletedEvent)); }
public async Task <string> BuildEmail(KahlaUser user, KahlaDbContext dbContext, string domain) { int totalUnread = 0, inConversations = 0; var conversations = await dbContext.MyContacts(user.Id).ToListAsync(); var msg = new StringBuilder(); foreach (var contact in conversations) { // Ignore conversations muted. if (contact.Discriminator == nameof(GroupConversation)) { if (contact.Muted) { continue; } } var currentUnread = contact.UnReadAmount; if (currentUnread <= 0) { continue; } totalUnread += currentUnread; inConversations++; if (inConversations == 20) { msg.AppendLine("<li>Some conversations haven't been displayed because there are too many items.</li>"); } else if (inConversations > 20) { // append nothing to avoid email too large. } else { msg.AppendLine($"<li>{currentUnread} unread message{AppendS(currentUnread)} in {(contact.Discriminator == nameof(GroupConversation) ? "group" : "friend")} <a href=\"{domain}/talking/{contact.ConversationId}\">{contact.DisplayName}</a>.</li>"); } } var pendingRequests = await dbContext .Requests .AsNoTracking() .Where(t => t.TargetId == user.Id) .CountAsync(t => t.Completed == false); if (inConversations > 0 || pendingRequests > 0) { if (inConversations > 0) { msg.Insert(0, $"<h4>You have {totalUnread} unread message{AppendS(totalUnread)} in {inConversations} conversation{AppendS(inConversations)} from your Kahla friends!<h4>\r\n<ul>\r\n"); msg.AppendLine("</ul>"); } if (pendingRequests > 0) { msg.AppendLine($"<h4>You have {pendingRequests} pending friend request{AppendS(pendingRequests)} in Kahla.<h4>"); } msg.AppendLine($"Click to <a href='{domain}'>Open Kahla Now</a>."); msg.AppendLine($"<br><p>Click <a href='{domain}/advanced-setting'>here</a> to unsubscribe all notifications.</p>"); return(msg.ToString()); } return(string.Empty); }
public async Task <string> BuildEmail(KahlaUser user, KahlaDbContext dbContext, IConfiguration configuration) { int totalUnread = 0, inConversations = 0; var conversations = await dbContext.MyConversations(user.Id); var msg = new StringBuilder(); foreach (var conversation in conversations) { // Ignore conversations muted. if (conversation is GroupConversation currentGroup) { var relation = currentGroup .Users .FirstOrDefault(t => t.UserId == user.Id); if (relation.Muted) { continue; } } var currentUnread = conversation.GetUnReadAmount(user.Id); if (currentUnread <= 0) { continue; } totalUnread += currentUnread; inConversations++; if (inConversations == 20) { msg.AppendLine("<li>Some conversations haven't been displayed because there are too many items.</li>"); } else if (inConversations > 20) { // append nothing to avoid email too large. } else { msg.AppendLine($"<li>{currentUnread} unread message{AppendS(currentUnread)} in {(conversation is GroupConversation ? "group" : "friend")} <a href=\"{configuration["AppDomain"]}/talking/{conversation.Id}\">{conversation.GetDisplayName(user.Id)}</a>.</li>"); } } var pendingRequests = await dbContext .Requests .AsNoTracking() .Where(t => t.TargetId == user.Id) .CountAsync(t => t.Completed == false); if (inConversations > 0 || pendingRequests > 0) { if (inConversations > 0) { msg.Insert(0, $"<h4>You have {totalUnread} unread message{AppendS(totalUnread)} in {inConversations} conversation{AppendS(inConversations)} from your Kahla friends!<h4>\r\n<ul>\r\n"); msg.AppendLine("</ul>"); } if (pendingRequests > 0) { msg.AppendLine($"<h4>You have {pendingRequests} pending friend request{AppendS(pendingRequests)} in Kahla.<h4>"); } msg.AppendLine($"Click to <a href='{configuration["AppDomain"]}'>Open Kahla Now</a>."); return(msg.ToString()); } return(string.Empty); }
public async Task NewMessageEvent(string recieverId, int conversationId, string Content, KahlaUser sender) { var token = await _appsContainer.AccessToken(); var user = await _dbContext.Users.FindAsync(recieverId); var channel = user.CurrentChannel; var nevent = new NewMessageEvent { Type = EventType.NewMessage, ConversationId = conversationId, Sender = sender, Content = Content }; if (channel != -1) { await _pushMessageService.PushMessageAsync(token, channel, _CammalSer(nevent), true); } }
protected string Mention(KahlaUser target) { return($" @{target.NickName.Replace(" ", "")}"); }
public async Task NewFriendRequestEvent(int stargateChannel, IEnumerable <Device> devices, KahlaUser requester, int requestId) { var token = await _appsContainer.AccessToken(); var newFriendRequestEvent = new NewFriendRequestEvent { RequesterId = requester.Id, Requester = requester, RequestId = requestId }; if (stargateChannel != -1) { await _stargatePushService.PushMessageAsync(token, stargateChannel, JsonConvert.SerializeObject(newFriendRequestEvent), true); } await _thirdPartyPushService.PushAsync(devices, requester.Email, JsonConvert.SerializeObject(newFriendRequestEvent)); }