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); }
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); }