diff --git a/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs b/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs index 156a3db6eb..ea18e5fd19 100644 --- a/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs @@ -44,51 +44,40 @@ namespace osu.Game.Overlays.Settings.Sections.General [Resolved] private OsuGame? game { get; set; } + [Resolved] + private IDialogOverlay? dialogOverlay { get; set; } + [BackgroundDependencyLoader] - private void load(OsuConfigManager config, IDialogOverlay? dialogOverlay) + private void load(OsuConfigManager config) { config.BindWith(OsuSetting.ReleaseStream, configReleaseStream); - if (updateManager?.CanCheckForUpdate == true && !RuntimeInfo.IsMobile) + bool isDesktop = RuntimeInfo.IsDesktop; + bool canCheckUpdates = updateManager?.CanCheckForUpdate == true; + + if (canCheckUpdates) { - Add(releaseStreamDropdown = new SettingsEnumDropdown + // For simplicity, hide the concept of release streams from mobile users. + if (isDesktop) { - LabelText = GeneralSettingsStrings.ReleaseStream, - Current = { Value = configReleaseStream.Value }, - Keywords = new[] { @"version" }, - }); - - if (updateManager.FixedReleaseStream != null) - { - configReleaseStream.Value = updateManager.FixedReleaseStream.Value; - - releaseStreamDropdown.ShowsDefaultIndicator = false; - releaseStreamDropdown.Items = [updateManager.FixedReleaseStream.Value]; - releaseStreamDropdown.SetNoticeText(GeneralSettingsStrings.ChangeReleaseStreamPackageManagerWarning); - } - - releaseStreamDropdown.Current.BindValueChanged(stream => - { - if (stream.NewValue == ReleaseStream.Tachyon) + Add(releaseStreamDropdown = new SettingsEnumDropdown { - dialogOverlay?.Push(new ConfirmDialog(GeneralSettingsStrings.ChangeReleaseStreamConfirmation, - () => - { - configReleaseStream.Value = ReleaseStream.Tachyon; - }, - () => - { - releaseStreamDropdown.Current.Value = ReleaseStream.Lazer; - }) - { - BodyText = GeneralSettingsStrings.ChangeReleaseStreamConfirmationInfo - }); + LabelText = GeneralSettingsStrings.ReleaseStream, + Current = { Value = configReleaseStream.Value }, + Keywords = new[] { @"version" }, + }); - return; + if (updateManager!.FixedReleaseStream != null) + { + configReleaseStream.Value = updateManager.FixedReleaseStream.Value; + + releaseStreamDropdown.ShowsDefaultIndicator = false; + releaseStreamDropdown.Items = [updateManager.FixedReleaseStream.Value]; + releaseStreamDropdown.SetNoticeText(GeneralSettingsStrings.ChangeReleaseStreamPackageManagerWarning); } - configReleaseStream.Value = stream.NewValue; - }); + releaseStreamDropdown.Current.BindValueChanged(releaseStreamChanged); + } Add(checkForUpdatesButton = new SettingsButton { @@ -97,7 +86,8 @@ namespace osu.Game.Overlays.Settings.Sections.General }); } - if (RuntimeInfo.IsDesktop) + // Loosely update-related maintenance buttons. + if (isDesktop) { Add(new SettingsButton { @@ -121,6 +111,20 @@ namespace osu.Game.Overlays.Settings.Sections.General } } + private void releaseStreamChanged(ValueChangedEvent stream) + { + if (stream.NewValue == ReleaseStream.Tachyon) + { + dialogOverlay?.Push( + new ConfirmDialog(GeneralSettingsStrings.ChangeReleaseStreamConfirmation, () => { configReleaseStream.Value = ReleaseStream.Tachyon; }, + () => { releaseStreamDropdown.Current.Value = ReleaseStream.Lazer; }) { BodyText = GeneralSettingsStrings.ChangeReleaseStreamConfirmationInfo }); + + return; + } + + configReleaseStream.Value = stream.NewValue; + } + private async Task checkForUpdates() { if (updateManager == null || game == null)