private static void SaveDontShowAgainOptions() { try { XElement root; if (_dontShowAgainOptions != null) { root = new XElement("root", _dontShowAgainOptions.Select(k => new XElement("Option", new XAttribute("Key", k.Key), new XAttribute("Value", k.Value)))); } else { root = new XElement("root"); } IFilePersistenceProvider filePersistenceProviderInst = CustomContainer.Get <IFilePersistenceProvider>(); filePersistenceProviderInst.Write(GetDontShowAgainPersistencePath(), root.ToString()); } // ReSharper disable EmptyGeneralCatchClause catch (Exception) // ReSharper restore EmptyGeneralCatchClause { // If persisting the data fails then do nothing // TODO when loggin support is added to the studio write to the log here } }
private static void LoadDontShowAgainOptions() { try { IFilePersistenceProvider filePersistenceProviderInst = CustomContainer.Get <IFilePersistenceProvider>(); string data = filePersistenceProviderInst.Read(GetDontShowAgainPersistencePath()); _dontShowAgainOptions = new Dictionary <string, MessageBoxResult>(); foreach (XElement element in XElement.Parse(data).Elements()) { string key = element.Attribute("Key").Value; MessageBoxResult val = (MessageBoxResult)Enum.Parse(typeof(MessageBoxResult), element.Attribute("Value").Value); _dontShowAgainOptions.Add(key, val); } } catch (Exception) { // If deserialization fails then create a blank dicitonary so that when a save occurs it will be saved in teh correct format. _dontShowAgainOptions = new Dictionary <string, MessageBoxResult>(); } }
public FilePersistenceManager(IServiceProvider provider , IConfiguration configuration , ISettingsMetadata metadata , IFilePersistenceProvider persistenceProvider) { _current = this; Configuration = configuration; Metadata = metadata; PersistenceProvider = persistenceProvider; LocalPath ??= configuration[SETTINGS_SYNC_DEFAULT_PATH_LOCAL] ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), metadata.AppName); if (!File.Exists(Path.Combine(LocalPath, Metadata.AppName + $".{PersistenceProvider.FileExtension}"))) { var fileWriter = PersistenceProvider.FileType switch { FileTypes.Binary => (IFilePersistenceProvider)provider.GetService <BinaryPersistenceProvider>(), FileTypes.XML => (IFilePersistenceProvider)provider.GetService <XmlPersistenceProvider>(), FileTypes.Other => (IFilePersistenceProvider)provider.GetService( Assembly .Load(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER_ASSEMBLY]) .GetType(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER])), _ => (IFilePersistenceProvider)provider.GetService <JsonPersistenceProvider>() }; var blankFile = new DistributedPropertySet(); blankFile.SetValues(Metadata.BlankFile[SettingsScopes.Local]); fileWriter.WriteFile(Metadata.AppName, LocalPath, SettingsScopes.Local, blankFile); } var localData = PersistenceProvider.OpenFile(Metadata.AppName, LocalPath, SettingsScopes.Local); AddApplicationData(localData, SettingsScopes.Local); RoamingPath ??= configuration[SETTINGS_SYNC_DEFAULT_PATH_ROAMING] ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "One Drive", metadata.AppName); if (!File.Exists(Path.Combine(RoamingPath, Metadata.AppName + $".{PersistenceProvider.FileExtension}"))) { var fileWriter = PersistenceProvider.FileType switch { FileTypes.Binary => (IFilePersistenceProvider)provider.GetService <BinaryPersistenceProvider>(), FileTypes.XML => (IFilePersistenceProvider)provider.GetService <XmlPersistenceProvider>(), FileTypes.Other => (IFilePersistenceProvider)provider.GetService( Assembly .Load(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER_ASSEMBLY]) .GetType(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER])), _ => (IFilePersistenceProvider)provider.GetService <JsonPersistenceProvider>() }; var blankFile = new DistributedPropertySet(); blankFile.SetValues(Metadata.BlankFile[SettingsScopes.Roaming]); fileWriter.WriteFile(Metadata.AppName, RoamingPath, SettingsScopes.Roaming, blankFile); } var roamingData = PersistenceProvider.OpenFile(Metadata.AppName, RoamingPath, SettingsScopes.Roaming); AddApplicationData(localData, SettingsScopes.Roaming); }