Example #1
0
        public static SettingCacheEntity GetSettingCache()
        {
            var cache = new SettingCacheEntity();

            foreach (var baseSettingModel in AllSettings)
            {
                cache.SettingCacheItemEntities.Add(new SettingCacheItemEntity()
                {
                    Guid  = baseSettingModel.Guid,
                    Value = baseSettingModel.Value
                });
            }
            return(cache);
        }
        private Task Initialize()
        {
            return(ExecuteSafe(async() =>
            {
                using (await _initializeAsyncLock.LockAsync())
                {
                    if (_isInitialized)
                    {
                        return;
                    }

                    var jsonAssets =
                        await
                        _storageService.GetAssetTextFileAsync(
                            ReflectionHelper.GetAttributeOfEnum <DescriptionAttribute, FileKeys>(
                                FileKeys.SettingsConfiguration).Description);
                    var defaultSettings = JsonConvert.DeserializeObject <List <SettingEntity> >(jsonAssets);
                    var recovered = false;

                    SettingCacheEntity cache = new SettingCacheEntity();
                    try
                    {
                        var json =
                            await
                            _storageService.GetCachedTextFileAsync(
                                ReflectionHelper.GetAttributeOfEnum <DescriptionAttribute, FileKeys>(
                                    FileKeys.SettingsUserConfiguration).Description);

                        if (!string.IsNullOrEmpty(json))
                        {
                            cache = JsonConvert.DeserializeObject <SettingCacheEntity>(json);
                            recovered = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        LogHelper.Instance.LogException(ex);
                    }

                    foreach (var defaultSetting in defaultSettings)
                    {
                        var savedSetting = cache.SettingCacheItemEntities.FirstOrDefault(s => s.Guid == defaultSetting.Guid);
                        if (savedSetting != null && !defaultSetting.IsImmutable)
                        {
                            defaultSetting.Value = savedSetting.Value;
                        }
                        SettingManager.AddSetting(defaultSetting);
                    }

                    _isInitialized = true;

                    //do saving fire&forget to free lockings
#pragma warning disable 4014
                    if (!recovered)
                    {
                        SaveSettingsAsync();
                    }
#pragma warning restore 4014
                }
            }));
        }