public EbooksViewModel()
        {
            Refresh = new RelayCommand(async() =>
            {
                CanRefresh = false;
                try
                {
                    await EbookManager.RefreshEbooksAsync();
                }
                finally
                {
                    CanRefresh = true;
                }
            });

            if (!IsInDesignModeStatic)
            {
                _ = Task.Run(async() =>
                {
                    await EbookManager.LoadEbooksAsync();

                    if (EbookManager.Ebooks.Count == 0)
                    {
                        await EbookManager.RefreshEbooksAsync();
                    }

                    await UIThread.RunAsync(() =>
                    {
                        CanRefresh = true;
                    });
                });
            }
        }
示例#2
0
        public EbookViewModel(Ebook ebook)
        {
            _ebook     = ebook;
            Title      = ebook.Title;
            Isbn       = ebook.Isbn;
            IsPinnable = !EbookTile.Exists(_ebook.Isbn);

            Download = new RelayCommand(async() =>
            {
                IsDownloadable = false;
                IsDownloading  = true;

                Messenger.Default.Register <DownloadStatusMessage>(this, _ebook.Isbn, msg =>
                {
                    DownloadStatus = $"{msg.Done} av {msg.Total} sidor nerladdade";
                });

                await EbookManager.DownloadEbookAsync(_ebook);

                IsDownloading = false;
                IsDownloaded  = true;
                IsPinnable    = await Task.Run(() => !EbookTile.Exists(_ebook.Isbn));

                FrontPagePath = await PageStorage.GetPagePathAsync(_ebook, 1);

                _ = _watchForDirectoryRemoval();
            });

            Pin = new RelayCommand(async() =>
            {
                IsPinnable = !(await EbookTile.RequestCreateAsync(_ebook));
            });

            _ = Task.Run(async() =>
            {
                if (!await PageStorage.EbookExistsAsync(_ebook))
                {
                    if (NetworkInformation.GetInternetConnectionProfile() != null)
                    {
                        _ = UIThread.RunAsync(() => IsDownloadable = true);
                    }
                }
                else
                {
                    _ = UIThread.RunAsync(() => IsDownloaded = true);

                    try
                    {
                        _ = UIThread.RunAsync(async() => FrontPagePath = await PageStorage.GetPagePathAsync(_ebook, 1));
                    }
                    catch { }

                    _ = _watchForDirectoryRemoval();
                }
            });
        }