NoSoliciting/NoSoliciting/ContextMenu.cs

55 lines
1.6 KiB
C#
Executable File

using System;
using System.Linq;
using Dalamud.ContextMenu;
using NoSoliciting.Resources;
namespace NoSoliciting {
public class ContextMenu : IDisposable {
private Plugin Plugin { get; }
internal ContextMenu(Plugin plugin) {
this.Plugin = plugin;
this.Plugin.DalamudContextMenu.OnOpenGameObjectContextMenu += this.OnOpenContextMenu;
}
public void Dispose() {
this.Plugin.DalamudContextMenu.OnOpenGameObjectContextMenu -= this.OnOpenContextMenu;
}
private void OnOpenContextMenu(GameObjectContextMenuOpenArgs args) {
if (args.ParentAddonName != "LookingForGroup") {
return;
}
if (args.ContentIdLower == 0) {
return;
}
var label = Language.ReportToNoSoliciting;
args.AddCustomItem(new GameObjectContextMenuItem(label, this.Report));
}
private void Report(GameObjectContextMenuItemSelectedArgs args) {
if (args.ContentIdLower == 0) {
return;
}
var listing = this.Plugin.Common.Functions.PartyFinder.CurrentListings
.Values
.FirstOrDefault(listing => listing.ContentIdLower == args.ContentIdLower);
if (listing == null) {
return;
}
var message = this.Plugin.PartyFinderHistory.FirstOrDefault(message => message.ActorId == listing.ContentIdLower);
if (message == null) {
return;
}
this.Plugin.Ui.Report.ToShowModal = message;
}
}
}