From ebade45d436ca7b2db20baf2fad34cbeb2e98b24 Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Fri, 7 Mar 2025 13:09:03 +0200 Subject: [PATCH] feat: remove project discoverability concept from UI (#4125) * feat: remove project discoverability concept from UI * test fix --- .../components/project/VisibilitySelect.vue | 23 ++-- .../project/model-page/dialog/embed/Embed.vue | 10 +- .../page/settings/general/block/Access.vue | 22 ++-- .../settings/general/block/Discussions.vue | 8 +- .../page/team/dialog/ManagePermissions.vue | 6 +- .../components/projects/AddDialog.vue | 4 +- .../lib/common/generated/gql/graphql.ts | 117 ++++++++++-------- .../middleware/requireValidModel.ts | 6 +- .../middleware/requireValidProject.ts | 6 +- .../settings/workspaces/[slug]/billing.vue | 4 +- .../assets/core/typedefs/projects.graphql | 10 +- .../modules/core/graph/resolvers/projects.ts | 7 +- .../modules/core/repositories/streams.ts | 3 + .../server/modules/core/services/projects.ts | 5 +- .../core/tests/discoverableStreams.spec.ts | 3 +- .../modules/core/tests/unit/projects.spec.ts | 5 +- 16 files changed, 126 insertions(+), 113 deletions(-) diff --git a/packages/frontend-2/components/project/VisibilitySelect.vue b/packages/frontend-2/components/project/VisibilitySelect.vue index c5c7b85df..42d7a3c4e 100644 --- a/packages/frontend-2/components/project/VisibilitySelect.vue +++ b/packages/frontend-2/components/project/VisibilitySelect.vue @@ -37,15 +37,15 @@ diff --git a/packages/frontend-2/components/project/page/settings/general/block/Discussions.vue b/packages/frontend-2/components/project/page/settings/general/block/Discussions.vue index f800d95af..05f8ebb39 100644 --- a/packages/frontend-2/components/project/page/settings/general/block/Discussions.vue +++ b/packages/frontend-2/components/project/page/settings/general/block/Discussions.vue @@ -21,7 +21,7 @@ diff --git a/packages/server/assets/core/typedefs/projects.graphql b/packages/server/assets/core/typedefs/projects.graphql index aeecf2bb5..dd009641c 100644 --- a/packages/server/assets/core/typedefs/projects.graphql +++ b/packages/server/assets/core/typedefs/projects.graphql @@ -12,6 +12,14 @@ enum ProjectVisibility { PUBLIC } +""" +Visbility without the "discoverable" option +""" +enum SimpleProjectVisibility { + PRIVATE + UNLISTED +} + """ Any values left null will be ignored, so only set the properties that you want updated """ @@ -170,7 +178,7 @@ type Project { id: ID! name: String! description: String - visibility: ProjectVisibility! + visibility: SimpleProjectVisibility! allowPublicComments: Boolean! """ Active user's role for this project. `null` if request is not authenticated, or the project is not explicitly shared with you. diff --git a/packages/server/modules/core/graph/resolvers/projects.ts b/packages/server/modules/core/graph/resolvers/projects.ts index 0084295f3..33be6040d 100644 --- a/packages/server/modules/core/graph/resolvers/projects.ts +++ b/packages/server/modules/core/graph/resolvers/projects.ts @@ -379,9 +379,10 @@ export = { }, async visibility(parent) { - const { isPublic, isDiscoverable } = parent - if (!isPublic) return ProjectVisibility.Private - return isDiscoverable ? ProjectVisibility.Public : ProjectVisibility.Unlisted + const { isPublic } = parent + + // Ignore discoverability for now + return isPublic ? ProjectVisibility.Unlisted : ProjectVisibility.Private } }, PendingStreamCollaborator: { diff --git a/packages/server/modules/core/repositories/streams.ts b/packages/server/modules/core/repositories/streams.ts index 2e19aaf90..fa85da19f 100644 --- a/packages/server/modules/core/repositories/streams.ts +++ b/packages/server/modules/core/repositories/streams.ts @@ -942,6 +942,9 @@ export const updateStreamFactory = validUpdate.isPublic = true } + // Ignore discoverability for now + delete validUpdate['isDiscoverable'] + if (!Object.keys(validUpdate).length) return null const [updatedStream] = await tables diff --git a/packages/server/modules/core/services/projects.ts b/packages/server/modules/core/services/projects.ts index 21a40c06f..2aafdd008 100644 --- a/packages/server/modules/core/services/projects.ts +++ b/packages/server/modules/core/services/projects.ts @@ -37,7 +37,10 @@ export const createNewProjectFactory = async ({ description, name, regionKey, visibility, workspaceId, ownerId }) => { const publicVisibilities: ProjectVisibility[] = ['PUBLIC', 'UNLISTED'] const isPublic = !visibility || publicVisibilities.includes(visibility) - const isDiscoverable = visibility === 'PUBLIC' + + // const isDiscoverable = visibility === 'PUBLIC' + const isDiscoverable = false // discoverability disabled for now + const project: Project = { id: cryptoRandomString({ length: 10 }), name: name || generateProjectName(), diff --git a/packages/server/modules/core/tests/discoverableStreams.spec.ts b/packages/server/modules/core/tests/discoverableStreams.spec.ts index fb77ace17..8bf44e3d4 100644 --- a/packages/server/modules/core/tests/discoverableStreams.spec.ts +++ b/packages/server/modules/core/tests/discoverableStreams.spec.ts @@ -34,7 +34,8 @@ const cleanup = async () => await truncateTables([Streams.name, Users.name]) const getStream = getStreamFactory({ db }) const setStreamFavorited = setStreamFavoritedFactory({ db }) -describe('Discoverable streams', () => { +// Discoverability currently disabled +describe.skip('Discoverable streams', () => { let apollo: ServerAndContext const me: BasicTestUser = { diff --git a/packages/server/modules/core/tests/unit/projects.spec.ts b/packages/server/modules/core/tests/unit/projects.spec.ts index fbcdacf0c..0a53c6f58 100644 --- a/packages/server/modules/core/tests/unit/projects.spec.ts +++ b/packages/server/modules/core/tests/unit/projects.spec.ts @@ -35,8 +35,9 @@ describe('project services @core', () => { expect(storedProject!.isDiscoverable).to.be.false expect(storedProject!.allowPublicComments).to.be.false }) - // ;(['PUBLIC', 'UNLISTED'] as const).forEach((visibility) => - it(`makes PUBLIC projects public and discoverable`, async () => { + + // Discoverability currently disabled + it.skip(`makes PUBLIC projects public and discoverable`, async () => { const visibility = 'PUBLIC' const ownerId = cryptoRandomString({ length: 10 })