wrolpi/app/src
Roland e673d03a9f
app: useVideoExtras drops any request that is not the newest
Matching on the video id let a stale request land when the user left
and returned to the same video, or saved an edit while the page's
first description request was still in flight.  Each fetch now takes a
generation number and only the newest generation may write state,
per value, so a description refetch never invalidates a comments
request.

The edit dialog adopts a description that arrives while it is open
only if the user has not typed, so a draft written over the
placeholder is not wiped by the empty or failed value that follows.

Tests: 7 -> none -> 8 -> 7 with the first request rejecting last; a
save refetch beating the initial request; the draft surviving; the
pending placeholder asserted; the console spy restored in finally.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-26 10:28:45 -06:00
..
api controller: VNC toggle, gated on the Desktop running 2026-07-29 18:10:05 -06:00
components app: useVideoExtras drops any request that is not the newest 2026-09-26 10:28:45 -06:00
contexts ui: the last of Semantic UI, in name and in dead CSS 2026-08-08 18:05:54 -06:00
hooks app: useVideoExtras drops any request that is not the newest 2026-09-26 10:28:45 -06:00
themes review: the color-scheme half of this was already there 2026-08-08 18:05:54 -06:00
types ui: the last Semantic UI file, and the stylesheet with it 2026-08-08 18:04:03 -06:00
api.js Jobs queue, video Edit dropdown: transcode/remux, edit title & description (#711) 2026-09-16 19:25:23 -06:00
App.css files: left-align the preview toolbar (#698) 2026-09-03 16:03:17 -06:00
App.js ui: the last Semantic UI file, and the stylesheet with it 2026-08-08 18:04:03 -06:00
babel-pins.test.js build: put the @babel pins back, and make them fail loudly if dropped again (#653) 2026-08-08 18:54:34 -06:00
DashboardPage.js ui: two upload dialogs that had drifted apart (#664) 2026-08-13 15:15:04 -06:00
DashboardPage.test.js ui: the dashboard's status panel links without looking like a link 2026-08-08 18:05:54 -06:00
Events.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-08 18:04:01 -06:00
import-cycles.test.js fix: break the import cycle that put useCalculators in the TDZ 2026-08-08 18:05:47 -06:00
index.css ui: the last Semantic UI file, and the stylesheet with it 2026-08-08 18:04:03 -06:00
index.js Fixing changes before merge. 2023-02-08 21:18:51 -07:00
logo.svg Renaming examples to avoid grouping of pdf with ebooks. Reworking URLs for media files to avoid escaping url safe characters. 2023-03-29 13:46:39 -06:00
no-semantic-ui.test.js ui: the last of Semantic UI, in name and in dead CSS 2026-08-08 18:05:54 -06:00
reportWebVitals.js Renaming examples to avoid grouping of pdf with ebooks. Reworking URLs for media files to avoid escaping url safe characters. 2023-03-29 13:46:39 -06:00
setupTests.js ui: the last of Semantic UI, in name and in dead CSS 2026-08-08 18:05:54 -06:00
Tags.cy.js test: the component suite's twelve failures, none of them about the component 2026-08-08 18:05:54 -06:00
Tags.js files: left-align the preview toolbar (#698) 2026-09-03 16:03:17 -06:00
Tags.test.js ui: the last of Semantic UI, in name and in dead CSS 2026-08-08 18:05:54 -06:00
test-fixtures.js ui: the last of Semantic UI, in name and in dead CSS 2026-08-08 18:05:54 -06:00
test-fixtures.test.js ui: the last of Semantic UI, in name and in dead CSS 2026-08-08 18:05:54 -06:00
test-utils.js style: spell it "color" everywhere 2026-08-08 18:05:50 -06:00
test-utils.test.js style: spell it "color" everywhere 2026-08-08 18:05:50 -06:00