public async Task Refresh()
        {
            PR_Loading.IsActive  = true;
            BT_Refresh.IsEnabled = false;
            TB_RefreshBT.Text    = "갱신중..";
            IC_Refresh.Kind      = MaterialDesignThemes.Wpf.PackIconKind.ProgressClock;
            List <CSNotification> notifications = await KakaoRequestClass.RequestNotification(true);

            SP_Content.Children.Clear();
            foreach (var notification in notifications)
            {
                string thumbnailURL = notification.actor?.profile_thumbnail_url ?? "";
                if (Properties.Settings.Default.GIFProfile && notification.actor?.profile_video_url_square_small != null)
                {
                    thumbnailURL = notification.actor?.profile_video_url_square_small;
                }
                string message              = notification.message;
                string timestamp            = PostWindow.GetTimeString(notification.created_at);
                NotificationControl content = new NotificationControl();
                MainWindow.SetClickObject(content);
                content.TB_Content.Text    = message;
                content.TB_Content.ToolTip = content.TB_Content.Text;
                string contentMessage = notification.content ?? "내용 없음";
                if (contentMessage.Contains("\n"))
                {
                    contentMessage = contentMessage.Split(new string[] { "\n" }, StringSplitOptions.None)[0];
                }

                content.TB_Message.Text    = contentMessage;
                content.TB_Message.ToolTip = content.TB_Message.Text;
                if (!notification.is_new)
                {
                    content.RA_Notify.Fill = Brushes.Transparent;
                }
                if (content.TB_Message.Text.Trim().Length == 0)
                {
                    content.TB_Message.Text = "내용 없음";
                }
                content.TB_Date.Text = timestamp;
                string uri = "https://story.kakao.com/";
                GlobalHelper.AssignImage(content.IMG_Thumbnail, thumbnailURL);
                MainWindow.SetClickObject(content.IMG_Thumbnail);
                content.IMG_Thumbnail.MouseLeftButtonDown += (s, e) =>
                {
                    try
                    {
                        TimeLineWindow tlw = new TimeLineWindow(notification.actor.id);
                        tlw.Show();
                        tlw.Activate();
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("접근이 불가능한 스토리입니다.");
                    }
                    e.Handled = true;
                };
                if (notification.scheme.Contains("?profile_id="))
                {
                    var ObjStr   = notification.scheme.Split(new string[] { "?profile_id=" }, StringSplitOptions.None);
                    var Profile  = ObjStr[1];
                    var Identity = ObjStr[0].Split('.')[1];
                    uri += Profile + "/" + Identity + "!" + ObjStr[0];
                    var feedID = ObjStr[0].Split(new string[] { "activities/" }, StringSplitOptions.None)[1];
                    content.MouseLeftButtonDown += async(s, e) =>
                    {
                        string target = uri.Split(new string[] { "!" }, StringSplitOptions.None)[0];
                        try
                        {
                            var post = await KakaoRequestClass.GetPost(feedID);

                            PostWindow.ShowPostWindow(post, feedID);
                        }
                        catch (Exception) { }
                        content.RA_Notify.Fill = Brushes.Transparent;
                        e.Handled = true;
                    };
                }
                else if (notification.scheme.Contains("kakaostory://profiles/"))
                {
                    content.MouseLeftButtonDown += (s, e) =>
                    {
                        try
                        {
                            string         id  = notification.scheme.Replace("kakaostory://profiles/", "");
                            TimeLineWindow tlw = new TimeLineWindow(id);
                            tlw.Show();
                            tlw.Activate();
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("접근할 수 없는 스토리입니다.");
                        }
                        e.Handled = true;
                    };
                }
                SP_Content.Children.Add(content);
            }
            BT_Refresh.IsEnabled = true;
            TB_RefreshBT.Text    = "새로고침";
            IC_Refresh.Kind      = MaterialDesignThemes.Wpf.PackIconKind.Refresh;

            SV_Content.ScrollToTop();
            RA_Loading.Visibility = Visibility.Collapsed;
            PR_Loading.IsActive   = false;
        }
Exemple #2
0
        public MainWindow()
        {
            InitializeComponent();
            TSW_DarkMode.IsChecked = Properties.Settings.Default.DarkMode;
            TSW_DarkMode_Click(null, null);

            Dispatcher.InvokeAsync(async() =>
            {
                if (Environment.OSVersion.Version.Major != 10)
                {
                    bool isLatest = await GlobalHelper.CheckUpdate();
                    if (!isLatest)
                    {
                        if (MessageBox.Show("새로운 업데이트를 확인했습니다.\n 업데이트를 받으시겠습니까?", "안내", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
                        {
                            System.Diagnostics.Process.Start("https://kagamine-rin.com/?p=186");
                        }
                    }
                }
            });

            CB_AutoLogin.IsChecked = Properties.Settings.Default.AutoLogin;

            Environment.CurrentDirectory = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);
            TrayNotifyIcon = new NotifyIcon
            {
                Icon    = new Icon("icon.ico"),
                Visible = true
            };
            TrayNotifyIcon.MouseDoubleClick += (s, e) =>
            {
                if (Properties.Settings.Default.DefaultMinimize)
                {
                    WindowState = WindowState.Normal;
                }
                else
                {
                    Show();
                }

                Activate();
            };
            TrayNotifyIcon.BalloonTipClicked += (s, e) =>
            {
                if (TrayNotifyIcon.Tag != null)
                {
                    KSPNotificationActivator.ActivateHandler((string)TrayNotifyIcon.Tag, null);
                    TrayNotifyIcon.Tag = null;
                }
                else
                {
                    Show();
                    //Activate();
                }
            };

            ContextMenu menu     = new ContextMenu();
            MenuItem    timeline = new MenuItem
            {
                Index = 0,
                Text  = "타임라인"
            };

            timeline.Click += (s, a) =>
            {
                BT_TimeLine_Click(null, null);
            };
            menu.MenuItems.Add(timeline);

            MenuItem write = new MenuItem
            {
                Index = 0,
                Text  = "게시글 작성"
            };

            write.Click += (s, a) =>
            {
                BT_Write_Click(null, null);
            };
            menu.MenuItems.Add(write);

            MenuItem notification = new MenuItem
            {
                Index = 0,
                Text  = "알림 확인"
            };

            notification.Click += (s, a) =>
            {
                BT_Notifiations_Click(null, null);
            };
            menu.MenuItems.Add(notification);

            MenuItem profile = new MenuItem
            {
                Index = 0,
                Text  = "내 프로필"
            };

            profile.Click += (s, a) =>
            {
                BT_MyProfile_Click(null, null);
            };
            menu.MenuItems.Add(profile);

            MenuItem settings = new MenuItem
            {
                Index = 0,
                Text  = "설정"
            };

            settings.Click += (s, a) =>
            {
                BT_Settings_Click(null, null);
            };
            menu.MenuItems.Add(settings);

            MenuItem exit = new MenuItem
            {
                Index = 0,
                Text  = "종료"
            };

            exit.Click += (s, a) =>
            {
                Hide();
                IsClose = true;
                Environment.Exit(0);
            };
            menu.MenuItems.Add(exit);

            TrayNotifyIcon.ContextMenu = menu;

            if (Properties.Settings.Default.AutoLogin)
            {
                TBX_Email.Text        = Properties.Settings.Default.AutoEmail;
                TBX_Password.Password = Properties.Settings.Default.AutoPassword;
                Task.Run(() =>
                {
                    Dispatcher.InvokeAsync(() =>
                    {
                        TryLogin();
                    });
                });
            }

            SetClickObject(GD_Friends);
            SetClickObject(GD_Write);
            SetClickObject(GD_Timeline);
            SetClickObject(GD_Notifications);
            SetClickObject(GD_Mail);
            SetClickObject(GD_Settings);
            SetClickObject(GD_Friends);
            SetClickObject(GD_ProfileSettings);
            SetClickObject(BT_Login);
            SetClickObject(EL_Profile);
            SetClickObject(TB_MyProfile);
            SetClickObject(TB_Tray);
            SetClickObject(IMG_Power);

            Dispatcher.InvokeAsync(async() =>
            {
                await KakaoRequestClass.RequestNotification(false);
            });
        }