2Abendsegler / GClh

GC little helper II - Some little things to make life easy (on www.geocaching.com). Powerful, configurable tool to improve and expand the geocaching pages.
GNU General Public License v2.0
58 stars 38 forks source link

[Log Form] Default logtypes run into error: can't convert null to object #2549

Closed 2Abendsegler closed 8 months ago

2Abendsegler commented 8 months ago

Describe the bug

Console: grafik

Class css-i2jsxq-control wurde vermutlich in css-1gxawre-control umbenannt. Deshalb verursacht folgendes Coding einen Abbruch:

// Get React properties of logtype selection.
const logtype_selection = document.querySelector('.css-i2jsxq-control'),
      obj_keys = Object.keys(logtype_selection);

Bei diesen class Namen handelt es sich vermutlich um generierte Namen, deshalb sollten wir sie nicht verwenden. Anstatt dessen könnten wir vielleicht mit id react-select-cache-log-type-input einsteigen und in der Hierarchie nach oben gehen.

Außerdem sollte das Coding womöglich besser erst nach der if Anweisung erfolgen, nachdem wir es in der if Anweisung entsprechend geprüft haben.

// If cache owner and React properties are present set logtype.
if ($('.hidden-by a')[0] && $('.hidden-by a')[0].innerText && obj_keys[0]) {

@DieBatzen Moin, hast du vielleicht Zeit dir das anzuschauen?


2544


To Reproduce

Scheint bei allen Logs nicht mehr zu funktionieren.

Expected behavior

No response

OS

Windows

Browser

Firefox

GClh Version

0.15.4

Additional context

No response

DieBatzen commented 8 months ago

Klar, schaue ich mir an.

DieBatzen commented 8 months ago

Anstatt dessen könnten wir vielleicht mit id react-select-cache-log-type-input einsteigen und in der Hierarchie nach oben gehen.

Perfekt, so funktioniert es wieder einwandfrei und ist insbesondere unabhängig von automatisch generierten, möglicherweise wechselnden Klassennamen. Ich erstelle eine Merge Request für den Fix.

Außerdem sollte das Coding womöglich besser erst nach der if Anweisung erfolgen, nachdem wir es in der if Anweisung entsprechend geprüft haben.

Um den Code in der if Anweisung korrekt ausführen zu können, benötigen wir die React-Eigenschaft obj_keys[0]). Von daher muss sie vorher extrahiert und dann auf Existenz geprüft werden. Sollte das Extrahieren (wie aktuell, weil der Selektor nicht mehr existiert) fehlschlagen, wird eine Exception geworfen und später im Code gefangen.

Die restlichen Verbesserungen der Logseite werden aber weiter korrekt ausgeführt. Insofern würde ich sagen, das Coding funktioniert wie erwartet.

2Abendsegler commented 8 months ago

Merged with #2550