using IPA; using IPALogger = IPA.Logging.Logger; using SiraUtil.Zenject; using System.Threading.Tasks; using ScoreTracker.API; using IPA.Config.Stores; using IPA.Config; using ScoreTracker.Configuration; using ScoreTracker.Installers; namespace ScoreTracker { [Plugin(RuntimeOptions.DynamicInit)] [NoEnableDisable] public class Plugin { internal static Plugin Instance { get; private set; } internal static IPALogger Log { get; private set; } [Init] public Plugin(IPALogger logger, Zenjector zenjector, Config config) { Instance = this; Log = logger; // Setup the logger // Setup Zenject zenjector.UseLogger(logger); zenjector.UseMetadataBinder(); zenjector.Install(Location.App); // Setup the config PluginConfig.Instance = config.Generated(); } [OnStart] public void OnApplicationStart() { Log.Info("OnApplicationStart"); // Ensure the user is logged in Task.Factory.StartNew(async () => { await Authentication.ValidateAndSignIn(); // Ensure the user is signed in }); } [OnExit] public void OnApplicationQuit() { Log.Info("OnApplicationQuit"); } } }