private async void RefreshFileCache(IProgress <IndicatorProgressReport> progress)
        {
            if (Theme == null)
            {
                return;
            }

            FileDiscoveryService fileDiscoveryService = new FileDiscoveryService((WallpaperManagerContext)ThemeRepository.DatabaseInfo.Context);
            var cache = await fileDiscoveryService.PreformFileDiscovery(Theme, progress);

            SetFileCache(cache);
        }
Exemple #2
0
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            Debug.WriteLine($"{nameof(FileDiscoveryBackgroundTask)} - {nameof(Run)} - Begun");

            // Register the Monitoring Events
            taskInstance.Canceled       += TaskInstance_Canceled;
            taskInstance.Task.Completed += Task_Completed;
            taskInstance.Task.Progress  += Task_Progress;

            // If the task is not allowed to run, return early
            if (!IsTaskAllowedToRun())
            {
                return;
            }

            // Otherwise, we jump into File Discovery Process
            _deferral = taskInstance.GetDeferral();
            using (var context = new WallpaperManagerContext())
            {
                var themeRepo            = new WallpaperThemeRepository(context);
                var fileDiscoveryService = new FileDiscoveryService(context);

                // Preform File Discovery for ALL of the themes
                //_deferral = taskInstance.GetDeferral();
                //await fileDiscoveryService.PreformFileDiscoveryAll(null);
                //_deferral.Complete();

                // Preform File Discovery for the Desktop Wallpaper Theme
                Debug.WriteLine($"{nameof(FileDiscoveryBackgroundTask)} - {nameof(ActiveDesktopThemeSetting)} - Started");
                var activeDesktopThemeSetting      = new ActiveDesktopThemeSetting();
                var activeDesktopThemeSettingValue = activeDesktopThemeSetting.Value;
                if (activeDesktopThemeSettingValue.HasValue)
                {
                    var activeWallpaperTheme = themeRepo.Find(activeDesktopThemeSettingValue.Value);
                    await fileDiscoveryService.PreformFileDiscovery(activeWallpaperTheme, null);
                }
                Debug.WriteLine($"{nameof(FileDiscoveryBackgroundTask)} - {nameof(ActiveDesktopThemeSetting)} - Completed");

                // Preform File Discovery for the Lockscreen Theme
                Debug.WriteLine($"{nameof(FileDiscoveryBackgroundTask)} - {nameof(ActiveLockscreenThemeSetting)} - Started");
                var activeLockscreenThemeSetting      = new ActiveLockscreenThemeSetting();
                var activeLockscreenThemeSettingValue = activeLockscreenThemeSetting.Value;
                if (activeLockscreenThemeSettingValue.HasValue &&
                    activeLockscreenThemeSettingValue != activeDesktopThemeSettingValue)
                {
                    var activeLockscreenTheme = themeRepo.Find(activeLockscreenThemeSettingValue.Value);
                    await fileDiscoveryService.PreformFileDiscovery(activeLockscreenTheme, null);
                }

                Debug.WriteLine($"{nameof(FileDiscoveryBackgroundTask)} - {nameof(ActiveLockscreenThemeSetting)} - Completed");
            }

            // Update the FileDiscovery Last Run
            var fileDiscoveryLastRunSetting = new FileDiscoveryLastRunSetting();

            fileDiscoveryLastRunSetting.Value = DateTime.UtcNow;

            // Update the FileDiscovery Background Task Last Run
            var fileDiscoveryTaskLastRunSetting = new FileDiscoveryTaskLastRunSetting();

            fileDiscoveryTaskLastRunSetting.Value = DateTime.UtcNow;

            Debug.WriteLine($"{nameof(FileDiscoveryBackgroundTask)} - {nameof(Run)} - Completed");
            _deferral.Complete();
        }