Exemple #1
0
        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
            }
        }
Exemple #2
0
        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);
        }