diff --git a/osu!StreamCompanion/Code/Core/Initializer.cs b/osu!StreamCompanion/Code/Core/Initializer.cs index 2d42fa85..5245eb67 100644 --- a/osu!StreamCompanion/Code/Core/Initializer.cs +++ b/osu!StreamCompanion/Code/Core/Initializer.cs @@ -81,7 +81,31 @@ public void Start() _msn = new Msn(MsnGetters); #region First run - if (Settings.Get(_names.FirstRun)) + + bool shouldForceFirstRun=false; + var lastVersionStr = Settings.Get(_names.LastRunVersion); + if (lastVersionStr == _names.LastRunVersion.Default()) + { + shouldForceFirstRun = true; + } + else + { + try + { + var lastVersion = Helpers.Helpers.GetDateFromVersionString(lastVersionStr); + var versionToResetOn = Helpers.Helpers.GetDateFromVersionString("v161030.20"); + shouldForceFirstRun = lastVersion < versionToResetOn; + } + catch (Exception e) + { + if (e is FormatException || e is ArgumentNullException) + shouldForceFirstRun = true; + else + throw; + } + } + + if (Settings.Get(_names.FirstRun) || shouldForceFirstRun) { var firstRunModule = new FirstRun(delegate() { @@ -117,7 +141,6 @@ public void Start() _started = true; _logger.Log("Started!", LogLevel.Basic); } - public void StartModules() { AddModule(new OsuPathResolver()); diff --git a/osu!StreamCompanion/Code/Helpers/Helpers.cs b/osu!StreamCompanion/Code/Helpers/Helpers.cs index 35d0bd41..9788f1b5 100644 --- a/osu!StreamCompanion/Code/Helpers/Helpers.cs +++ b/osu!StreamCompanion/Code/Helpers/Helpers.cs @@ -10,5 +10,10 @@ public static T[] SubArray(this T[] data, int index, int length) Array.Copy(data, index, result, 0, length); return result; } + + public static DateTime GetDateFromVersionString(string version) + { + return DateTime.ParseExact(version.TrimStart('v'), "yyMMdd.HH", System.Globalization.CultureInfo.InvariantCulture); + } } }