Skip to content

Commit f629344

Browse files
committed
Add operators for Language and use them
Also fix small issue with enabling update presence button when it should be disabled and made logging be done how it should be in some places it wasn't being done correctly
1 parent 7a2c496 commit f629344

24 files changed

+134
-124
lines changed

src/MultiRPC/Language.cs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics.CodeAnalysis;
44
using System.IO;
@@ -16,7 +16,7 @@ namespace MultiRPC;
1616
public static class LanguageGrab
1717
{
1818
internal static Dictionary<LanguageText, string> EnglishLanguage;
19-
internal static Dictionary<LanguageText, string>? Language;
19+
internal static Dictionary<LanguageText, string>? CurrentLanguage;
2020
private static readonly ILogging Logger = LoggingCreator.CreateLogger(nameof(LanguageGrab));
2121
private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.General)
2222
{
@@ -45,11 +45,11 @@ private static void GrabLanguage()
4545
GeneralSettings.GetLanguages();
4646
if (GeneralSettings.Languages.ContainsKey(langName))
4747
{
48-
Language = GrabLanguageFile(GeneralSettings.Languages[langName]);
48+
CurrentLanguage = GrabLanguageFile(GeneralSettings.Languages[langName]);
4949
}
5050
}
5151

52-
if (Language != null)
52+
if (CurrentLanguage != null)
5353
return;
5454

5555
/*If we wasn't able to load the users language from
@@ -61,7 +61,7 @@ private static void GrabLanguage()
6161
if (currentLang != "en-gb")
6262
{
6363
var currentLangTwoLetter = currentCulture.TwoLetterISOLanguageName.ToLower();
64-
Language =
64+
CurrentLanguage =
6565
GrabLanguageFile(GetFilePath(currentLang))
6666
?? GrabLanguageFile(GetFilePath(currentLangTwoLetter));
6767
}
@@ -91,7 +91,7 @@ internal static void ChangeLanguage(string file)
9191
var lan = GrabLanguageFile(file);
9292
if (lan != null)
9393
{
94-
Language = lan;
94+
CurrentLanguage = lan;
9595
LanguageChanged?.Invoke(null, EventArgs.Empty);
9696
}
9797
}
@@ -141,7 +141,11 @@ public string Text
141141
public static Language GetLanguage(LanguageText? languageText)
142142
{
143143
languageText ??= LanguageText.NA;
144-
var lang = CachedLanguages.FirstOrDefault(x => x._textObservable.Value.JsonNames.Any(y => y == languageText));
144+
var lang = CachedLanguages.FirstOrDefault(x =>
145+
(x._textObservable.IsValueCreated ?
146+
x._textObservable.Value.JsonNames :
147+
(x._jsonNames ?? x._textObservable.Value.JsonNames))
148+
.Any(y => y == languageText));
145149
if (lang == null)
146150
{
147151
lang = new Language((LanguageText)languageText);
@@ -159,9 +163,9 @@ public static string GetText(LanguageText? jsonName)
159163
{
160164
return GetText(LanguageText.NA);
161165
}
162-
if (LanguageGrab.Language?.ContainsKey((LanguageText)jsonName) ?? false)
166+
if (LanguageGrab.CurrentLanguage?.ContainsKey((LanguageText)jsonName) ?? false)
163167
{
164-
return LanguageGrab.Language[(LanguageText)jsonName];
168+
return LanguageGrab.CurrentLanguage[(LanguageText)jsonName];
165169
}
166170
//We manually have the N/A here in case it isn't seen anywhere (But that would also show a bigger issue)
167171
return LanguageGrab.EnglishLanguage.ContainsKey((LanguageText)jsonName) ?
@@ -189,6 +193,10 @@ public static string GetText(LanguageText? jsonName)
189193

190194
return null;
191195
}
196+
197+
public override string ToString() => Text;
198+
public static implicit operator Language(LanguageText b) => GetLanguage(b);
199+
public static implicit operator Language(string b) => GetLanguage(b);
192200
}
193201

194202
public class LanguageObservable : IObservable<string>

src/MultiRPC/Logging/LoggingPageLogger.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ public class LoggingPageLogger : ILogging
1111
{
1212
private static Action<TextBlock>? _action;
1313
private static readonly List<string[]> StoredLogging = new List<string[]>();
14-
private static readonly Language DebugLanguage = Language.GetLanguage(LanguageText.Debug);
15-
private static readonly Language InfoLanguage = Language.GetLanguage(LanguageText.Info);
16-
private static readonly Language WarnLanguage = Language.GetLanguage(LanguageText.Warn);
17-
private static readonly Language ErrorLanguage = Language.GetLanguage(LanguageText.Error);
14+
private static readonly Language DebugLanguage = LanguageText.Debug;
15+
private static readonly Language InfoLanguage = LanguageText.Info;
16+
private static readonly Language WarnLanguage = LanguageText.Warn;
17+
private static readonly Language ErrorLanguage = LanguageText.Error;
1818

1919
internal static void AddAction(Action<TextBlock> action)
2020
{

src/MultiRPC/Program.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
using TinyUpdate.Core.Logging;
1414
using TinyUpdate.Core.Logging.Loggers;
1515

16-
//TODO: Go through app for text that needs to be localized
1716
//TODO: When reattempting Lottie animations, use https://github.com/AvaloniaUI/Avalonia.Lottie/tree/layercache-impl as a starting point (It works on some animations but crashes on others)
1817
[assembly: SemanticVersion("7.0.0-beta7")]
1918
namespace MultiRPC;

src/MultiRPC/Rpc/Page/RpcPageManager.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,19 @@ namespace MultiRPC.Rpc.Page;
77
public static class RpcPageManager
88
{
99
public static RpcPage? CurrentPage { get; private set; }
10+
public static RpcPage? PendingPage { get; private set; }
1011

1112
private static RpcClient? _rpcClient;
12-
private static RpcPage? _pendingPage;
13+
1314
private static void RpcClient_Disconnected(object? sender, EventArgs e)
1415
{
15-
if (_pendingPage == null)
16+
if (PendingPage == null)
1617
{
1718
return;
1819
}
1920

20-
CurrentPage = _pendingPage;
21-
_pendingPage = null;
21+
CurrentPage = PendingPage;
22+
PendingPage = null;
2223
NewCurrentPage?.Invoke(sender, CurrentPage);
2324
PageChanged?.Invoke(sender, CurrentPage);
2425
}
@@ -33,7 +34,7 @@ internal static void NewActivePage(RpcPage page)
3334

3435
if (_rpcClient.IsRunning)
3536
{
36-
_pendingPage = page;
37+
PendingPage = page;
3738
PageChanged?.Invoke(null, page);
3839
return;
3940
}

src/MultiRPC/Rpc/RpcClient.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ private async Task<bool> CheckPresence(string? text)
6767

6868
public void Start(long? applicationId, string? applicationName)
6969
{
70+
//TODO: Check if discord is running under admin and if we need to restart under admin (But warn about having both apps open with admin in the first place)
71+
7072
_presenceId = applicationId ?? RpcPageManager.CurrentPage?.RichPresence.Id ?? Constants.MultiRPCID;
7173
var idS = _presenceId.ToString();
7274

@@ -95,9 +97,9 @@ public void Start(long? applicationId, string? applicationName)
9597
if (LoggingCreator.ShouldProcess(_logger.LogLevel, LogLevel.Trace))
9698
{
9799
var debugMessage = Language.GetText(LanguageText.DiscordClientCheck)
98-
.Replace("{discordProcess}", (Language.GetText(processName ?? "NA")))
99-
.Replace("{wasFound}", (pipe != -1).ToString());
100-
_logger.Debug(debugMessage);
100+
.Replace("{discordProcess}", "{0}")
101+
.Replace("{wasFound}", "{1}");
102+
_logger.Debug(debugMessage, (Language.GetText(processName ?? "NA")), (pipe != -1).ToString());
101103
}
102104
_client = new DiscordRpcClient(idS, pipe)
103105
{

src/MultiRPC/UI/Controls/ColourButton.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public ImmutableSolidColorBrush BtnColor
1919
}
2020
}
2121

22-
private readonly StyledProperty<Language> _languageProperty = AvaloniaProperty.Register<ColourButton, Language>(nameof(Language), Language.GetLanguage(LanguageText.NA));
22+
private readonly StyledProperty<Language> _languageProperty = AvaloniaProperty.Register<ColourButton, Language>(nameof(Language), LanguageText.NA);
2323
public Language Language
2424
{
2525
get => GetValue(_languageProperty);

src/MultiRPC/UI/Controls/Settings/SettingDropdown.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public SettingDropdown(Language header, BaseSetting setting, MethodInfo getMetho
5656
//Set what should be shown
5757
if (languageSourceAttribute == null)
5858
{
59-
_cboSelection.Items = isLocalizable ? values.Select(x => Language.GetLanguage(x?.ToString() ?? "")) : values;
59+
_cboSelection.Items = isLocalizable ? values.Select(x => (Language)(x?.ToString() ?? "")) : values;
6060
}
6161
else
6262
{

src/MultiRPC/UI/Controls/TabsPage.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public sealed partial class TabsPage : UserControl
2424

2525
private readonly List<ITabPage> _pages = new List<ITabPage>();
2626
private Rectangle? _activePageRectangle;
27-
private static readonly Language NaLang = Language.GetLanguage(LanguageText.NA);
27+
private static readonly Language NaLang = LanguageText.NA;
2828
private static DisableSettings _disableSettings => SettingManager<DisableSettings>.Setting;
2929
private static readonly PointerPressedEventArgs PointerArg = new PointerPressedEventArgs(null!, null!, null!,
3030
new Point(), 0, PointerPointProperties.None, KeyModifiers.None);

src/MultiRPC/UI/MainPage.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ private Button AddSidePage(ISidePage page)
144144
}
145145
});
146146

147-
var lang = Language.GetLanguage(page.LocalizableName);
147+
Language lang = page.LocalizableName;
148148
lang.TextObservable.Subscribe(s => CustomToolTip.SetTip(btn, _disableSetting.ShowPageTooltips ? null : s));
149149
_disableSetting.PropertyChanged += (sender, args) =>
150150
{

src/MultiRPC/UI/MainWindow.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ private void InitializeExtra()
201201
};
202202
grdContent.Children.Insert(3, _control);
203203

204-
var lang = Language.GetLanguage(LanguageText.MultiRPC);
204+
Language lang = LanguageText.MultiRPC;
205205
if (_control is ITitlePage titlePage)
206206
{
207207
lang.TextObservable.Subscribe(s => UpdateTitle(s, titlePage.Title.Text));

0 commit comments

Comments
 (0)