1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 18:27:26 +08:00

Better inform users of migration failure reason when running Apply Silicon build

As mentioned in https://github.com/ppy/osu/discussions/17409#discussioncomment-2445464?
This commit is contained in:
Dean Herbert 2022-03-28 17:33:15 +09:00
parent 8c5594b3ea
commit a98aac3bf2

View File

@ -1,6 +1,9 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
#nullable enable
using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -14,6 +17,7 @@ using osu.Framework.Platform;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Configuration; using osu.Game.Configuration;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Graphics.Containers;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface; using osu.Game.Graphics.UserInterface;
using osu.Game.Models; using osu.Game.Models;
@ -29,8 +33,6 @@ using SharpCompress.Archives.Zip;
using SharpCompress.Common; using SharpCompress.Common;
using SharpCompress.Writers.Zip; using SharpCompress.Writers.Zip;
#nullable enable
namespace osu.Game.Database namespace osu.Game.Database
{ {
internal class EFToRealmMigrator : CompositeDrawable internal class EFToRealmMigrator : CompositeDrawable
@ -57,7 +59,7 @@ namespace osu.Game.Database
[Resolved] [Resolved]
private Storage storage { get; set; } = null!; private Storage storage { get; set; } = null!;
private readonly OsuSpriteText currentOperationText; private readonly OsuTextFlowContainer currentOperationText;
public EFToRealmMigrator() public EFToRealmMigrator()
{ {
@ -99,11 +101,13 @@ namespace osu.Game.Database
{ {
State = { Value = Visibility.Visible } State = { Value = Visibility.Visible }
}, },
currentOperationText = new OsuSpriteText currentOperationText = new OsuTextFlowContainer(cp => cp.Font = OsuFont.Default.With(size: 30))
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = 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!"); log("Migration successful!");
if (DebugUtils.IsDebugBuild) 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 else
{ {
log("Migration failed!"); log("Migration failed!");
Logger.Log(t.Exception.ToString(), LoggingTarget.Database); 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 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 = () => 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 attachment_filename = "attach_me.zip";
const string backup_folder = "backups"; const string backup_folder = "backups";