diff --git a/CHANGELOG.md b/CHANGELOG.md index a253337a5..3ea5a952c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added a feature for changing account email - Added `redirectUrl` parameter in the URL for login page +### Fixed +- Private datasets: return to the previously opened page after login ## [0.38.0] - 2025-01-27 ### Changed diff --git a/src/app/app.component.ts b/src/app/app.component.ts index a7de5ea89..d4abb2093 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -183,7 +183,9 @@ export class AppComponent extends BaseComponent implements OnInit { } public onLogin(): void { - this.localStorageService.setRedirectAfterLoginUrl(this.router.url); + if (!this.localStorageService.redirectAfterLoginUrl) { + this.localStorageService.setRedirectAfterLoginUrl(this.router.url); + } this.navigationService.navigateToLogin(); } diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts index 6a543496f..f7b2bc969 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts @@ -243,7 +243,7 @@ export class DatasetSettingsGeneralTabComponent extends BaseComponent implements ] : [ "You will decide who else has access", - "It will appear in search results on for people with access", + "It will appear in search results only for people with access", "You can control the level of access others have", ], warningText: !this.isPrivate diff --git a/src/app/dataset-view/dataset.service.spec.ts b/src/app/dataset-view/dataset.service.spec.ts index 6ef99ce27..16a7a670f 100644 --- a/src/app/dataset-view/dataset.service.spec.ts +++ b/src/app/dataset-view/dataset.service.spec.ts @@ -8,13 +8,12 @@ import { mockDatasetLineageResponse, } from "../search/mock.data"; import { TestBed } from "@angular/core/testing"; -import { Apollo, ApolloModule } from "apollo-angular"; +import { Apollo, APOLLO_OPTIONS } from "apollo-angular"; import { DatasetApi } from "../api/dataset.api"; import { ModalService } from "../components/modal/modal.service"; import { DatasetService } from "./dataset.service"; import { DatasetSubscriptionsService } from "./dataset.subscriptions.service"; import { HttpClientTestingModule } from "@angular/common/http/testing"; -import { ApolloTestingModule } from "apollo-angular/testing"; import { DataQueryResultErrorKind, DatasetBasicsFragment, @@ -45,8 +44,24 @@ describe("AppDatasetService", () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ApolloModule, ApolloTestingModule, HttpClientTestingModule], - providers: [DatasetApi, ModalService, DatasetService, DatasetSubscriptionsService, Apollo], + imports: [HttpClientTestingModule], + providers: [ + DatasetApi, + ModalService, + DatasetService, + DatasetSubscriptionsService, + Apollo, + { + provide: APOLLO_OPTIONS, + useFactory: () => { + return { + cache: { + evict: () => null, + }, + }; + }, + }, + ], }); service = TestBed.inject(DatasetService); datasetApi = TestBed.inject(DatasetApi); diff --git a/src/app/dataset-view/dataset.service.ts b/src/app/dataset-view/dataset.service.ts index 93ae4ed11..38513bf7a 100644 --- a/src/app/dataset-view/dataset.service.ts +++ b/src/app/dataset-view/dataset.service.ts @@ -1,3 +1,4 @@ +import { LocalStorageService } from "src/app/services/local-storage.service"; import { SqlExecutionError } from "../common/errors"; import { BlockRef, @@ -39,12 +40,15 @@ import { parseCurrentSchema } from "../common/app.helpers"; import { APOLLO_OPTIONS } from "apollo-angular"; import { resetCacheHelper } from "../apollo-cache.helper"; import { parseDataRows } from "../common/data.helpers"; +import { Router } from "@angular/router"; @Injectable({ providedIn: "root" }) export class DatasetService { private datasetApi = inject(DatasetApi); private datasetSubsService = inject(DatasetSubscriptionsService); private injector = inject(Injector); + private router = inject(Router); + private localStorageService = inject(LocalStorageService); private currentHeadBlockHash: string; private dataset$: Subject = new Subject(); @@ -81,6 +85,12 @@ export class DatasetService { throw new SqlExecutionError(dataTail.errorMessage); } } else { + this.localStorageService.setRedirectAfterLoginUrl(this.router.url); + const cache = this.injector.get(APOLLO_OPTIONS).cache; + cache.evict({ + id: "ROOT_QUERY", + fieldName: "datasets", + }); throw new DatasetNotFoundError(); } }),