Fix derived API request types firing success when they shouldn't

The usual case of `virtual`/`override` being dangerous when logic is
added to the base implementation. As such, I've removed this completely.
This commit is contained in:
Dean Herbert
2021-07-22 14:23:24 +09:00
parent edce3e0efe
commit 57e5f5575a
2 changed files with 11 additions and 13 deletions

View File

@ -16,6 +16,11 @@ namespace osu.Game.Online.API
/// </summary> /// </summary>
protected virtual string FileExtension { get; } = @".tmp"; protected virtual string FileExtension { get; } = @".tmp";
protected APIDownloadRequest()
{
base.Success += () => Success?.Invoke(filename);
}
protected override WebRequest CreateWebRequest() protected override WebRequest CreateWebRequest()
{ {
var file = Path.GetTempFileName(); var file = Path.GetTempFileName();
@ -39,12 +44,6 @@ namespace osu.Game.Online.API
TriggerSuccess(); TriggerSuccess();
} }
internal override void TriggerSuccess()
{
base.TriggerSuccess();
Success?.Invoke(filename);
}
public event APIProgressHandler Progressed; public event APIProgressHandler Progressed;
public new event APISuccessHandler<string> Success; public new event APISuccessHandler<string> Success;

View File

@ -25,6 +25,11 @@ namespace osu.Game.Online.API
/// </summary> /// </summary>
public new event APISuccessHandler<T> Success; public new event APISuccessHandler<T> Success;
protected APIRequest()
{
base.Success += () => Success?.Invoke(Result);
}
protected override void PostProcess() protected override void PostProcess()
{ {
base.PostProcess(); base.PostProcess();
@ -40,12 +45,6 @@ namespace osu.Game.Online.API
TriggerSuccess(); TriggerSuccess();
} }
internal override void TriggerSuccess()
{
base.TriggerSuccess();
Success?.Invoke(Result);
}
} }
/// <summary> /// <summary>
@ -132,7 +131,7 @@ namespace osu.Game.Online.API
{ {
} }
internal virtual void TriggerSuccess() internal void TriggerSuccess()
{ {
lock (completionStateLock) lock (completionStateLock)
{ {