/* * CloudBeaver - Cloud Database Manager * Copyright (C) 2020-2022 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ import { UserInfoResource } from '@cloudbeaver/core-authentication'; import { injectable } from '@cloudbeaver/core-di'; import { SharedProjectsResource } from '@cloudbeaver/core-resource-manager'; import { GraphQLService, CachedDataResource, RmProject } from '@cloudbeaver/core-sdk'; export type Project = Omit; @injectable() export class ResourceProjectsResource extends CachedDataResource { constructor( private readonly graphQLService: GraphQLService, private readonly userInfoResource: UserInfoResource, private readonly sharedProjectsResource: SharedProjectsResource, ) { super([]); this.userInfoResource.onUserChange.addPostHandler(() => { this.loaded = false; this.markOutdated(); }); this.sharedProjectsResource.onDataOutdated.addHandler(() => this.markOutdated()); this.sharedProjectsResource.onItemAdd.addHandler(() => this.markOutdated()); this.sharedProjectsResource.onItemDelete.addHandler(() => this.markOutdated()); } protected async loader(): Promise { const { projects } = await this.graphQLService.sdk.getResourceProjectList(); return projects; } }