public AlcedoWindow(AlcedoWindowViewModel vm)
        {
            WindowList.Add(this);
            this.DataContext = vm;
            InitializeComponent();
            this.Left = SystemParameters.VirtualScreenWidth;
            var vsh = (int)SystemParameters.WorkArea.Height - 100;

            this.Top = App.random.Next(vsh);
            Observable.Interval(TimeSpan.FromMilliseconds(1))
            .ObserveOn(SynchronizationContext.Current)
            .TakeUntil(_ => this.Left < -this.Width)
            .Subscribe(_ => this.Left -= 2.5, () => this.Close());
        }
Example #2
0
        private void Publish()
        {
            long lastId = -1;

            Observable.Timer(TimeSpan.FromMilliseconds(0), TimeSpan.FromSeconds(70))
            .ObserveOn(SynchronizationContext.Current)
            .Subscribe(async _ =>
            {
                var now = DateTime.Now;
                try
                {
                    using (var sww = new StreamWriter($@"{PATH}/log_{now.Year}_{now.Month}_{now.Day}.log", true, Encoding.UTF8))
                    {
                        await sww.WriteLineAsync($"{now.Hour}:{now.Minute}:{now.Second}.{now.Millisecond} => lastId = {lastId} : lastId!=-1 = {lastId != -1}");
                    }
                    var status = (await Token.Statuses.HomeTimelineAsync(lastId != -1 ? param : fparam))?.Reverse().ToArray();
                    var id     = status?.Where(status => status.RetweetedStatus == null)?.Select(x => x.Id).Max();
                    if (id != null && lastId != id)
                    {
                        lastId = (long)id;
                        Observable.Timer(TimeSpan.FromMilliseconds(0), TimeSpan.FromSeconds((int)65 / status.Length))
                        .TakeWhile(x => x < status.Length)
                        .ObserveOn(SynchronizationContext.Current)
                        .Subscribe(x =>
                        {
                            var al     = new AlcedoWindowViewModel(status[x]);
                            var window = new AlcedoWindow(al);
                            window.Show();
                        });
                        param["since_id"] = lastId;
                    }
                    using var sw = new StreamWriter($@"{PATH}/log_{now.Year}_{now.Month}_{now.Day}.log", true, Encoding.UTF8);
                    foreach (var wId in status.Select(x => x.Id).ToArray())
                    {
                        await sw.WriteLineAsync(wId.ToString());
                    }
                }
                catch (Exception ex)
                {
                    using var sw = new StreamWriter($@"{PATH}/log_{now.Year}_{now.Month}_{now.Day}.log", true, Encoding.UTF8);
                    await sw.WriteLineAsync($"{now.Hour}:{now.Minute}:{now.Second}.{now.Millisecond} => {ex.Message}");
                }
            });
        }