optional action button toggle for pair request (default on)

This commit is contained in:
choco
2025-10-14 15:07:46 +02:00
parent d6a4595bb8
commit cf27a67296
3 changed files with 26 additions and 2 deletions

View File

@@ -125,6 +125,7 @@ public class LightlessConfig : ILightlessConfiguration
public bool DisablePairRequestSound { get; set; } = true; public bool DisablePairRequestSound { get; set; } = true;
public bool DisablePerformanceSound { get; set; } = true; public bool DisablePerformanceSound { get; set; } = true;
public bool ShowPerformanceNotificationActions { get; set; } = true; public bool ShowPerformanceNotificationActions { get; set; } = true;
public bool ShowPairRequestNotificationActions { get; set; } = true;
public bool UseFocusTarget { get; set; } = false; public bool UseFocusTarget { get; set; } = false;
public bool overrideFriendColor { get; set; } = false; public bool overrideFriendColor { get; set; } = false;
public bool overridePartyColor { get; set; } = false; public bool overridePartyColor { get; set; } = false;

View File

@@ -118,8 +118,10 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ
ShowChat(new NotificationMessage("Pair Request Received", $"{senderName} wants to directly pair with you.", NotificationType.PairRequest)); ShowChat(new NotificationMessage("Pair Request Received", $"{senderName} wants to directly pair with you.", NotificationType.PairRequest));
} }
// Show Lightless notification if configured // Show Lightless notification if configured and action buttons are enabled
if (location == NotificationLocation.LightlessUi || location == NotificationLocation.ChatAndLightlessUi) if ((location == NotificationLocation.LightlessUi || location == NotificationLocation.ChatAndLightlessUi)
&& _configService.Current.UseLightlessNotifications
&& _configService.Current.ShowPairRequestNotificationActions)
{ {
var notification = new LightlessNotification var notification = new LightlessNotification
{ {
@@ -139,6 +141,11 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ
Mediator.Publish(new LightlessNotificationMessage(notification)); Mediator.Publish(new LightlessNotificationMessage(notification));
} }
else if (location != NotificationLocation.Nowhere && location != NotificationLocation.Chat)
{
// Fall back to regular notification without action buttons
HandleNotificationMessage(new NotificationMessage("Pair Request Received", $"{senderName} wants to directly pair with you.", NotificationType.PairRequest));
}
} }
private uint? GetPairRequestSoundId() => private uint? GetPairRequestSoundId() =>

View File

@@ -4085,6 +4085,22 @@ public class SettingsUi : WindowMediatorSubscriberBase
ImGui.TreePop(); ImGui.TreePop();
} }
if (_uiShared.MediumTreeNode("Pair Request Notifications", UIColors.Get("PairBlue")))
{
var showPairRequestActions = _configService.Current.ShowPairRequestNotificationActions;
if (ImGui.Checkbox("Show action buttons on pair requests", ref showPairRequestActions))
{
_configService.Current.ShowPairRequestNotificationActions = showPairRequestActions;
_configService.Save();
}
_uiShared.DrawHelpText(
"When you receive a pair request, show Accept/Decline buttons in the notification.");
_uiShared.ColoredSeparator(UIColors.Get("LightlessPurple"), 1.5f);
ImGui.TreePop();
}
if (_uiShared.MediumTreeNode("Performance Notifications", UIColors.Get("LightlessOrange"))) if (_uiShared.MediumTreeNode("Performance Notifications", UIColors.Get("LightlessOrange")))
{ {
var showPerformanceActions = _configService.Current.ShowPerformanceNotificationActions; var showPerformanceActions = _configService.Current.ShowPerformanceNotificationActions;