[ACS-9584] Refresh after the change of name of a node (#12060)

* [ACS-9584] Refresh after the change of name of a node

* [ACS-9584] Add unit test for name change

* [ACS-9584] Merge the changed fields onto the existing one

* [ACS-9584] Refresh does not happen after name change of a file

* [ACS-9584] Page only reload for extension and version change

* [ACS-9584] Add sidebarTemplateContext to unit test

* [ACS-9584] Add unit test for the changes in ngOnChanges

* Render spinner visibility rather than internal field
This commit is contained in:
Shivangi Shree
2026-07-21 07:04:39 +00:00
committed by GitHub
parent 9d5f6e692c
commit 660b14a780
5 changed files with 117 additions and 49 deletions
@@ -585,6 +585,35 @@ describe('AlfrescoViewerComponent', () => {
expect(component.nodeMimeType).toEqual('application/msWord');
});
it('should update fileName when the node name changes', async () => {
const defaultNode = {
id: '123',
name: 'Mock_Node.pdf',
content: { mimeType: 'application/pdf' },
properties: { 'cm:versionLabel': 'mock-version-label' }
} as Node;
component.nodeEntry = { entry: defaultNode };
component.nodeId = '123';
component.sidebarRightTemplateContext = { node: defaultNode };
component.sidebarLeftTemplateContext = { node: defaultNode };
fixture.detectChanges();
nodesApiService.nodeUpdated.next({
...defaultNode,
name: 'Renamed_Node.pdf',
properties: { 'cm:versionLabel': 'mock-version-label' }
} as Node);
await fixture.whenStable();
expect(component.fileName).toBe('Renamed_Node.pdf');
expect(component.sidebarRightTemplateContext.node.name).toBe('Renamed_Node.pdf');
expect(component.sidebarLeftTemplateContext.node.name).toBe('Renamed_Node.pdf');
});
describe('versioned file with rendition', () => {
const docxMimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
const xlsxMimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
@@ -265,7 +265,11 @@ export class AlfrescoViewerComponent implements OnChanges, OnInit {
.pipe(
filter(
(node) =>
node && node.id === this.nodeId && this.getNodeVersionProperty(this.nodeEntry.entry) !== this.getNodeVersionProperty(node)
!!node &&
node.id === this.nodeId &&
!!this.nodeEntry?.entry &&
(this.getNodeVersionProperty(this.nodeEntry.entry) !== this.getNodeVersionProperty(node) ||
this.nodeEntry.entry.name !== node.name)
),
takeUntilDestroyed(this.destroyRef)
)
@@ -274,9 +278,22 @@ export class AlfrescoViewerComponent implements OnChanges, OnInit {
private async onNodeUpdated(node: Node) {
if (node && node.id === this.nodeId) {
this.generateCacheBusterNumber();
const previousNode = this.nodeEntry.entry;
const mergedNode = { ...previousNode, ...node };
this.nodeEntry = new NodeEntry({ entry: mergedNode });
await this.setUpNodeFile(node);
const versionChanged = this.getNodeVersionProperty(previousNode) !== this.getNodeVersionProperty(mergedNode);
const extensionChanged =
this.viewUtilService.getFileExtension(previousNode.name) !== this.viewUtilService.getFileExtension(mergedNode.name);
if (versionChanged || extensionChanged) {
this.generateCacheBusterNumber();
await this.setUpNodeFile(mergedNode);
} else {
this.fileName = mergedNode.name;
this.sidebarRightTemplateContext.node.name = mergedNode.name;
this.sidebarLeftTemplateContext.node.name = mergedNode.name;
}
this.cdr.detectChanges();
}
}