Scarwolf / p0weruser

A powerful UserScript to add additional functionality.
https://www.pr0gramm.com
38 stars 8 forks source link

Schon gesehen funktioniert nicht #122

Closed ByteRaper closed 1 year ago

ByteRaper commented 1 year ago

Bug Summary / Fehlerbeschreibung

Haken verschwinden nach Reload der Seite wieder.

Habe schon Skript neu installiert und den Local Storage gelöscht. Inhalt des Local Storage:

grafik

Steps to Reproduce the Problem / Wie kann der Fehler reproduziert werden

  1. Schon gesehen Funktion aktivieren
  2. Post anschauen. Haken ist da.
  3. Seiten reload. Alles wieder weg.

Specifications / Daten

twobiers commented 1 year ago
  1. Schon gesehen Funktion aktivieren
  2. Post anschauen. Haken ist da.
  3. Seiten reload. Alles wieder weg.

Die gesehenen Posts werden nicht direkt übernommen, sondern wenn pr0gramm sich mit den Servern synchronisiert. Das passiert ungefähr jede Minute. Im Network-Tab in den Entwicklertools ist das über den "sync" Endpoint/File erkennbar. Ist das das Problem?

ByteRaper commented 1 year ago

Auch nach dem Sync gehen die Haken verloren, wenn man refresht. Habe weder Lesend noch Schreibend Sync an.

twobiers commented 1 year ago

Geht es, wenn du zwischen neu/beliebt wechselst?

ByteRaper commented 1 year ago

Das funktioniert, aber sobald ich ein mal F5 benutze, sind alle Sachen wieder weg.

twobiers commented 1 year ago

Okay, dann schau ich mir das nochmal an. Dachte eigentlich, dass ich das endlich los wäre. Ist ein bisschen tricky sich als Userscript in das pr0 Frontend einzuklinken...

ByteRaper commented 1 year ago

Mir ist gerade aufgefallen: Haken sind zu sehen, bei älteren Posts. Sprich: Die Seite lädt bis zu einem gewissen Post mit allen Posts als ungesehen markiert, trotz bereits gesehen. Danach werden weitere Posts geladen, die korrekt als bereits gesehen angezeigt werden.

grafik grafik (Tägliche Dosis Cringe, bitte net hauern)

twobiers commented 1 year ago

Ich habe als provisorischen Fix die Initialisierung von p0weruser ein wenig verzögert. Dadurch sollte p0weruser genügend Zeit haben zu laden und p0weruser kann sich besser in die Funktionen einklinken. Das macht beim laden der Seite etwa 500ms aus.

Ich versuche mal irgendwann nochmal Zeit zu investieren und eine sauberere Lösung zu finden. Ist leider auch verdammt müßig das zu testen, weil es nicht in der Entwicklungsumgebung auftritt.

Testen könnt ihr das in der Dev-Version - Bitte gebt Feedback, wenn es das Problem bei euch behebt (und wenn nicht): https://scarwolf.github.io/p0weruser/p0weruser.dev.user.js

twobiers commented 1 year ago

Timeout ist raus und in der Dev-Verison läuft's jetzt auch ohne.

twobiers commented 1 year ago

Höre keine Klagen, ist released. https://github.com/Scarwolf/p0weruser/releases/tag/v2.6.0

HopefullyICanChangeThatNameLaterOn commented 1 year ago

Die gesehenen Posts werden nicht direkt übernommen, sondern wenn pr0gramm sich mit den Servern synchronisiert. Das passiert ungefähr jede Minute. Im Network-Tab in den Entwicklertools ist das über den "sync" Endpoint/File erkennbar. Ist das das Problem?

@twobiers kannst du das erwartete Verhalten genauer erklären? Wenn ich einen Post anschaue, dann F5 drücke, dann ist dieser aktuell immer ungesehen (v2.6.0 / Firefox 110.0.1). Früher würde das doch auch direkt übernommen? Wenn die Übernahme nur ungefähr jede Minute passiert, dann ist das Feature für mein Surfverhalten ziemlich nutzlos geworden - ich mach das pr0 auf, schaue mir 5 Posts an und dann mach ich es zu. Das passiert am Tag n mal. Was ich dann als gesehen markiert bekomme, ist dann letztendlich rein zufällig und nur ein Bruchteil von dem, was ich tatsächlich angeschaut habe.

Kannst du die Synchronisierung beim Schließen des Tabs nicht auch manuell antriggern? Kannst du nicht ein Mix aus lokaler Speicherung und Serverspeicherung machen? Kannst du eine Option anbieten NUR die lokale Speicherung zu nutzen?

twobiers commented 1 year ago

kannst du das erwartete Verhalten genauer erklären?

Klar. p0weruser klinkt sich als Userscript in die pr0gramm-eigenen skripte ein. pr0gramm "synchronisiert" sich in regelmäßigen Intervallen mit den Servern. Dabei werden dann bspw. Nachrichten und Benis aktualisiert. Diesen Zyklus macht p0weruser sich jetzt zu nutze um die gesehenen Posts auch zu synchronisieren. Hintergrund ist, dass das ein relativ aufwendiger Prozess ist (Berechnung, Komprimierung, Network-Traffic) und deshalb besser in Intervallen oder zu definierten Zeitpunkten passiert als direkt beim Anschauen von Posts. Ich glaube aktuell liegt die Synchroniserungs-Intervall bei circa einer Minute.

Früher würde das doch auch direkt übernommen?

Das ist richtig. Dafür hatten wir ein paar andere Probleme, z.B. das Speicherlimit (#14). Ist einfach jetzt ein anderes Design was dahinter steckt.

Kannst du die Synchronisierung beim Schließen des Tabs nicht auch manuell antriggern?

Ginge zwar, finde ich aber problematisch, weil man da eigentlich keine I/O Aufgaben machen sollte und ich glaube das macht auch je nach Browser Probleme.

Kannst du nicht ein Mix aus lokaler Speicherung und Serverspeicherung machen? Kannst du eine Option anbieten NUR die lokale Speicherung zu nutzen?

Wird schon so gemacht. Aber auch die lokale Speicherun hängt an dem sync-Zyklus (Gleiche begründung wie oben: Berechnung, Komprimierung)

Ich sehe deinen Punkt jedenfalls, aber hab gerade keine Befriedigende Lösung parat. Wenn du dir aber eine Lösung wünscht, dann erstell bitte einfach einen Feature-Request, dann geht das nicht unter.