Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions CollapseLauncher/Classes/DiscordPresence/DiscordPresenceManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,24 @@ public enum ActivityType
public sealed partial class DiscordPresenceManager : IDisposable
{
#region Properties

[field: NonSerialized]
private bool? _isRpcEnabled;
public bool IsRpcEnabled
{
get => _isRpcEnabled ??= GetAppConfigValue("EnableDiscordRPC").ToBoolNullable() ?? false;
set
{
if (_isRpcEnabled == value) return;

_isRpcEnabled = value;

SetAndSaveConfigValue("EnableDiscordRPC", value);
if (value) SetupPresence();
else DisablePresence();
}
}

private const string CollapseLogoExt = "https://collapselauncher.com/img/logo@2x.webp";

private DiscordRpcClient? _client;
Expand All @@ -46,8 +64,8 @@ public sealed partial class DiscordPresenceManager : IDisposable
private DateTime? _lastPlayTime;
private bool _firstTimeConnect = true;
private readonly ActionBlock<RichPresence?> _presenceUpdateQueue;

private bool _cachedIsIdleEnabled = true;
private bool _cachedIsIdleEnabled = true;

public bool IdleEnabled
{
Expand Down Expand Up @@ -103,6 +121,7 @@ public void Dispose()

private void EnablePresence(ulong applicationId)
{
if (!IsRpcEnabled) return;
_firstTimeConnect = true;

// Flush and dispose the session
Expand Down Expand Up @@ -168,8 +187,10 @@ public void DisablePresence()

public void SetupPresence()
{
string? gameCategory = GetAppConfigValue("GameCategory").ToString();
bool isGameStatusEnabled = GetAppConfigValue("EnableDiscordGameStatus").ToBool();
if (!IsRpcEnabled) return;

var gameCategory = GetAppConfigValue("GameCategory").ToString();
var isGameStatusEnabled = GetAppConfigValue("EnableDiscordGameStatus").ToBool();

if (isGameStatusEnabled)
{
Expand Down Expand Up @@ -220,10 +241,7 @@ private bool TryEnablePresenceIfPlugin()

public void SetActivity(ActivityType activity, DateTime? activityOffset = null)
{
if (!GetAppConfigValue("EnableDiscordRPC").ToBool())
{
return;
}
if (!IsRpcEnabled) return;

//_lastAttemptedActivityType = activity;
_activityType = activity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,7 @@ private async Task<bool> LoadRegionRootButton()

LogWriteLine($"Region changed to {Preset.ZoneFullname}", LogType.Scheme, true);
#if !DISABLEDISCORD
if (GetAppConfigValue("EnableDiscordRPC").ToBool())
if (AppDiscordPresence.IsRpcEnabled)
AppDiscordPresence.SetupPresence();
#endif
return true;
Expand Down
4 changes: 2 additions & 2 deletions CollapseLauncher/XAMLs/MainApp/MainPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -881,8 +881,8 @@ private async void ChangeToActivatedRegion()
if (await LoadRegionFromCurrentConfigV2(preset, gameName, gameRegion))
{
#if !DISABLEDISCORD
if (GetAppConfigValue("EnableDiscordRPC").ToBool() && !sameRegion)
AppDiscordPresence?.SetupPresence();
if ((AppDiscordPresence?.IsRpcEnabled ?? false) && !sameRegion)
AppDiscordPresence.SetupPresence();
#endif
InvokeLoadingRegionPopup(false);
LauncherFrame.BackStack.Clear();
Expand Down
1 change: 1 addition & 0 deletions CollapseLauncher/XAMLs/MainApp/Pages/HomePage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -2219,6 +2219,7 @@
Style="{ThemeResource BodyStrongTextBlockStyle}"
Text="{x:Bind helper:Locale.Lang._HomePage.GameSettings_Panel3RegionRpc}" />
<ToggleSwitch x:Name="RegionRpcToggle"
IsEnabled="{x:Bind IsRpcEnabled_QS}"
IsOn="{x:Bind ToggleRegionPlayingRpc, Mode=TwoWay}"
OffContent="{x:Bind helper:Locale.Lang._Misc.Disabled}"
OnContent="{x:Bind helper:Locale.Lang._Misc.Enabled}" />
Expand Down
2 changes: 2 additions & 0 deletions CollapseLauncher/XAMLs/MainApp/Pages/HomePage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ public sealed partial class HomePage
private int barWidth;
private int consoleWidth;

private readonly bool IsRpcEnabled_QS = AppDiscordPresence?.IsRpcEnabled ?? false;

public static int RefreshRateDefault => 500;
public static int RefreshRateSlow => 1000;

Expand Down
13 changes: 6 additions & 7 deletions CollapseLauncher/XAMLs/MainApp/Pages/SettingsPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -769,9 +769,9 @@ private bool IsDiscordRpcEnabled
{
get
{
bool isEnabled = GetAppConfigValue("EnableDiscordRPC");
ToggleDiscordGameStatus.IsEnabled = IsEnabled;
if (isEnabled)
var e = AppDiscordPresence.IsRpcEnabled;
ToggleDiscordGameStatus.IsEnabled = e;
if (e)
{
ToggleDiscordGameStatus.Visibility = Visibility.Visible;
ToggleDiscordIdleStatus.Visibility = Visibility.Visible;
Expand All @@ -781,23 +781,22 @@ private bool IsDiscordRpcEnabled
ToggleDiscordGameStatus.Visibility = Visibility.Collapsed;
ToggleDiscordIdleStatus.Visibility = Visibility.Collapsed;
}
return isEnabled;
return e;
}
set
{
if (value)
{
AppDiscordPresence.SetupPresence();
ToggleDiscordGameStatus.Visibility = Visibility.Visible;
ToggleDiscordIdleStatus.Visibility = Visibility.Visible;
}
else
{
AppDiscordPresence.DisablePresence();
ToggleDiscordGameStatus.Visibility = Visibility.Collapsed;
ToggleDiscordIdleStatus.Visibility = Visibility.Collapsed;
}
SetAndSaveConfigValue("EnableDiscordRPC", value);

AppDiscordPresence.IsRpcEnabled = value;
ToggleDiscordGameStatus.IsEnabled = value;
}
}
Expand Down
Loading