public bool PostMessage(DirectMessageChannel channel, string message) { return(PostMessage(channel.Id, new MessageParameters { Message = message })); }
public ActionResult DirectMessage(string Receiver) { try { string userId = User.Identity.GetUserId(); ApplicationUser receiver = db.Users.Where(u => u.UserName == Receiver).First(); ApplicationUser sender = db.Users.Where(u => u.Id == userId).First(); ViewBag.UserName = sender.UserName; ViewBag.Receiver = receiver.UserName; DirectMessageChannel dmChannel = null; // API Connect TwilioClient.Init(TwilioApiKeys.accountSid, TwilioApiKeys.authToken); try { dmChannel = db.DirectMessageChannels.Where(dm => dm.ReciverId.Id == receiver.Id && dm.SenderId.Id == sender.Id || dm.ReciverId.Id == sender.Id && dm.SenderId.Id == receiver.Id).First(); return(View(MessageResource.Read(TwilioApiKeys.serviceSid, dmChannel.ChannelId))); } catch (Exception e) { Console.WriteLine(e); } if (dmChannel == null) { // API Create channel var channel = ChannelResource.Create(TwilioApiKeys.serviceSid, friendlyName: "DM Channel", uniqueName: $"{sender.UserName}-{receiver.UserName}", type: ChannelResource.ChannelTypeEnum.Private); // Database DMChannel dmChannel = new DirectMessageChannel(); dmChannel.ChannelId = channel.Sid; dmChannel.ReciverId = receiver; dmChannel.SenderId = sender; // API Add members MemberResource.Create(TwilioApiKeys.serviceSid, channel.Sid, dmChannel.ReciverId.UserName); MemberResource.Create(TwilioApiKeys.serviceSid, channel.Sid, dmChannel.SenderId.UserName); // Save DMChannel to Database db.DirectMessageChannels.Add(dmChannel); db.SaveChanges(); return(View(MessageResource.Read(TwilioApiKeys.serviceSid, channel.Sid))); } } catch (Exception e) { Console.WriteLine(e); } return(View("Index")); }
public override int GetHashCode() { unchecked { var hashCode = Id.GetHashCode(); hashCode = (hashCode * 397) ^ (AvatarId != null ? AvatarId.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Mention != null ? Mention.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Username != null ? Username.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Discriminator != null ? Discriminator.GetHashCode() : 0); hashCode = (hashCode * 397) ^ CreatedAt.GetHashCode(); hashCode = (hashCode * 397) ^ IsBot.GetHashCode(); hashCode = (hashCode * 397) ^ (Presence != null ? Presence.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (DirectMessageChannel != null ? DirectMessageChannel.GetHashCode() : 0); return(hashCode); } }
public static MenuFlyout MakeGroupChannelMenu(DirectMessageChannel dm) { MenuFlyout menu = new MenuFlyout(); menu.MenuFlyoutPresenterStyle = (Style)App.Current.Resources["MenuFlyoutPresenterStyle1"]; // Add users int x = 0; foreach (User user in LocalState.DMs[dm.Id].Users) { // Create SubItem for user MenuFlyoutSubItem item = new MenuFlyoutSubItem() { Text = user.Username }; // Add "Profile" button to subitem MenuFlyoutItem profile = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/Profile"), Icon = new SymbolIcon(Symbol.ContactInfo), Tag = user }; profile.Click += FlyoutManager.OpenProfile; item.Items.Add(profile); // Add Seperator MenuFlyoutSeparator sep1 = new MenuFlyoutSeparator(); item.Items.Add(sep1); // If current user owns the dm if (dm.OwnerId == LocalState.CurrentUser.Id) { // Add "Remove from DM" button MenuFlyoutItem removeFromDm = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/RemoveFromGroup"), Icon = new SymbolIcon(Symbol.LeaveChat), Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)), Tag = new Tuple <string, string>(dm.Id, user.Id) }; removeFromDm.Click += FlyoutManager.RemoveGroupUser; item.Items.Add(removeFromDm); // Add Seperator MenuFlyoutSeparator sep2 = new MenuFlyoutSeparator(); item.Items.Add(sep2); } // Create "Add Friend" button MenuFlyoutItem addFriend = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/AddFriend"), Icon = new SymbolIcon(Symbol.AddFriend), Tag = dm.Users.ToList()[x].Id }; addFriend.Click += FlyoutManager.AddFriend; // Create "Accept Friend Request" button MenuFlyoutItem acceptFriendRequest = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/AcceptFriendRequest"), Icon = new SymbolIcon(Symbol.AddFriend), Tag = dm.Users.ToList()[x].Id }; acceptFriendRequest.Click += FlyoutManager.AddFriend; // Create "Remove Friend" button MenuFlyoutItem removeFriend = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/RemoveFriend"), Icon = new SymbolIcon(Symbol.ContactPresence), Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)), Tag = dm.Users.ToList()[x].Id }; removeFriend.Click += FlyoutManager.RemoveFriend; // Create "Block" button MenuFlyoutItem block = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/Block"), Icon = new SymbolIcon(Symbol.BlockContact), Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)), Tag = dm.Users.ToList()[x].Id }; block.Click += FlyoutManager.BlockUser; // Create "Unblock" button MenuFlyoutItem unBlock = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/Unblock"), Icon = new SymbolIcon(Symbol.ContactPresence), Tag = dm.Users.ToList()[x].Id }; unBlock.Click += FlyoutManager.RemoveFriend; // Choose buttons to add if (LocalState.Friends.ContainsKey(dm.Users.FirstOrDefault().Id)) { switch (LocalState.Friends[dm.Users.FirstOrDefault().Id].Type) { // No relation case 0: // Add "Add Friend" and "Block" buttons item.Items.Add(addFriend); item.Items.Add(block); break; // Friends case 1: // Add "Remove Friend" and "Block" buttons item.Items.Add(removeFriend); item.Items.Add(block); break; // Blocked case 2: // Add "Unblock" button item.Items.Add(unBlock); break; // Incoming Friend Request case 3: // Add "Accept Friend Request" and "Block" buttons item.Items.Add(acceptFriendRequest); item.Items.Add(block); break; // Outgoing Friend Request case 4: // Add "Block" button menu.Items.Add(block); break; } } else { // Default to no relation item.Items.Add(addFriend); item.Items.Add(block); } // Add subitems menu.Items.Add(item); x++; } // Add seperator MenuFlyoutSeparator sep3 = new MenuFlyoutSeparator(); menu.Items.Add(sep3); // Add "Leave DM" button MenuFlyoutItem leaveDm = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/LeaveGroup"), Icon = new SymbolIcon(Symbol.LeaveChat), Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)), Tag = new Tuple <string, string>(dm.Id, LocalState.CurrentUser.Id) }; if (dm.OwnerId == LocalState.CurrentUser.Id) { leaveDm.Click += FlyoutManager.RemoveGroupUser; } else { leaveDm.Click += FlyoutManager.LeaveUnownedChannel; } menu.Items.Add(leaveDm); return(menu); }
/// <summary> /// Make SimpleChannel from DMChannel /// </summary> /// <param name="channel">DMChannel</param> /// <returns>SimpleChannel</returns> public static SimpleChannel MakeChannel(DirectMessageChannel channel) { // Create basic SimpleChannel SimpleChannel sc = new SimpleChannel(); sc.Id = channel.Id; sc.Type = channel.Type; switch (channel.Type) { // DM case 1: // Assign basic DM info sc.Name = "@" + channel.Users.FirstOrDefault().Username; sc.LastMessageId = channel.LastMessageId; sc.ImageURL = "https://cdn.discordapp.com/avatars/" + channel.Users.FirstOrDefault().Id + "/" + channel.Users.FirstOrDefault().Avatar + ".png?size=64"; // Add members sc.Members = new Dictionary <string, User>(); foreach (User user in channel.Users) { sc.Members.Add(user.Id, user); } // Determine presence if (LocalState.PresenceDict.ContainsKey(channel.Users.FirstOrDefault().Id)) { sc.UserStatus = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id]; sc.Playing = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game; if (LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game != null) { sc.Playing = new Game() { Name = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game .Name, Type = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game.Type, Url = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game.Url }; } } else { sc.UserStatus = new Presence() { Status = "offline" }; } //sc.IsMuted = LocalState.GuildSettings.ContainsKey(channel.raw.GuildId) ? (LocalState.GuildSettings[channel.raw.GuildId].channelOverrides.ContainsKey(channel.raw.Id) ? LocalState.GuildSettings[channel.raw.GuildId].channelOverrides[channel.raw.Id].Muted : false) : false; if (LocalState.RPC.ContainsKey(sc.Id)) { ReadState readstate = LocalState.RPC[sc.Id]; sc.NotificationCount = readstate.MentionCount; var StorageChannel = LocalState.DMs[sc.Id]; if (StorageChannel.LastMessageId != null && readstate.LastMessageId != StorageChannel.LastMessageId) { sc.IsUnread = true; } else { sc.IsUnread = false; } } return(sc); // Group DM case 3: // Assign basic Group DM info sc.Name = channel.Name; sc.LastMessageId = channel.LastMessageId; sc.Subtitle = App.GetString("/Main/members").Replace("<count>", (channel.Users.Count() + 1).ToString()); sc.Icon = channel.Icon; // Override null name if (!string.IsNullOrEmpty(channel.Name)) { sc.Name = channel.Name; } else { List <string> channelMembers = new List <string>(); foreach (var d in channel.Users) { channelMembers.Add(d.Username); } sc.Name = string.Join(", ", channelMembers); } // Determine Unread and Notification status if (LocalState.RPC.ContainsKey(sc.Id)) { ReadState readstate = LocalState.RPC[sc.Id]; sc.NotificationCount = readstate.MentionCount; var StorageChannel = LocalState.DMs[sc.Id]; if (StorageChannel.LastMessageId != null && readstate.LastMessageId != StorageChannel.LastMessageId) { sc.IsUnread = true; } else { sc.IsUnread = false; } } // Show SimpleChannel sc.HavePermissions = true; return(sc); } return(null); }
public void AddUpdate(DirectMessageChannel channel) { ims[channel.id] = channel; }
/// <summary> /// Make Flyout for DMChannel /// </summary> /// <param name="dm">DM Channel</param> /// <returns>A MenuFlyout for the DM</returns> public static MenuFlyout MakeDMChannelMenu(DirectMessageChannel dm) { MenuFlyout menu = new MenuFlyout(); menu.MenuFlyoutPresenterStyle = (Style)App.Current.Resources["MenuFlyoutPresenterStyle1"]; // Add "Profile" button MenuFlyoutItem profile = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/Profile"), Icon = new SymbolIcon(Symbol.ContactInfo), Tag = dm.Users.FirstOrDefault() }; profile.Click += FlyoutManager.OpenProfile; menu.Items.Add(profile); // Add seperator MenuFlyoutSeparator sep1 = new MenuFlyoutSeparator(); menu.Items.Add(sep1); // Create "Remove Friend" button MenuFlyoutItem removeFriend = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/RemoveFriend"), Icon = new SymbolIcon(Symbol.ContactPresence), Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)), Tag = dm.Users.FirstOrDefault().Id }; removeFriend.Click += FlyoutManager.RemoveFriend; // Create "Add Friend" button MenuFlyoutItem addFriend = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/AddFriend"), Icon = new SymbolIcon(Symbol.AddFriend), Tag = dm.Users.FirstOrDefault().Id }; addFriend.Click += FlyoutManager.AddFriend; // Create "Accept Friend Request" button MenuFlyoutItem acceptFriendRequest = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/AcceptFriendRequest"), Icon = new SymbolIcon(Symbol.AddFriend), Tag = dm.Users.FirstOrDefault().Id }; acceptFriendRequest.Click += FlyoutManager.AddFriend; // Create "Block" button MenuFlyoutItem block = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/Block"), Icon = new SymbolIcon(Symbol.BlockContact), Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)), Tag = dm.Users.FirstOrDefault().Id }; block.Click += FlyoutManager.BlockUser; // Create "Unblock" button MenuFlyoutItem unBlock = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/Unblock"), Tag = dm.Users.FirstOrDefault().Id, Icon = new SymbolIcon(Symbol.ContactPresence) }; unBlock.Click += FlyoutManager.RemoveFriend; // Choose buttons to add if (LocalState.Friends.ContainsKey(dm.Users.FirstOrDefault().Id)) { switch (LocalState.Friends[dm.Users.FirstOrDefault().Id].Type) { // No relation case 0: // Add "Add Friend" and "Block" buttons menu.Items.Add(addFriend); menu.Items.Add(block); break; // Friend case 1: // Add "Remove Friend" and "Block" buttons menu.Items.Add(removeFriend); menu.Items.Add(block); break; // Blocked case 2: // Add "Unblock" button menu.Items.Add(unBlock); break; // Incoming Friend Request case 3: // Add "Accept Friend Request" and "Block" buttons menu.Items.Add(acceptFriendRequest); menu.Items.Add(block); break; // Outgoing Friend Request case 4: // Add "Block" button menu.Items.Add(block); break; } } else { // Default to no relation menu.Items.Add(addFriend); menu.Items.Add(block); } // Add Seperator MenuFlyoutSeparator sep2 = new MenuFlyoutSeparator(); menu.Items.Add(sep2); // Add "Close DM" button MenuFlyoutItem CloseDM = new MenuFlyoutItem() { Text = App.GetString("/Flyouts/CloseDM"), Icon = new SymbolIcon(Symbol.LeaveChat), Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)), Tag = dm.Id, }; CloseDM.Click += FlyoutManager.DeleteChannel; menu.Items.Add(CloseDM); return(menu); }
public bool PostMessage(DirectMessageChannel channel, MessageParameters messageParameters) { return(PostMessage(channel.Id, messageParameters)); }
public GatewayDirectMessageChannelCreatedMessage(DirectMessageChannel channel) { Channel = channel; }