< Summary

Class:DCL.SettingsCommon.SettingsModule[T]
Assembly:Settings
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsModule.cs
Covered lines:14
Uncovered lines:7
Coverable lines:21
Total lines:53
Line coverage:66.6% (14 of 21)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SettingsModule(...)0%110100%
Preload()0%2.982037.5%
Reset()0%110100%
Apply(...)0%330100%
Save()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsModule.cs

#LineLine coverage
 1using System;
 2using DCL.Helpers;
 3using UnityEngine;
 4
 5namespace DCL.SettingsCommon
 6{
 7    public class SettingsModule<T> where T : struct
 8    {
 9        public event Action<T> OnChanged;
 10
 11        private readonly string playerPrefsKey;
 12        private readonly T defaultPreset;
 13
 014        public T Data => dataValue;
 15        private T dataValue;
 16
 317        public SettingsModule(string playerPrefsKey, T defaultPreset)
 18        {
 319            this.playerPrefsKey = playerPrefsKey;
 320            this.defaultPreset = defaultPreset;
 321            Preload();
 322        }
 23
 24        private void Preload()
 25        {
 326            dataValue = defaultPreset;
 327            if (!PlayerPrefsUtils.HasKey(playerPrefsKey))
 328                return;
 29
 30            try
 31            {
 032                dataValue = JsonUtility.FromJson<T>(PlayerPrefsUtils.GetString(playerPrefsKey));
 033            }
 34            catch (Exception e)
 35            {
 036                Debug.LogError(e.Message);
 037            }
 038        }
 39
 13240        public void Reset() { Apply(defaultPreset); }
 41
 42        public void Apply(T newSettings)
 43        {
 6944            if (dataValue.Equals(newSettings))
 6545                return;
 46
 447            dataValue = newSettings;
 448            OnChanged?.Invoke(dataValue);
 449        }
 50
 051        public void Save() { PlayerPrefsUtils.SetString(playerPrefsKey, JsonUtility.ToJson(dataValue)); }
 52    }
 53}