using Platform101XP.Editor.Settings.Export;
using Platform101XP.Editor.Settings.Repositories;

namespace Platform101XP.Editor.Settings
{
    public sealed class SettingsManager
    {
        // MARK: Singleton

        private static readonly SettingsManager _instance = new SettingsManager();
        public static SettingsManager Instance => _instance;

        // MARK: - Public Properties

        public BaseSettingsRepository Base { get; private set; }
        public AndroidSettingsRepository Android { get; private set; }
        public IOSSettingsRepository IOS { get; private set; }

        public AndroidSettingsExporter AndroidExport { get; private set; }
        public IOSSettingsExporter IOSExport { get; private set; }

        // MARK: - Private

        private const string k_SettingsStorageFolder = "Assets/Platform101XP/Editor/Settings/Storage";

        private SettingsManager()
        {
            Base = new BaseSettingsRepository(k_SettingsStorageFolder);
            Android = new AndroidSettingsRepository(k_SettingsStorageFolder);
            IOS = new IOSSettingsRepository(k_SettingsStorageFolder);
            AndroidExport = new AndroidSettingsExporter(Base, Android);
            IOSExport = new IOSSettingsExporter(Base, IOS);
        }

        // MARK: - Public Methods

        public void ExportAll()
        {
            AndroidExport.Export();
            IOSExport.Export();
        }
    }
}
