Skip to content

Commit

Permalink
[ENG-6931] Update file shown in MFR when changing versions
Browse files Browse the repository at this point in the history
-   Ticket: [ENG-6931]
-   Feature flag: n/a

## Purpose
- Update the file version shown in mfr window when changing preprint versions

## Summary of Changes
- Don't use cached preprint or file-version in file renderer component
  • Loading branch information
futa-ikeda authored Jan 16, 2025
1 parent 4a287f6 commit a4535b7
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 22 deletions.
31 changes: 14 additions & 17 deletions app/preprints/-components/preprint-file-render/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ import Media from 'ember-responsive';


interface InputArgs {
preprint: PreprintModel;
provider: PreprintProviderModel;
primaryFile: FileModel;
preprint: PreprintModel;
provider: PreprintProviderModel;
primaryFile: FileModel;
}

export interface VersionModel extends FileVersionModel {
downloadUrl?: string;
downloadUrl?: string;
}

export default class PreprintFileRender extends Component<InputArgs> {
Expand All @@ -30,42 +30,39 @@ export default class PreprintFileRender extends Component<InputArgs> {
@tracked primaryFileHasVersions = false;
@tracked fileVersions: VersionModel[] = [];

primaryFile = this.args.primaryFile;
provider = this.args.provider;
preprint = this.args.preprint;

constructor(owner: unknown, args: InputArgs) {
super(owner, args);

taskFor(this.loadPrimaryFileVersions).perform();

this.allowCommenting = this.provider.allowCommenting && this.preprint.isPublished && this.preprint.public;
this.allowCommenting = this.args.provider.allowCommenting
&& this.args.preprint.isPublished && this.args.preprint.public;
}

@task
@waitFor
private async loadPrimaryFileVersions() {
const primaryFileVersions = (await this.primaryFile.queryHasMany('versions', {
const primaryFileVersions = (await this.args.primaryFile.queryHasMany('versions', {
sort: '-id', 'page[size]': 50,
})).toArray();
this.serializeVersions(primaryFileVersions);
this.primaryFileHasVersions = primaryFileVersions.length > 0;
}

private serializeVersions(versions: FileVersionModel[]) {
const downloadUrl = this.primaryFile.links.download as string || '';
const downloadUrl = this.args.primaryFile.links.download as string || '';

versions.map((version: VersionModel) => {
const dateFormatted = encodeURIComponent(version.dateCreated.toISOString());
const displayName = version.name.replace(/(\.\w+)?$/, ext => `-${dateFormatted}${ext}`);

this.fileVersions.push(
{
name: version.name,
id: version.id,
dateCreated: version.dateCreated,
downloadUrl: `${downloadUrl}?version=${version.id}&displayName=${displayName}`,
} as VersionModel,
{
name: version.name,
id: version.id,
dateCreated: version.dateCreated,
downloadUrl: `${downloadUrl}?version=${version.id}&displayName=${displayName}`,
} as VersionModel,
);
return version;
});
Expand Down
10 changes: 5 additions & 5 deletions app/preprints/-components/preprint-file-render/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@
<div local-class='file-container'>
<FileRenderer
@allowCommenting={{this.allowCommenting}}
@download={{this.primaryFile.links.download}}
@download={{@primaryFile.links.download}}
/>
</div>

<div local-class='details-container'>
<div local-class='name-container'>
<div data-test-selected-file-name local-class='name'>
{{this.primaryFile.name}}
{{@primaryFile.name}}
</div>
<div data-test-file-version local-class='version'>
{{t 'preprints.detail.file_renderer.version'}}: {{this.primaryFile.currentVersion}}
{{t 'preprints.detail.file_renderer.version'}}: {{@primaryFile.currentVersion}}
</div>
</div>
<div local-class='version-container'>
{{#if this.primaryFileHasVersions}}
<ResponsiveDropdown
{{#if @primaryFileHasVersions}}
<ResponsiveDropdown
@renderInPlace={{true}}
@buttonStyling={{true}}
as |dd|
Expand Down

0 comments on commit a4535b7

Please sign in to comment.