Expose currently selected language from `IAPIProvider`

This commit is contained in:
Salman Ahmed 2023-06-08 02:50:14 +03:00
parent 1a90f71540
commit ab790ec96a
4 changed files with 16 additions and 2 deletions

View File

@ -18,6 +18,7 @@
using osu.Framework.Graphics;
using osu.Framework.Logging;
using osu.Game.Configuration;
using osu.Game.Localisation;
using osu.Game.Online.API.Requests;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Online.Notifications;
@ -28,6 +29,7 @@ namespace osu.Game.Online.API
{
public partial class APIAccess : Component, IAPIProvider
{
private readonly OsuGameBase game;
private readonly OsuConfigManager config;
private readonly string versionHash;
@ -52,6 +54,8 @@ public partial class APIAccess : Component, IAPIProvider
public IBindableList<APIUser> Friends => friends;
public IBindable<UserActivity> Activity => activity;
public Language Language => game.CurrentLanguage.Value;
private Bindable<APIUser> localUser { get; } = new Bindable<APIUser>(createGuestUser());
private BindableList<APIUser> friends { get; } = new BindableList<APIUser>();
@ -64,8 +68,9 @@ public partial class APIAccess : Component, IAPIProvider
private readonly Logger log;
public APIAccess(OsuConfigManager config, EndpointConfiguration endpointConfiguration, string versionHash)
public APIAccess(OsuGameBase game, OsuConfigManager config, EndpointConfiguration endpointConfiguration, string versionHash)
{
this.game = game;
this.config = config;
this.versionHash = versionHash;

View File

@ -8,6 +8,7 @@
using System.Threading.Tasks;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Game.Localisation;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Online.Notifications;
using osu.Game.Tests;
@ -29,6 +30,8 @@ public partial class DummyAPIAccess : Component, IAPIProvider
public Bindable<UserActivity> Activity { get; } = new Bindable<UserActivity>();
public Language Language => Language.en;
public string AccessToken => "token";
public bool IsLoggedIn => State.Value == APIState.Online;

View File

@ -4,6 +4,7 @@
using System;
using System.Threading.Tasks;
using osu.Framework.Bindables;
using osu.Game.Localisation;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Online.Notifications;
using osu.Game.Users;
@ -27,6 +28,11 @@ public interface IAPIProvider
/// </summary>
IBindable<UserActivity> Activity { get; }
/// <summary>
/// The language supplied by this provider to API requests.
/// </summary>
Language Language { get; }
/// <summary>
/// Retrieve the OAuth access token.
/// </summary>

View File

@ -296,7 +296,6 @@ private void load(ReadableKeyCombinationProvider keyCombinationProvider, Framewo
MessageFormatter.WebsiteRootUrl = endpoints.WebsiteRootUrl;
dependencies.CacheAs(API ??= new APIAccess(LocalConfig, endpoints, VersionHash));
frameworkLocale = frameworkConfig.GetBindable<string>(FrameworkSetting.Locale);
frameworkLocale.BindValueChanged(_ => updateLanguage());
@ -305,6 +304,7 @@ private void load(ReadableKeyCombinationProvider keyCombinationProvider, Framewo
CurrentLanguage.BindValueChanged(val => frameworkLocale.Value = val.NewValue.ToCultureCode());
dependencies.CacheAs(API ??= new APIAccess(this, LocalConfig, endpoints, VersionHash));
var defaultBeatmap = new DummyWorkingBeatmap(Audio, Textures);