diff --git a/osu.Game/Database/EFToRealmMigrator.cs b/osu.Game/Database/EFToRealmMigrator.cs index cbf5c5ffe9..d3f7c561d5 100644 --- a/osu.Game/Database/EFToRealmMigrator.cs +++ b/osu.Game/Database/EFToRealmMigrator.cs @@ -1,6 +1,9 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +#nullable enable + +using System; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -14,6 +17,7 @@ using osu.Framework.Platform; using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Graphics; +using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Models; @@ -29,8 +33,6 @@ using SharpCompress.Archives.Zip; using SharpCompress.Common; using SharpCompress.Writers.Zip; -#nullable enable - namespace osu.Game.Database { internal class EFToRealmMigrator : CompositeDrawable @@ -57,7 +59,7 @@ namespace osu.Game.Database [Resolved] private Storage storage { get; set; } = null!; - private readonly OsuSpriteText currentOperationText; + private readonly OsuTextFlowContainer currentOperationText; public EFToRealmMigrator() { @@ -99,11 +101,13 @@ namespace osu.Game.Database { State = { Value = Visibility.Visible } }, - currentOperationText = new OsuSpriteText + currentOperationText = new OsuTextFlowContainer(cp => cp.Font = OsuFont.Default.With(size: 30)) { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Font = OsuFont.Default.With(size: 30) + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + TextAnchor = Anchor.TopCentre, }, } }, @@ -147,19 +151,33 @@ namespace osu.Game.Database log("Migration successful!"); if (DebugUtils.IsDebugBuild) - Logger.Log("Your development database has been fully migrated to realm. If you switch back to a pre-realm branch and need your previous database, rename the backup file back to \"client.db\".\n\nNote that doing this can potentially leave your file store in a bad state.", level: LogLevel.Important); + { + Logger.Log( + "Your development database has been fully migrated to realm. If you switch back to a pre-realm branch and need your previous database, rename the backup file back to \"client.db\".\n\nNote that doing this can potentially leave your file store in a bad state.", + level: LogLevel.Important); + } } else { log("Migration failed!"); Logger.Log(t.Exception.ToString(), LoggingTarget.Database); + if (t.Exception.Flatten().InnerException is TypeInitializationException) + { + // Not guaranteed to be the only cause of exception, but let's roll with it for now. + log("Please download and run the intel version of osu! once\nto allow data migration to complete!"); + return; + } + notificationOverlay.Post(new SimpleErrorNotification { - Text = "IMPORTANT: During data migration, some of your data could not be successfully migrated. The previous version has been backed up.\n\nFor further assistance, please open a discussion on github and attach your backup files (click to get started).", + Text = + "IMPORTANT: During data migration, some of your data could not be successfully migrated. The previous version has been backed up.\n\nFor further assistance, please open a discussion on github and attach your backup files (click to get started).", Activated = () => { - game.OpenUrlExternally($@"https://github.com/ppy/osu/discussions/new?title=Realm%20migration%20issue ({t.Exception.Message})&body=Please%20drag%20the%20""attach_me.zip""%20file%20here!&category=q-a", true); + game.OpenUrlExternally( + $@"https://github.com/ppy/osu/discussions/new?title=Realm%20migration%20issue ({t.Exception.Message})&body=Please%20drag%20the%20""attach_me.zip""%20file%20here!&category=q-a", + true); const string attachment_filename = "attach_me.zip"; const string backup_folder = "backups";