Example #1
0
        private void UpdateCount()
        {
            try
            {
                this.Dispatcher.Invoke((Action)(() =>
                {
                    TBStatus.Text = "Updating ...";
                }));
                NotificationCount notif = _helper.UpdateStatus();

                this.Dispatcher.Invoke((Action)(() =>
                {
                    SetLabelCount(LabelHome, notif.UnreadHomelineMsgCount);
                    SetLabelCount(LabelAt, notif.UnreadAtlineMsgCount);
                    SetLabelCount(LabelOwn, notif.UnreadOwnerlineMsgCount);
                    SetLabelCount(LabelReply, notif.UnreadReplyCount);
                    SetLabelCount(LabelImportant, notif.UnreadImportantMsgCount);

                    TBStatus.Text = "Welcome to use MSGorilla, " + notif.Userid;
                    TBStatus.Foreground = Brushes.Black;
                }));
            }
            catch (Exception e)
            {
                this.Dispatcher.Invoke((Action)(() =>
                {
                    TBStatus.Text = e.ToString();
                    TBStatus.Foreground = Brushes.Red;

                    //MessageBoxResult result = MessageBox.Show(e.ToString(), "Confirmation", MessageBoxButton.OK, MessageBoxImage.Error);
                }));
            }
        }
Example #2
0
 public void clearAtlineNotifCount(string userid)
 {
     using (var _gorillaCtx = new MSGorillaEntities())
     {
         NotificationCount notif = FindUserNotif(userid, _gorillaCtx);
         notif.UnreadAtlineMsgCount = 0;
         _gorillaCtx.SaveChanges();
     }
 }
Example #3
0
 public void incrementImportantMsgCount(string userid)
 {
     using (var _gorillaCtx = new MSGorillaEntities())
     {
         NotificationCount notif = FindUserNotif(userid, _gorillaCtx);
         notif.UnreadImportantMsgCount++;
         _gorillaCtx.SaveChanges();
     }
 }
Example #4
0
        public void UpdateBadge()
        {
            var badgeXml        = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);
            var badgeAttributes = badgeXml.GetElementsByTagName("badge");

            bool clearValue = false;

            if (errorState)
            {
                badgeAttributes[0].Attributes.GetNamedItem("value").NodeValue = "error";
            }
            else if (NotificationCount > 0)
            {
                badgeAttributes[0].Attributes.GetNamedItem("value").NodeValue = NotificationCount.ToString();
            }
            else if (new Accounts().Enabled.Count() <= 0)
            {
                clearValue = true;
            }
            else
            {
                var    status = new Status();
                string value  = "";
                switch (status.status)
                {
                case StatusType.Available:
                    value = "available";
                    break;

                case StatusType.Away:
                    value = "away";
                    break;

                case StatusType.Busy:
                    value = "busy";
                    break;

                case StatusType.Offline:
                    value = "unavailable";
                    break;
                }

                badgeAttributes[0].Attributes.GetNamedItem("value").NodeValue = value;
            }

            if (clearValue)
            {
                BadgeUpdater.Clear();
            }
            else
            {
                BadgeUpdater.Update(new BadgeNotification(badgeXml));
            }
        }
        public List <DisplayReply> GetNewReply()
        {
            Logger.Debug("Query new replies.");
            NotificationCount notif = _client.GetNotificationCount();

            if (notif.UnreadReplyCount == 0)
            {
                Logger.Debug("No reply found.");
                return(new List <DisplayReply>());
            }

            Logger.Debug(_client.GetReply(notif.UnreadReplyCount).message.Count + " replies found");
            return(_client.GetReply(notif.UnreadReplyCount).message);
        }
Example #6
0
        public NotificationCount FindUserNotif(string userid, MSGorillaEntities _gorillaCtx)
        {
            NotificationCount notifCount = _gorillaCtx.NotificationCounts.Find(userid);

            if (notifCount == null)
            {
                notifCount        = new NotificationCount();
                notifCount.Userid = userid;
                notifCount.UnreadAtlineMsgCount    = notifCount.UnreadHomelineMsgCount = 0;
                notifCount.UnreadOwnerlineMsgCount = notifCount.UnreadReplyCount = 0;

                notifCount = _gorillaCtx.NotificationCounts.Add(notifCount);
                _gorillaCtx.SaveChanges();
            }
            return(notifCount);
        }
Example #7
0
        private void OnPropertyChanged(DependencyObject d, DependencyProperty prop)
        {
            if (prop == IsSelectedProperty)
            {
                // Toggle Selection indicator
                if (IsSelected)
                {
                    SelectIndicator.Fade(1, 200).Start();
                }
                else
                {
                    SelectIndicator.Fade(0, 200).Start();
                }
            }
            if (prop == IsUnreadProperty)
            {
                // Update unread indicator visibilty
                if (IsUnread && !IsMuted)
                {
                    UnreadIndicator.Visibility = Visibility.Visible;
                }
                else
                {
                    UnreadIndicator.Visibility = Visibility.Collapsed;
                }
            }
            if (prop == IsMutedProperty)
            {
                // Update muted icon
                if (IsMuted && Storage.Settings.ServerMuteIcons)
                {
                    MutedIcon.Visibility = Visibility.Visible;
                    ShowMute.Begin();
                }
                else
                {
                    HideMute.Begin();
                }

                // Override unread
                if (IsMuted)
                {
                    UnreadIndicator.Visibility = Visibility.Collapsed;
                }
                else if (IsUnread)
                {
                    UnreadIndicator.Visibility = Visibility.Visible;
                }
            }
            if (prop == NotificationCountProperty)
            {
                // Update notification visiblity
                if (NotificationCount > 0)
                {
                    NotificationCounter.Text = NotificationCount.ToString();
                    ShowBadge.Begin();
                    UnreadIndicator.Background = (SolidColorBrush)App.Current.Resources["Blurple"];
                    UnreadIndicator.Opacity    = 1;
                }
                else
                {
                    HideBadge.Begin();
                    UnreadIndicator.Background = (SolidColorBrush)App.Current.Resources["InvertedBG"];
                    UnreadIndicator.Opacity    = 0.75;
                }
            }
            if (prop == GuildNameProperty)
            {
                // Update Tooltip
                ToolTipService.SetToolTip(this, GuildName);
            }
            if (prop == ImageUrlProperty)
            {
                // Update Icon
                if (ImageUrl != "empty" && ImageUrl != "")
                {
                    GuildImageBrush.ImageSource = new BitmapImage(new Uri(ImageUrl));
                    TextIcon.Text       = "";
                    TextIcon.Visibility = Visibility.Collapsed;
                }
                else if (ImageUrl == "empty")
                {
                    GuildImageBrush.ImageSource = null;
                    if (GuildName != "")
                    {
                        TextIcon.Text = String.Join("", Regex.Matches(GuildName, @"(?<=^|[ \-_|+=~])\w")
                                                    .Cast <Match>()
                                                    .Select(m => m.Value)
                                                    .ToArray());
                        TextIcon.Visibility = Visibility.Visible;
                    }
                }
            }
            if (prop == IdProperty)
            {
                // Update DM Guild status
                if (Id != null && Id == "@me")
                {
                    DMView.Visibility             = Visibility.Visible;
                    GuildImageBackdrop.Visibility = Visibility.Collapsed;
                }
                else
                {
                    DMView.Visibility             = Visibility.Collapsed;
                    GuildImageBackdrop.Visibility = Visibility.Visible;
                }
            }
            if (prop == IsValidProperty)
            {
                // Update Invalid Guild Overlay
                InvalidOverlay.Visibility = IsValid ? Visibility.Collapsed : Visibility.Visible;
            }
        }
        private async void OnPropertyChanged(DependencyObject d, DependencyProperty prop)
        {
            if (prop == IsSelectedProperty)
            {
                if (Type == 2)
                {
                    // Because it's a Voice Channel the Voice Icon needs to be brighter too
                    if (IsSelected)
                    {
                        VoiceIcon.Fade(1, 200).Start();
                        SelectIndicator.Fade(0.4f, 200).Start();
                    }
                    else
                    {
                        VoiceIcon.Fade(0.4f, 200).Start();
                        SelectIndicator.Fade(0.4f, 200).Start();
                    }
                }
                else
                {
                    // Show Selected indicator if selected
                    if (IsSelected)
                    {
                        SelectIndicator.Fade(1, 200).Start();
                    }
                    else
                    {
                        SelectIndicator.Fade(0, 200).Start();
                    }
                }

                // Tie up loose ends
                UpdateOpacity();
                UpdateHidden();
            }
            if (prop == UserStatusProperty)
            {
                // Set the Presense icon
                if (UserStatus != null && UserStatus.Status != null && UserStatus.Status != "invisible")
                {
                    rectangle.Fill = (SolidColorBrush)App.Current.Resources[UserStatus.Status];
                }
                else
                {
                    rectangle.Fill = (SolidColorBrush)App.Current.Resources["offline"];
                }

                // Set the game status
                if (UserStatus != null && UserStatus.Game != null)
                {
                    // There's a game, show it
                    playing.Visibility = Visibility.Visible;
                    game.Visibility    = Visibility.Visible;

                    // Set name of the game
                    game.Text = UserStatus.Game.Name;

                    // Check if Rich Presence
                    if (UserStatus.Game.State != null || UserStatus.Game.Details != null || UserStatus.Game.SessionId != null)
                    {
                        game.Opacity    = 1;
                        rich.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        game.Opacity    = 0.4;
                        rich.Visibility = Visibility.Collapsed;
                    }

                    // Check type of rich-presense
                    switch (UserStatus.Game.Type)
                    {
                    case 0:
                        playing.Text = App.GetString("/Controls/Playing");
                        break;

                    case 1:
                        playing.Text = App.GetString("/Controls/Streaming");
                        break;

                    case 2:
                        playing.Text = App.GetString("/Controls/ListeningTo");
                        break;

                    case 3:
                        playing.Text = App.GetString("/Controls/Watching");
                        break;
                    }
                }
                else
                {
                    // There's no game, hide it all
                    playing.Visibility = Visibility.Collapsed;
                    rich.Visibility    = Visibility.Collapsed;
                    game.Visibility    = Visibility.Collapsed;
                }
            }
            if (prop == SubtitleProperty)
            {
                // Update Subtitle text
                if (Subtitle != "")
                {
                    SubTitle.Visibility = Visibility.Visible;
                    SubTitle.Text       = Subtitle;
                }
                else
                {
                    SubTitle.Visibility = Visibility.Collapsed;
                }
            }
            if (prop == IsUnreadProperty)
            {
                if (IsUnread && !IsMuted)
                {
                    // Show indicator
                    UnreadIndicator.Visibility = Visibility.Visible;
                }
                else
                {
                    // Hide indicator
                    UnreadIndicator.Visibility = Visibility.Collapsed;
                }

                // Tie up loose ends
                UpdateOpacity();
                UpdateHidden();
            }
            if (prop == HavePermissionProperty)
            {
                if (HavePermission)
                {
                    // Enable the channel if it can be entered
                    IsEnabled = true;
                    UpdateOpacity();
                }
                else
                {
                    // Disable the channel if it can't be entered
                    IsEnabled = false;
                    UpdateOpacity();
                }
            }
            if (prop == IsMutedProperty)
            {
                if (IsMuted)
                {
                    // Show muted icon
                    MuteIcon.Visibility = Visibility.Visible;

                    // Hide unread
                    UnreadIndicator.Visibility = Visibility.Collapsed;
                }
                else
                {
                    // Hide muted icon
                    MuteIcon.Visibility = Visibility.Collapsed;

                    // Show unread
                    if (IsUnread)
                    {
                        UnreadIndicator.Visibility = Visibility.Visible;
                    }
                }

                // Tie up loose ends
                UpdateOpacity();
                UpdateHidden();
            }
            if (prop == IsTypingProperty)
            {
                if (IsTyping && !IsMuted)
                {
                    // Show typing indicator
                    TypingIndic.Visibility = Visibility.Visible;
                    TypingIndic.Fade(1, 200).Start();
                }
                else
                {
                    // Hide typing indicator
                    await TypingIndic.Fade(0, 200).StartAsync();

                    TypingIndic.Visibility = Visibility.Collapsed;
                }
            }
            if (prop == NotificationCountProperty)
            {
                if (NotificationCount > 0)
                {
                    // Show Notification text
                    NotificationCounter.Text = NotificationCount.ToString();
                    ShowBadge.Begin();
                }
                else
                {
                    // Hide Notification text
                    HideBadge.Begin();
                }

                //Tie up loose ends
                UpdateHidden();
            }
            if (prop == ChnNameProperty)
            {
                // Update Channel Name
                ChannelName.Text = CName;
            }
            if (prop == ImageUrlProperty)
            {
                if (ImageUrl != "")
                {
                    // Update Image Source
                    ChannelImageBrush.ImageSource = new BitmapImage(new Uri(ImageUrl));
                }
            }
            if (prop == TypeProperty)
            {
                // Reset
                ChannelName.FontWeight = FontWeights.Normal;
                ChannelName.Foreground = (SolidColorBrush)App.Current.Resources["Foreground"];
                Chevron.Visibility     = Visibility.Collapsed;
                HoverCache.Visibility  = Visibility.Collapsed;

                this.Margin = new Thickness(0);

                //TEXT
                if (Type == 0)
                {
                    HashtagIcon.Visibility          = Visibility.Visible;
                    VoiceIcon.Visibility            = Visibility.Collapsed;
                    MemberList.Visibility           = Visibility.Collapsed;
                    ChannelImage.Visibility         = Visibility.Collapsed;
                    ChannelImageBackdrop.Visibility = Visibility.Collapsed;
                    rectangle.Visibility            = Visibility.Collapsed;
                    grid.Height = Double.NaN;
                }

                //VOICE
                else if (Type == 2)
                {
                    HashtagIcon.Visibility          = Visibility.Collapsed;
                    ChannelImage.Visibility         = Visibility.Collapsed;
                    VoiceIcon.Visibility            = Visibility.Visible;
                    Chevron.Visibility              = Visibility.Collapsed;
                    ChannelImageBackdrop.Visibility = Visibility.Collapsed;
                    rectangle.Visibility            = Visibility.Collapsed;
                    VoiceMembers = new Dictionary <string, VoiceMemberContainer>();
                    grid.Height  = Double.NaN;

                    // Subscribe to event of VoiceState changing
                    GatewayManager.Gateway.VoiceStateUpdated += Gateway_VoiceStateUpdated;

                    // Add users to list of voice members
                    foreach (var user in LocalState.VoiceDict.Values)
                    {
                        if (user.ChannelId == Id)
                        {
                            VoiceMembers.Add(user.UserId, new VoiceMemberContainer()
                            {
                                VoiceState = LocalState.VoiceDict[user.UserId]
                            });
                        }
                    }

                    // Add Voice Members to display
                    if (VoiceMembers != null && VoiceMembers.Count > 0)
                    {
                        MemberList.Visibility = Visibility.Visible;
                        foreach (VoiceMemberContainer member in VoiceMembers.Values)
                        {
                            if (LocalState.Guilds[App.CurrentGuildId].members.ContainsKey(member.VoiceState.UserId))
                            {
                                MemberList.Items.Add(member);
                            }
                        }
                    }
                    else
                    {
                        MemberList.Visibility = Visibility.Collapsed;
                    }
                }

                //DM
                else if (Type == 1)
                {
                    HashtagIcon.Visibility          = Visibility.Collapsed;
                    VoiceIcon.Visibility            = Visibility.Collapsed;
                    ChannelImageBackdrop.Visibility =
                        LocalState.DMs[Id].Users.FirstOrDefault().Avatar == null ?
                        Visibility.Visible : Visibility.Collapsed;
                    ChannelImage.Visibility       = Visibility.Visible;
                    rectangle.Visibility          = Visibility.Visible;
                    Chevron.Visibility            = Visibility.Collapsed;
                    rectangle.Visibility          = Visibility.Visible;
                    grid.Height                   = 48;
                    ChannelImage.Margin           = new Thickness(0, 6, 6, 6);
                    ChannelImageBackdrop.Fill     = Common.DiscriminatorColor(LocalState.DMs[Id].Users.FirstOrDefault().Discriminator);
                    ChannelImageBrush.ImageSource = new BitmapImage(Common.AvatarUri(LocalState.DMs[Id].Users.FirstOrDefault().Avatar, LocalState.DMs[Id].Users.FirstOrDefault().Id, "?size=64"));
                    MemberList.Visibility         = Visibility.Collapsed;
                }

                //GROUP DM
                else if (Type == 3)
                {
                    HashtagIcon.Visibility          = Visibility.Collapsed;
                    VoiceIcon.Visibility            = Visibility.Collapsed;
                    ChannelImageBackdrop.Visibility = Visibility.Collapsed;
                    ChannelImage.Visibility         = Visibility.Visible;
                    rectangle.Visibility            = Visibility.Collapsed;
                    Chevron.Visibility = Visibility.Collapsed;
                    grid.Height        = 48;

                    // Set icon (if null)
                    if (string.IsNullOrEmpty(Icon))
                    {
                        if (App.Current.RequestedTheme == ApplicationTheme.Dark)
                        {
                            ChannelImageBrush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/DiscordAssets/Friends_dark.png"));
                        }
                        else
                        {
                            ChannelImageBrush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/DiscordAssets/Friends_light.png"));
                        }
                    }

                    ChannelImage.Margin   = new Thickness(0, 6, 6, 6);
                    MemberList.Visibility = Visibility.Collapsed;
                }

                //CHANNEL CATEGORY
                else if (Type == 4)
                {
                    HashtagIcon.Visibility          = Visibility.Collapsed;
                    VoiceIcon.Visibility            = Visibility.Collapsed;
                    ChannelImageBackdrop.Visibility = Visibility.Collapsed;
                    ChannelImage.Visibility         = Visibility.Collapsed;
                    rectangle.Visibility            = Visibility.Collapsed;
                    ChannelName.FontWeight          = FontWeights.Light;
                    ChannelName.Foreground          = (SolidColorBrush)App.Current.Resources["Blurple"];
                    Chevron.Visibility    = Visibility.Visible;
                    HoverCache.Visibility = Visibility.Visible;
                    this.Margin           = new Thickness(0, 18, 0, 0);
                    MemberList.Visibility = Visibility.Collapsed;
                    grid.Height           = Double.NaN;
                }

                // Tie up loose ends
                UpdateOpacity();

                // Clear Voice Update event if applicable
                if (Type != 2)
                {
                    GatewayManager.Gateway.VoiceStateUpdated -= Gateway_VoiceStateUpdated;
                }
            }
            if (prop == IsHiddenProperty)
            {
                UpdateHidden();
            }
            if (prop == NSFWProperty)
            {
                if (NSFW)
                {
                    HashtagIcon.Foreground = ChannelName.Foreground = (SolidColorBrush)App.Current.Resources["dnd"];
                }
                else
                {
                    HashtagIcon.Foreground = ChannelName.Foreground = (SolidColorBrush)App.Current.Resources["Foreground"];
                }
            }
            if (prop == IconProperty)
            {
                if (!string.IsNullOrEmpty(Icon))
                {
                    ChannelImageBrush.ImageSource = new BitmapImage(new Uri("https://cdn.discordapp.com/channel-icons/" + Id + "/" + Icon + ".png"));
                }
            }
        }
Example #9
0
        void Update()
        {
            while (true)
            {
                try
                {
                    if (!Globals.Ribbons.Ribbon.keepUpdateBtn.Checked)
                    {
                        continue;
                    }
                    //Fill home
                    List <DisplayMembership> members = _client.GetJoinedGroup();
                    this.Dispatcher.Invoke((Action)(() =>
                    {
                        _homeItem.Items.Clear();
                        foreach (var member in members)
                        {
                            MyTreeViewItem item = new MyTreeViewItem(member.DisplayName,
                                                                     true,
                                                                     MessageViewType.Home,
                                                                     new Dictionary <string, object>()
                            {
                                { "GroupID", member.GroupID },
                                { "UserID", Utils.GetCurrentUserID() }
                            });
                            _homeItem.Items.Add(item);
                        }
                    }));
                    //Fill topic
                    List <DisplayFavouriteTopic> topics = _client.GetMyFavouriteTopic();
                    this.Dispatcher.Invoke((Action)(() =>
                    {
                        _topicItem.Items.Clear();
                        foreach (var topic in topics)
                        {
                            MyTreeViewItem item = new MyTreeViewItem(
                                string.Format("{0}({1})", topic.topicName, topic.UnreadMsgCount),
                                true,
                                MessageViewType.Topic,
                                new Dictionary <string, object>()
                            {
                                { "GroupID", topic.GroupID },
                                { "TopicName", topic.topicName }
                            });
                            _topicItem.Items.Add(item);
                        }
                    }));

                    //Fill Following
                    List <DisplayUserProfile> followings = _client.GetFollowings();
                    this.Dispatcher.Invoke((Action)(() =>
                    {
                        _followingItem.Items.Clear();
                        foreach (var user in followings)
                        {
                            MyTreeViewItem item = new MyTreeViewItem(
                                string.Format("{0}({1})", user.DisplayName, user.Userid),
                                true,
                                MessageViewType.User,
                                new Dictionary <string, object>()
                            {
                                { "DisplayName", user.DisplayName },
                                { "UserID", user.Userid }
                            });
                            _followingItem.Items.Add(item);
                        }
                    }));

                    //Update Notification count
                    NotificationCount notif = _client.GetNotificationCount();
                    this.Dispatcher.Invoke((Action)(() =>
                    {
                        _homeItem.Header = string.Format("Home({0})", notif.UnreadHomelineMsgCount);
                        _ownItem.Header = string.Format("Own({0})", notif.UnreadOwnerlineMsgCount);
                        _mentionItem.Header = string.Format("Mention({0})", notif.UnreadAtlineMsgCount);
                    }));
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message + "\r\n" + e.StackTrace, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    Thread.Sleep(1000 * 120);
                }
            }
        }
        private async void OnPropertyChanged(DependencyObject d, DependencyProperty prop)
        {
            //if (!App.CurrentGuildIsDM && Id != "")
            //{
            //    if (!Storage.Cache.Guilds[App.CurrentGuildId].Channels[Id].chnPerms.EffectivePerms.Administrator && !Storage.Cache.Guilds[App.CurrentGuildId].Channels[Id].chnPerms.EffectivePerms.ReadMessages)
            //    {
            //        this.Visibility = Visibility.Collapsed;
            //    }
            //}

            if (prop == IsSelectedProperty)
            {
                if (Type == 2)
                {
                    if (IsSelected)
                    {
                        ChannelName.Fade(1, 200).Start();
                        VoiceIcon.Fade(1, 200).Start();
                        SelectIndicator.Fade(0.6f, 200).Start();
                    }
                    else
                    {
                        ChannelName.Fade(0.6f, 200).Start();
                        VoiceIcon.Fade(0.6f, 200).Start();
                        SelectIndicator.Fade(0.6f, 200).Start();
                    }
                }
                else
                {
                    if (IsSelected)
                    {
                        SelectIndicator.Fade(1, 200).Start();
                    }
                    else
                    {
                        SelectIndicator.Fade(0, 200).Start();
                    }
                }
                UpdateHidden();
            }

            if (prop == UserStatusProperty)
            {
                if (UserStatus != "" && UserStatus != null)
                {
                    Status.Fill = (SolidColorBrush)App.Current.Resources[UserStatus];
                }
            }
            if (prop == SubtitleProperty)
            {
                if (Subtitle != "")
                {
                    SubTitle.Visibility = Visibility.Visible;
                    SubTitle.Text       = Subtitle;
                }
                else
                {
                    SubTitle.Visibility = Visibility.Collapsed;
                }
            }
            if (prop == PlayingProperty)
            {
                if (Playing.HasValue)
                {
                    PlayingBlock.Visibility = Visibility.Visible;
                    switch (Playing.Value.Type)
                    {
                    case 0:
                        PlayingType.Text = App.GetString("/Controls/Playing");
                        break;

                    case 1:
                        PlayingType.Text = App.GetString("/Controls/Streaming");
                        break;
                    }
                    PlayingText.Text = Playing.Value.Name;
                }
                else
                {
                    PlayingBlock.Visibility = Visibility.Collapsed;
                }
            }

            if (prop == IsUnreadProperty)
            {
                if (IsUnread && !IsMuted)
                {
                    ChannelName.Fade(1, 200).Start();
                    UnreadIndicator.Visibility = Visibility.Visible;
                    if (IsHidden)
                    {
                        //await this.Fade(0, 200, 0).StartAsync();
                        this.Visibility = Visibility.Collapsed;
                    }
                }
                else
                {
                    ChannelName.Fade(0.6f, 200).Start();
                    UnreadIndicator.Visibility = Visibility.Collapsed;
                    if (IsHidden)
                    {
                        this.Visibility = Visibility.Visible;
                        this.Fade(1, 200, 0).Start();
                    }
                }
                UpdateHidden();
            }
            if (prop == IsMutedProperty)
            {
                if (IsMuted)
                {
                    ChannelName.Opacity = 0.5;
                    MuteIcon.Visibility = Visibility.Visible;
                    ChannelName.Fade(0.75f, 200).Start();
                    UnreadIndicator.Visibility = Visibility.Collapsed;
                }
                else
                {
                    MuteIcon.Visibility = Visibility.Collapsed;
                }
                UpdateHidden();
            }
            if (prop == IsTypingProperty)
            {
                if (IsTyping)
                {
                    TypingIndic.Visibility = Visibility.Visible;
                    TypingIndic.Fade(1, 200).Start();
                }
                else
                {
                    await TypingIndic.Fade(0, 200).StartAsync();

                    TypingIndic.Visibility = Visibility.Collapsed;
                }
            }
            if (prop == NotificationCountProperty)
            {
                if (NotificationCount > 0)
                {
                    NotificationCounter.Text = NotificationCount.ToString();
                    ShowBadge.Begin();
                }
                else
                {
                    HideBadge.Begin();
                }
                UpdateHidden();
            }
            if (prop == ChnNameProperty)
            {
                ChannelName.Text = CName;
            }
            if (prop == ImageUrlProperty)
            {
                if (ImageUrl != "")
                {
                    ChannelImageBrush.ImageSource = new BitmapImage(new Uri(ImageUrl));
                }
            }
            if (prop == TypeProperty)
            {
                ChannelName.FontWeight = FontWeights.Normal;
                ChannelName.Opacity    = 0.75;
                ChannelName.Foreground = (SolidColorBrush)App.Current.Resources["Foreground"];
                Chevron.Visibility     = Visibility.Collapsed;
                HoverCache.Visibility  = Visibility.Collapsed;

                this.Margin = new Thickness(0);

                if (Type == 0)
                {
                    //TEXT
                    HashtagIcon.Visibility = Visibility.Visible;
                    VoiceIcon.Visibility   = Visibility.Collapsed;
                    MemberList.Visibility  = Visibility.Collapsed;
                    Tapped -= JoinVoiceChannel;
                }
                else if (Type == 2)
                {
                    //VOICE
                    HashtagIcon.Visibility = Visibility.Collapsed;
                    VoiceIcon.Visibility   = Visibility.Visible;

                    VoiceMembers = new Dictionary <string, VoiceMemberContainer>();

                    GatewayManager.Gateway.VoiceStateUpdated += Gateway_VoiceStateUpdated;

                    foreach (var user in LocalState.VoiceDict.Values)
                    {
                        if (user.ChannelId == Id)
                        {
                            VoiceMembers.Add(user.UserId, new VoiceMemberContainer()
                            {
                                VoiceState = LocalState.VoiceDict[user.UserId]
                            });
                        }
                    }

                    if (VoiceMembers != null)
                    {
                        foreach (VoiceMemberContainer member in VoiceMembers.Values)
                        {
                            if (LocalState.Guilds[App.CurrentGuildId].members.ContainsKey(member.VoiceState.UserId))
                            {
                                MemberList.Items.Add(member);
                            }
                        }
                        //Debug MemberList.Items.Add(new VoiceMemberControl.SimpleMember() { Member = Storage.Cache.Guilds[App.CurrentGuildId].Members[Storage.Cache.CurrentUser.Raw.Id] });
                    }

                    Tapped += JoinVoiceChannel;
                }
                else if (Type == 1)
                {
                    //DM
                    HashtagIcon.Visibility = Visibility.Collapsed;
                    if (LocalState.DMs[Id].Users.FirstOrDefault().Avatar == null)
                    {
                        ChannelImageBackdrop.Visibility = Visibility.Visible;
                    }
                    ChannelImage.Visibility       = Visibility.Visible;
                    Status.Visibility             = Visibility.Visible;
                    grid.Height                   = 48;
                    ChannelImage.Margin           = new Thickness(0, 6, 6, 6);
                    ChannelImageBackdrop.Fill     = Common.DiscriminatorColor(LocalState.DMs[Id].Users.FirstOrDefault().Discriminator);
                    ChannelImageBrush.ImageSource = new BitmapImage(Common.AvatarUri(LocalState.DMs[Id].Users.FirstOrDefault().Avatar, LocalState.DMs[Id].Users.FirstOrDefault().Id, "?size=64"));
                    MemberList.Visibility         = Visibility.Collapsed;
                    Tapped -= JoinVoiceChannel;
                }
                else if (Type == 3)
                {
                    //GROUP DM
                    HashtagIcon.Visibility          = Visibility.Collapsed;
                    ChannelImageBackdrop.Visibility = Visibility.Visible;
                    ChannelImage.Visibility         = Visibility.Visible;
                    Status.Visibility = Visibility.Collapsed;
                    grid.Height       = 48;
                    //ChannelImageBrush.ImageSource = new SvgImageSource(new Uri("ms-appx:///Assets/DiscordAssets/groupchat.svg"));

                    if (App.Current.RequestedTheme == ApplicationTheme.Dark)
                    {
                        ChannelImageBrush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/DiscordAssets/Friends_dark.png"));
                    }
                    else
                    {
                        ChannelImageBrush.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/DiscordAssets/Friends_light.png"));
                    }

                    ChannelImage.Margin   = new Thickness(0, 6, 6, 6);
                    MemberList.Visibility = Visibility.Collapsed;
                    Tapped -= JoinVoiceChannel;
                }
                else if (Type == 4)
                {
                    //CHANNEL CATEGORY
                    HashtagIcon.Visibility          = Visibility.Collapsed;
                    VoiceIcon.Visibility            = Visibility.Collapsed;
                    ChannelImageBackdrop.Visibility = Visibility.Collapsed;
                    ChannelImage.Visibility         = Visibility.Collapsed;
                    Status.Visibility      = Visibility.Collapsed;
                    ChannelName.FontWeight = FontWeights.Light;
                    ChannelName.Opacity    = 1;
                    ChannelName.Foreground = (SolidColorBrush)App.Current.Resources["Blurple"];
                    Chevron.Visibility     = Visibility.Visible;
                    HoverCache.Visibility  = Visibility.Visible;
                    this.Margin            = new Thickness(0, 18, 0, 0);
                    MemberList.Visibility  = Visibility.Collapsed;
                    Tapped -= JoinVoiceChannel;
                }

                if (Type != 2)
                {
                    GatewayManager.Gateway.VoiceStateUpdated -= Gateway_VoiceStateUpdated;
                }
            }
            if (prop == IsHiddenProperty)
            {
                UpdateHidden();
            }
            if (prop == NSFWProperty)
            {
                if (NSFW)
                {
                    HashtagIcon.Foreground = ChannelName.Foreground = (SolidColorBrush)App.Current.Resources["dnd"];
                }
                else
                {
                    HashtagIcon.Foreground = ChannelName.Foreground = (SolidColorBrush)App.Current.Resources["Foreground"];
                }
            }
        }