Advarsel ved samtidig redigering av samme side

Sist endret: 2026-03-18 20:34av bruker: Erik Hagen ID: 10150bf8-2d70-4690-ba2b-0c9884cf0f3e ◍Ny

Hvis to brukere åpner redigeringsdialogen for samme side samtidig, vil den siste som lagrer overskrive den andres endringer uten advarsel. En enkel «noen redigerer allerede denne siden»-melding ville redusert risikoen for tapte endringer.

Utfordring

Konfliktvarselet krever en form for delt tilstand: at én nettleser kan se at en annen nettleser har åpnet redigeringsdialogen for en bestemt side. localStorage er bruker-lokalt og fungerer ikke på tvers av brukere.

Mulige løsninger

A – Cloudflare Workers KV (lettvekt presence-register)

Når redigeringsdialogen åpnes: skriv { user, page, openedAt } til KV med TTL på f.eks. 10 minutter. Når en annen bruker åpner samme side: les KV og vis advarsel hvis oppføringen finnes og ikke er utløpt. Når dialogen lukkes eller lagres: slett oppføringen.

Fordeler: Lav latens, ingen ekstern avhengighet utover eksisterende CF-infrastruktur. KV er gratis på CF Workers free tier. Ulemper: Krever endring i Cloudflare Worker + ny KV-binding. TTL-basert – stale locks hvis nettleseren krasjer uten å slette.

B – GitHub-fil som lock-register

Skriv en liten JSON-fil (f.eks. .editing-locks.json) til en branch i repoet via GitHub API. Leses av andre brukere ved åpning av dialog.

Fordeler: Ingen ny infrastruktur. Ulemper: GitHub API-kall er treige for dette formålet. Risiko for konflikt på lock-filen selv.

C – Kun advare basert på aktive bygg

En enklere tilnærming: vis advarsel hvis det finnes et aktivt bygg nylig trigget fra samme side (utledet fra commit-meldingen). Ikke en ekte lock, men dekker det vanligste tilfellet.

Fordeler: Bruker eksisterende GitHub Actions API – ingen ny infrastruktur. Ulemper: Dekker ikke tilfellet der en bruker har åpnet dialogen men ikke lagret ennå.

Anbefalt tilnærming

Alternativ A (CF Workers KV) er den reneste løsningen og passer godt med eksisterende arkitektur. Alternativ C kan vurderes som et raskt første steg.

Relatert

  • cloudflare-worker/oauth-worker.js – eksisterende CF Worker som kan utvides
  • themes/hugo-theme-samt-bu/layouts/partials/custom-footer.htmlopenQuillEditDialog()
  • Veikart: Bygg-status og Lukk-knapp – beslektet problem