From 3387cf9e674fa4c91d6b3c181e2875bd5a7555fe Mon Sep 17 00:00:00 2001 From: nsemets Date: Wed, 12 Nov 2025 16:10:59 +0200 Subject: [PATCH 1/2] fix(project-storage): fixed project storage data --- .../overview/project-overview.component.ts | 9 ++++++- src/app/shared/pipes/file-size.pipe.ts | 27 ++++++++++++------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/app/features/project/overview/project-overview.component.ts b/src/app/features/project/overview/project-overview.component.ts index f085e64ad..b4ee62c9a 100644 --- a/src/app/features/project/overview/project-overview.component.ts +++ b/src/app/features/project/overview/project-overview.component.ts @@ -183,7 +183,6 @@ export class ProjectOverviewComponent implements OnInit { if (projectId) { this.actions.getProject(projectId); - this.actions.getProjectStorage(projectId); this.actions.getBookmarksId(); this.actions.getComponents(projectId); this.actions.getLinkedProjects(projectId); @@ -256,6 +255,14 @@ export class ProjectOverviewComponent implements OnInit { this.actions.getHomeWiki(ResourceType.Project, project.id); } }); + + effect(() => { + const project = this.currentProject(); + + if (project && this.hasWriteAccess()) { + this.actions.getProjectStorage(project.id); + } + }); } private setupAddonsEffects(): void { diff --git a/src/app/shared/pipes/file-size.pipe.ts b/src/app/shared/pipes/file-size.pipe.ts index e90a89dd3..c833772d9 100644 --- a/src/app/shared/pipes/file-size.pipe.ts +++ b/src/app/shared/pipes/file-size.pipe.ts @@ -4,17 +4,24 @@ import { Pipe, PipeTransform } from '@angular/core'; name: 'fileSize', }) export class FileSizePipe implements PipeTransform { - transform(bytes: number): string { - if (!bytes) { - return ''; - } else if (bytes < 1024) { + private readonly SI_UNITS = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + private readonly BINARY_UNITS = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; + + transform(bytes: number | null | undefined, si = true): string { + if (bytes == null) return '0 B'; + + const threshold = si ? 1000 : 1024; + const units = si ? this.SI_UNITS : this.BINARY_UNITS; + const absBytes = Math.abs(bytes); + + if (absBytes < threshold) { return `${bytes} B`; - } else if (bytes < 1024 ** 2) { - return `${(bytes / 1024).toFixed(1)} kB`; - } else if (bytes < 1024 ** 3) { - return `${(bytes / 1024 ** 2).toFixed(1)} MB`; - } else { - return `${(bytes / 1024 ** 3).toFixed(1)} GB`; } + + const exponent = Math.min(Math.floor(Math.log(absBytes) / Math.log(threshold)), units.length - 1); + + const value = bytes / Math.pow(threshold, exponent); + + return `${value.toFixed(1)} ${units[exponent]}`; } } From c42af19a4b956ab94c40c41cfbde7e29880f5e91 Mon Sep 17 00:00:00 2001 From: nsemets Date: Wed, 12 Nov 2025 16:32:22 +0200 Subject: [PATCH 2/2] fix(unit-tests): fixed unit test --- .../project/overview/project-overview.component.spec.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/app/features/project/overview/project-overview.component.spec.ts b/src/app/features/project/overview/project-overview.component.spec.ts index 243d684e0..eff3c50f8 100644 --- a/src/app/features/project/overview/project-overview.component.spec.ts +++ b/src/app/features/project/overview/project-overview.component.spec.ts @@ -37,13 +37,7 @@ import { ProjectOverviewToolbarComponent } from './components/project-overview-t import { RecentActivityComponent } from './components/recent-activity/recent-activity.component'; import { ProjectOverviewModel } from './models'; import { ProjectOverviewComponent } from './project-overview.component'; -import { - ClearProjectOverview, - GetComponents, - GetProjectById, - GetProjectStorage, - ProjectOverviewSelectors, -} from './store'; +import { ClearProjectOverview, GetComponents, GetProjectById, ProjectOverviewSelectors } from './store'; import { MOCK_PROJECT_OVERVIEW } from '@testing/mocks/project-overview.mock'; import { OSFTestingModule } from '@testing/osf.testing.module'; @@ -139,7 +133,6 @@ describe('ProjectOverviewComponent', () => { component.ngOnInit(); expect(store.dispatch).toHaveBeenCalledWith(expect.any(GetProjectById)); - expect(store.dispatch).toHaveBeenCalledWith(expect.any(GetProjectStorage)); expect(store.dispatch).toHaveBeenCalledWith(expect.any(GetBookmarksCollectionId)); expect(store.dispatch).toHaveBeenCalledWith(expect.any(GetComponents)); expect(store.dispatch).toHaveBeenCalledWith(expect.any(GetLinkedResources));