The GitHub Actions job "Required Checks" on texera.git/main has failed.
Run started by GitHub user github-merge-queue[bot] (triggered by 
github-merge-queue[bot]).

Head commit for run:
4ff0b8b4ac415c4d60bfd73f37da5e3039ade2ec / Tanishq Gandhi 
<[email protected]>
fix(frontend): refresh a dataset's paths after a rename, and block renaming 
mid-upload (#8347)

### What changes were proposed in this PR?

Every file path on a dataset's detail page embeds the dataset name, and
preview and single-file
download resolve a dataset by (owner, name). `onSaveDatasetName()`
updated the displayed name and
nothing else, so after a rename the page kept serving the old paths: the
file tree and the path above
the preview still said the old name, clicking a file hung on "File
content is loading" (404, then
500), and the Data Card's "Latest version file" was stale too. Only a
reload recovered.

The same rename was also allowed while an upload was running. The upload
is addressed by the name it
started with, so the data uploaded fine and then the completing call
failed with
`400 {"code":400,"message":"Dataset not found"}`, leaving the panel on
"Uploading: 1 file(s)" forever
and a row behind in `dataset_upload_session`.

- `dataset-detail.component.ts` — after a successful rename, refetch the
browsed version's file tree
and the Data Card's latest-version facts. The selected version is kept
deliberately;
`retrieveDatasetVersionList()` would also refresh both but resets the
picker to the newest version,
  which a rename is no reason to do.
- `dataset-detail.component.ts` / `.html` — bind the uploader's existing
`uploadsInFlightChange`,
disable the name field and Save while an upload is running, show a hint
saying why, and guard
  `onSaveDatasetName()` on the same invariant.

Note the browsed file resets to the version's first file after a rename,
because the dataset page
does not track the open file's relative path the way the model page
does. That is a small change in
behaviour from a page that was previously broken; tracking the open path
can follow separately if it
is worth it.

**Before** — renamed, but the path still says `sensor-readings` and the
preview hangs (console output
overlaid so it fits in one screenshot); the Data Card keeps the old path
too:
<img width="1440" height="900" alt="image"
src="https://github.com/user-attachments/assets/330c06d6-a65a-409c-bf80-53b46c4d334c";
/>
<img width="1440" height="900" alt="image"
src="https://github.com/user-attachments/assets/53da25ab-2220-45f3-96c0-6f7012202bc0";
/>

**After** — the path and the Data Card both follow the new name, and the
file opens:

<!-- attach issue2-2-stale-tree-after.png -->
<!-- attach issue2-4-data-card-after.png -->

**After** — renaming is blocked while an upload is in flight:

<img width="1440" height="900" alt="image"
src="https://github.com/user-attachments/assets/7b0a7540-82fe-4403-8de3-eb9e2dae119b";
/>

### Any related issues, documentation, discussions?

Closes #8345.

### How was this PR tested?

Three cases added to `dataset-detail.component.spec.ts`:

- `refetches the file tree and the latest-version facts, which both
embed the old name` — asserts both
fetches happen with the browsed `dvid`, and that the selected version is
unchanged. Removing the
  two refresh calls fails this test.
- `refuses to rename while an upload is in flight, which would strand
it`.
- `locks the name field while an upload is in flight` — drives the real
uploader output through the
  rendered template and checks the input and Save button are disabled.

```
cd frontend
npx ng test --include 
src/app/dashboard/component/user/user-dataset/user-dataset-explorer/dataset-detail.component.spec.ts
# Tests  145 passed (145)
```

Also checked by hand against a local stack, with the file uploads
throttled so the upload stays in
flight: renaming now leaves the tree, the path header and the Data Card
all on the new name and files
still open, and the name field is greyed out with the hint while an
upload runs.

### Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (Opus 5)

Report URL: https://github.com/apache/texera/actions/runs/33706288206

With regards,
GitHub Actions via GitBox

Reply via email to