Exemple #1
0
 public ModalCardDatabaseUpdateInterface(
     ICardDatabaseManager cardDatabaseManager,
     ICardDatabaseUpdateService cardDatabaseUpdateService,
     IModalDisplay modalDisplay,
     Dispatcher uiDispatcher)
 {
     _cardDatabaseManager       = cardDatabaseManager.Require(nameof(cardDatabaseManager));
     _cardDatabaseUpdateService = cardDatabaseUpdateService.Require(nameof(cardDatabaseUpdateService));
     _modalDisplay = modalDisplay.Require(nameof(modalDisplay));
     _uiDispatcher = uiDispatcher.Require(nameof(uiDispatcher));
 }
Exemple #2
0
        public CardDatabaseUpdateModalViewModel(
            ICardDatabaseManager cardDatabaseManager,
            ICardDatabaseUpdateService cardDatabaseUpdateService,
            Dispatcher uiDispatcher)
        {
            _cardDatabaseManager       = cardDatabaseManager.Require(nameof(cardDatabaseManager));
            _cardDatabaseUpdateService = cardDatabaseUpdateService.Require(nameof(cardDatabaseUpdateService));
            _uiDispatcher = uiDispatcher.Require(nameof(uiDispatcher));

            _currentVersion = _cardDatabaseManager.GetCurrentVersion();

            var cancellation = new CancellationTokenSource();

            Task.Run(
                async() =>
            {
                int numDots = 1;

                while (!cancellation.IsCancellationRequested)
                {
                    LatestVersion = string.Join(" ", Enumerable.Range(1, numDots).Select(__ => "."));

                    await Task.Delay(1000);

                    numDots = (numDots % 3) + 1;
                }
            });

            Task <int?> getLatestVersion = _cardDatabaseUpdateService.GetLatestVersion();

            getLatestVersion.ContinueWith(__result => cancellation.Cancel());
            getLatestVersion.ContinueWith(
                __result =>
            {
                _latestVersion = __result.Result;

                LatestVersion = _latestVersion?.ToString() ?? "unknown";

                _uiDispatcher.Invoke(() => _canExecuteDownloadChanged?.Invoke());
            },
                TaskContinuationOptions.NotOnFaulted);
            getLatestVersion.ContinueWith(
                __result =>
            {
                LatestVersion = "unknown";

                ErrorMessage = "Could not determine latest version!";
            },
                TaskContinuationOptions.OnlyOnFaulted);
        }