From 3ff0327d91b2217cefe58bd91a1c55ac42b06540 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 1 Aug 2022 14:22:54 +0300 Subject: [PATCH 1/3] Display readable message when reaching download limit --- osu.Game/Database/ModelDownloader.cs | 11 +++++++- .../Database/TooManyDownloadsNotification.cs | 26 +++++++++++++++++++ osu.Game/Localisation/CommonStrings.cs | 7 ++++- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 osu.Game/Database/TooManyDownloadsNotification.cs diff --git a/osu.Game/Database/ModelDownloader.cs b/osu.Game/Database/ModelDownloader.cs index edb8563c65..5c84e0c308 100644 --- a/osu.Game/Database/ModelDownloader.cs +++ b/osu.Game/Database/ModelDownloader.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; using System.Threading.Tasks; using Humanizer; using osu.Framework.Logging; @@ -107,7 +108,15 @@ namespace osu.Game.Database notification.State = ProgressNotificationState.Cancelled; if (!(error is OperationCanceledException)) - Logger.Error(error, $"{importer.HumanisedModelName.Titleize()} download failed!"); + { + if (error is WebException webException && webException.Message == @"TooManyRequests") + { + notification.Close(); + PostNotification?.Invoke(new TooManyDownloadsNotification(importer.HumanisedModelName)); + } + else + Logger.Error(error, $"{importer.HumanisedModelName.Titleize()} download failed!"); + } } } diff --git a/osu.Game/Database/TooManyDownloadsNotification.cs b/osu.Game/Database/TooManyDownloadsNotification.cs new file mode 100644 index 0000000000..8adb997999 --- /dev/null +++ b/osu.Game/Database/TooManyDownloadsNotification.cs @@ -0,0 +1,26 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using osu.Framework.Allocation; +using osu.Framework.Graphics.Sprites; +using osu.Game.Graphics; +using osu.Game.Localisation; +using osu.Game.Overlays.Notifications; + +namespace osu.Game.Database +{ + public class TooManyDownloadsNotification : SimpleNotification + { + public TooManyDownloadsNotification(string humanisedModelName) + { + Text = CommonStrings.TooManyDownloaded(humanisedModelName); + Icon = FontAwesome.Solid.ExclamationCircle; + } + + [BackgroundDependencyLoader] + private void load(OsuColour colours) + { + IconBackground.Colour = colours.RedDark; + } + } +} diff --git a/osu.Game/Localisation/CommonStrings.cs b/osu.Game/Localisation/CommonStrings.cs index 1ee562e122..7c82ecf926 100644 --- a/osu.Game/Localisation/CommonStrings.cs +++ b/osu.Game/Localisation/CommonStrings.cs @@ -1,4 +1,4 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Localisation; @@ -54,6 +54,11 @@ namespace osu.Game.Localisation /// public static LocalisableString Downloading => new TranslatableString(getKey(@"downloading"), @"Downloading..."); + /// + /// "You have downloaded too many {0}s! Please try again later." + /// + public static LocalisableString TooManyDownloaded(string humanisedModelName) => new TranslatableString(getKey(@"too_many_downloaded"), @"You have downloaded too many {0}s! Please try again later.", humanisedModelName); + /// /// "Importing..." /// From 7354f9e6ba3c28a27c646409c3a06213155e328e Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 1 Aug 2022 22:05:52 +0300 Subject: [PATCH 2/3] Remove localisation for now --- osu.Game/Database/TooManyDownloadsNotification.cs | 3 +-- osu.Game/Localisation/CommonStrings.cs | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/osu.Game/Database/TooManyDownloadsNotification.cs b/osu.Game/Database/TooManyDownloadsNotification.cs index 8adb997999..c07584c6ec 100644 --- a/osu.Game/Database/TooManyDownloadsNotification.cs +++ b/osu.Game/Database/TooManyDownloadsNotification.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; -using osu.Game.Localisation; using osu.Game.Overlays.Notifications; namespace osu.Game.Database @@ -13,7 +12,7 @@ namespace osu.Game.Database { public TooManyDownloadsNotification(string humanisedModelName) { - Text = CommonStrings.TooManyDownloaded(humanisedModelName); + Text = $"You have downloaded too many {humanisedModelName}s! Please try again later."; Icon = FontAwesome.Solid.ExclamationCircle; } diff --git a/osu.Game/Localisation/CommonStrings.cs b/osu.Game/Localisation/CommonStrings.cs index 7c82ecf926..1ffcdc0db2 100644 --- a/osu.Game/Localisation/CommonStrings.cs +++ b/osu.Game/Localisation/CommonStrings.cs @@ -54,11 +54,6 @@ namespace osu.Game.Localisation /// public static LocalisableString Downloading => new TranslatableString(getKey(@"downloading"), @"Downloading..."); - /// - /// "You have downloaded too many {0}s! Please try again later." - /// - public static LocalisableString TooManyDownloaded(string humanisedModelName) => new TranslatableString(getKey(@"too_many_downloaded"), @"You have downloaded too many {0}s! Please try again later.", humanisedModelName); - /// /// "Importing..." /// From d3954fc583ad5ec1de1a240261664d0112fa2a7a Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 3 Aug 2022 20:15:42 +0900 Subject: [PATCH 3/3] Use existing localised error message --- osu.Game/Database/ModelDownloader.cs | 2 +- osu.Game/Database/TooManyDownloadsNotification.cs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/osu.Game/Database/ModelDownloader.cs b/osu.Game/Database/ModelDownloader.cs index 5c84e0c308..a3678602d1 100644 --- a/osu.Game/Database/ModelDownloader.cs +++ b/osu.Game/Database/ModelDownloader.cs @@ -112,7 +112,7 @@ namespace osu.Game.Database if (error is WebException webException && webException.Message == @"TooManyRequests") { notification.Close(); - PostNotification?.Invoke(new TooManyDownloadsNotification(importer.HumanisedModelName)); + PostNotification?.Invoke(new TooManyDownloadsNotification()); } else Logger.Error(error, $"{importer.HumanisedModelName.Titleize()} download failed!"); diff --git a/osu.Game/Database/TooManyDownloadsNotification.cs b/osu.Game/Database/TooManyDownloadsNotification.cs index c07584c6ec..aa88fed43c 100644 --- a/osu.Game/Database/TooManyDownloadsNotification.cs +++ b/osu.Game/Database/TooManyDownloadsNotification.cs @@ -5,14 +5,15 @@ using osu.Framework.Allocation; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; using osu.Game.Overlays.Notifications; +using osu.Game.Resources.Localisation.Web; namespace osu.Game.Database { public class TooManyDownloadsNotification : SimpleNotification { - public TooManyDownloadsNotification(string humanisedModelName) + public TooManyDownloadsNotification() { - Text = $"You have downloaded too many {humanisedModelName}s! Please try again later."; + Text = BeatmapsetsStrings.DownloadLimitExceeded; Icon = FontAwesome.Solid.ExclamationCircle; }