feat(ui): warn before sending plugin-only symbols
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
namespace HellionChat._Helpers;
|
||||
|
||||
// UI-11 pure decision helper: does a message about to be sent carry a glyph
|
||||
// that only renders correctly for players running HellionChat or a similar
|
||||
// plugin? Those are FFXIV Private-Use-Area icon codepoints (the same range
|
||||
// SeIconChar covers); a recipient without a plugin sees an empty box.
|
||||
//
|
||||
// Works on raw char codepoints on purpose: SeIconChar is a Dalamud type, and a
|
||||
// helper that touched it could not run in the xUnit AppDomain
|
||||
// (feedback_dalamud_test_isolation, point 7).
|
||||
// TEST-MIRROR: ../../../Hellion Build test/Ui/PluginDisclosureScannerTests.cs
|
||||
public static class PluginDisclosureScanner
|
||||
{
|
||||
// FFXIV packs its icon glyphs into this slice of the Unicode Private Use
|
||||
// Area. The whole range is inside the BMP, so a single char per codepoint
|
||||
// is enough — no surrogate-pair handling needed.
|
||||
private const char PrivateUseFirst = '';
|
||||
private const char PrivateUseLast = '';
|
||||
|
||||
public static bool ContainsPrivateUseGlyph(string text)
|
||||
{
|
||||
foreach (var c in text)
|
||||
{
|
||||
if (c >= PrivateUseFirst && c <= PrivateUseLast)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user