/// <inheritdoc/> public RepositoryStorageLoadResult LoadRepositoryOrDefault(out NoteRepositoryModel repositoryModel) { if (_cachedRepository != null) { repositoryModel = _cachedRepository; return(RepositoryStorageLoadResult.SuccessfullyLoaded); } RepositoryStorageLoadResult result; repositoryModel = null; bool modelWasUpdated = false; try { // A new repository is created only if it does not yet exist, we won't overwrite // an invalid repository. if (RepositoryExists()) { string xmlFilePath = Path.Combine(GetDirectoryPath(), Config.RepositoryFileName); if (!_xmlFileService.TryLoad(xmlFilePath, out XDocument xml)) { throw new Exception("Invalid XML"); } result = RepositoryStorageLoadResult.SuccessfullyLoaded; modelWasUpdated = _updater.Update(xml); repositoryModel = XmlUtils.DeserializeFromXmlDocument <NoteRepositoryModel>(xml); } else { result = RepositoryStorageLoadResult.CreatedNewEmptyRepository; repositoryModel = new NoteRepositoryModel(); repositoryModel.Revision = NoteRepositoryModel.NewestSupportedRevision; AddWelcomeNote(repositoryModel); modelWasUpdated = true; } } catch (Exception) { result = RepositoryStorageLoadResult.InvalidRepository; repositoryModel = null; modelWasUpdated = false; } // Automatically save settings if they where modified by an update if (modelWasUpdated) { TrySaveRepository(repositoryModel); } _cachedRepository = repositoryModel; return(result); }
/// <inheritdoc/> public SettingsModel LoadSettingsOrDefault() { if (_cachedSettings != null) { return(_cachedSettings); // Take it form cache if available } SettingsModel result = null; bool modelWasUpdated = false; try { string xmlFilePath = Path.Combine(GetDirectoryPath(), Config.UserSettingsFileName); if (_xmlFileService.TryLoad(xmlFilePath, out XDocument xml)) { modelWasUpdated = UpdateSettings(xml); result = XmlUtils.DeserializeFromXmlDocument <SettingsModel>(xml); AfterLoading(result); } } catch (Exception) { result = null; } // Create default settings if result is still null if (result == null) { result = new SettingsModel(); modelWasUpdated = true; } // Automatically save settings if they where modified by an update if (modelWasUpdated) { TrySaveSettingsToLocalDevice(result); } _cachedSettings = result; return(_cachedSettings); }