Example #1
0
 public override async Task <bool> Refresh()
 {
     if (CanRefresh())
     {
         Preferences         = PreferenceService.GetOrCreate <SoundsGeneratorPreferences>();
         soundEventValidator = null; // will lazy load itself when needed
         if (Explorer.Folders != null)
         {
             Explorer.Folders.FilesChanged -= SubscribeFolderEvents;
             Explorer.Folders.Clear();
         }
         ((SoundEventsFinder)Explorer.FileSynchronizer.Finder).Initialize(SessionContext.SelectedMod.ModInfo.Name, SessionContext.SelectedMod.ModInfo.Modid);
         ((SoundEventsFactory)Explorer.FileSynchronizer.Finder.Factory).SoundEvents = Explorer.Folders;
         Explorer.Folders.AddRange(await Explorer.FileSynchronizer.Finder.FindFoldersAsync(FoldersJsonFilePath, true));
         Explorer.FileSynchronizer.RootPath            = FoldersRootPath;
         Explorer.FileSynchronizer.SynchronizingObject = SyncInvokeObject.Default;
         Explorer.FileSynchronizer.SetEnableSynchronization(true);
         RaisePropertyChanged(nameof(HasEmptyFolders));
         SubscribeFolderEvents(Explorer.Folders, new FileChangedEventArgs <SoundEvent>(Explorer.Folders.Files, FileChange.Add));
         Explorer.Folders.FilesChanged += SubscribeFolderEvents;
         Explorer.Folders.FilesChanged += OnFoldersCollectionChanged;
         JsonUpdater = new SoundJsonUpdater(Explorer.Folders.Files, FoldersJsonFilePath, Preferences.SoundJsonPrettyPrint ? Formatting.Indented : Formatting.None, GetActualConverter());
         CheckJsonFileMismatch();
         CheckForUpdate();
         return(true);
     }
     return(false);
 }
Example #2
0
        public override async Task <bool> Refresh()
        {
            if (CanRefresh())
            {
                IsLoading   = true;
                Preferences = PreferenceService.GetOrCreate <SoundsGeneratorPreferences>();

                Explorer.Folders.FilesChanged -= SubscribeFolderEvents;
                Explorer.Folders.FilesChanged -= OnFoldersCollectionChanged;
                Explorer.Folders.Clear();

                if (Explorer.FileSynchronizer.Finder is SoundEventsFinder finder)
                {
                    finder.Initialize(SessionContext.SelectedMod.ModInfo.Name, SessionContext.SelectedMod.ModInfo.Modid);
                }
                else
                {
                    throw new System.InvalidOperationException($"{Explorer.FileSynchronizer.Finder} must be {typeof(SoundEventsFinder)}");
                }
                if (Explorer.FileSynchronizer.Finder.Factory is ISoundEventsFactory factory)
                {
                    factory.SoundEventsRepository = Explorer.Folders;
                }
                else
                {
                    throw new System.InvalidOperationException($"{Explorer.FileSynchronizer.Finder} must be {typeof(SoundEventsFinder)}");
                }
                await InitializeFoldersAsync(await Explorer.FileSynchronizer.Finder.FindFoldersAsync(FoldersJsonFilePath, true).ConfigureAwait(true)).ConfigureAwait(false);

                Explorer.FileSynchronizer.RootPath = FoldersRootPath;
                Explorer.FileSynchronizer.SetEnableSynchronization(true);
                RaisePropertyChanged(nameof(HasEmptyFolders));
                SubscribeFolderEvents(Explorer.Folders, new FileChangedEventArgs <SoundEvent>(Explorer.Folders.Files, FileChange.Add));
                Explorer.Folders.FilesChanged += SubscribeFolderEvents;
                Explorer.Folders.FilesChanged += OnFoldersCollectionChanged;

                JsonUpdater = JsonUpdaterFactory.Create(SessionContext.SelectedMod.ModInfo.Name, SessionContext.SelectedMod.ModInfo.Modid);
                JsonUpdater.SetTarget(Explorer.Folders.Files);
                JsonUpdater.Path        = FoldersJsonFilePath;
                JsonUpdater.PrettyPrint = Preferences.SoundJsonPrettyPrint;

                IsLoading = false;
                CheckJsonFileMismatch();
                CheckForUpdate();
                return(true);
            }
            return(false);
        }