Bestehende Emoji-Tags erscheinen im Editor als neu; neue Emoji-Tags verschwinden nach dem Posten

Ich habe ein inkonsistentes Verhalten bei Emoji-Tags im Themen-Editor festgestellt und es auf dem unveränderten main-Branch bei 802125b979b5bb848a7cfc52409ef3176ffd4d82 reproduzieren können.

Bei einem vorhandenen Emoji-Tag kann die Eingabe seines Namens dazu führen, dass statt des vorhandenen Tags und seiner Nutzungszahl die Option Erstellen angezeigt wird. Die Auswahl dieser Option und das anschließende Veröffentlichen hängen dennoch den vorhandenen Tag an. Ein tatsächlich neuer Emoji-Tag ist ein separater Fall: Er kann im Editor ausgewählt werden, verschwindet aber nach dem Veröffentlichen.

So lässt sich das Problem mit vorhandenen Tags reproduzieren:

  1. Verwenden Sie eine Instanz mit einem vorhandenen Emoji-Tag, z. B. 😊, sowie anderen, häufiger genutzten Tags.
  2. Öffnen Sie den Themen-Editor und geben Sie den Namen des Emoji-Tags ein.
  3. Falls dieses Tag außerhalb des Limits der zurückgegebenen beliebten Tags liegt, zeigt das Dropdown-Menü eine Erstellungsoption und unzusammenhängende beliebte Tags an, ohne die Nutzungszahl des vorhandenen Tags.
  4. Wählen Sie die Erstellungsoption aus, veröffentlichen Sie das Thema und aktualisieren Sie die Seite. Das Thema verwendet weiterhin den ursprünglichen Tag-Eintrag.

In einem isolierten Browser-Test verwendete ich einen vorhandenen Emoji-Tag mit einer Zählung von 17, einen unzusammenhängenden Tag mit einer Zählung von 100 und eine Suchbeschränkung von 1. Das Dropdown-Menü zeigte Erstellen: '😊' und beliebt x100; nach dem Veröffentlichen wurde der vorhandene Emoji-Tag korrekt wiederverwendet. Ohne einen vorhandenen 😊-Eintrag lieferte dieselbe Operation HTTP 200 zurück, speicherte jedoch kein Tag.

Die Ursache liegt in DiscourseTagging.clean_tag, das sowohl für Suchbegriffe als auch für das Speichern neuer Namen verwendet wird. Es entfernt Emoji-Zeichen. Die Suche fällt dann auf beliebte Ergebnisse zurück, während beim Speichern ein vorhandenes Tag möglicherweise noch über seinen Originalnamen gefunden wird, bevor neue Namen bereinigt werden.

Ich habe einen kleinen Patch, der vollständige Emoji-Grafeme erhält, die von den vorhandenen Daten in Emoji.unicode_replacements erkannt werden. Er behält die bestehende ASCII-Filterung bei und entfernt ungültige Zeichen aus nicht-Emoji-Text. Außerdem ermöglicht er, dass Vorschläge für deaktivierte Tags mit dem Anfang eines Namens übereinstimmen, da der aktuelle Wortgrenzen-Ausdruck Emoji-führende Namen wie 😊-restricted übersieht.

Der Patch ändert zwei Implementierungsdateien und fügt Regressionsabdeckungen in drei Testdateien hinzu. Er fügt keine Datenbank-Migration, Frontend-Änderungen, eine neue API oder einen weiteren Emoji-Cache hinzu.

Lokale Validierung: 572 verwandte Backend-Beispiele und 8 Browser-Beispiele bestanden. Die Browser-Tests prüfen, dass ein vorhandener Emoji-Tag x17 anzeigt, und dass sowohl dieser als auch ein tatsächlich neuer 😊-Tag nach dem Veröffentlichen und Aktualisieren erhalten bleiben.

Patch-Branch:

Verwandte Berichte und Diskussionen:

Diese Berichte beschreiben frühere Einschränkungen bei Emoji-Tags. Dieser Patch behebt die oben reproduzierten Fehler bei der Suche und dem Speichern im Editor; er beansprucht nicht, jedes Emoji-Tag-Problem zu lösen.