From c9cf7cc631ff1c01fe6185c61bfaa6e2705c9e54 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Mon, 17 Jun 2024 20:09:15 +0530 Subject: [PATCH] [WEB-1397] refactor: edition specific migration (#4847) * refactor: edition specific migration * revert: pagination from space endpoints * fix: project publish --------- Co-authored-by: pablohashescobar --- apiserver/plane/space/views/issue.py | 265 +++++++++--------- apiserver/plane/space/views/project.py | 4 +- apiserver/plane/utils/exception_logger.py | 2 +- space/app/issues/[anchor]/layout.tsx | 21 +- space/ce/store/root.store.ts | 8 + .../account/auth-forms/auth-banner.tsx | 0 .../account/auth-forms/auth-header.tsx | 0 .../account/auth-forms/auth-root.tsx | 0 .../components/account/auth-forms/email.tsx | 0 .../components/account/auth-forms/index.ts | 0 .../account/auth-forms/password.tsx | 0 .../account/auth-forms/unique-code.tsx | 0 .../components/account/helpers/index.ts | 0 .../helpers/password-strength-meter.tsx | 0 space/{ => core}/components/account/index.ts | 0 .../account/oauth/github-button.tsx | 0 .../account/oauth/gitlab-button.tsx | 0 .../account/oauth/google-button.tsx | 0 .../components/account/oauth/index.ts | 0 .../account/oauth/oauth-options.tsx | 0 .../account/terms-and-conditions.tsx | 0 .../components/account/user-logged-in.tsx | 0 space/{ => core}/components/common/index.ts | 0 .../components/common/logo-spinner.tsx | 0 .../components/common/project-logo.tsx | 0 space/{ => core}/components/editor/index.ts | 0 .../components/editor/lite-text-editor.tsx | 0 .../editor/lite-text-read-only-editor.tsx | 0 .../editor/rich-text-read-only-editor.tsx | 0 .../{ => core}/components/editor/toolbar.tsx | 0 space/{ => core}/components/instance/index.ts | 0 .../instance/instance-failure-view.tsx | 0 .../filters/applied-filters/filters-list.tsx | 0 .../issues/filters/applied-filters/label.tsx | 0 .../filters/applied-filters/priority.tsx | 0 .../issues/filters/applied-filters/root.tsx | 0 .../issues/filters/applied-filters/state.tsx | 0 .../issues/filters/helpers/dropdown.tsx | 0 .../issues/filters/helpers/filter-header.tsx | 0 .../issues/filters/helpers/filter-option.tsx | 0 .../issues/filters/helpers/index.ts | 0 .../components/issues/filters/index.ts | 0 .../components/issues/filters/labels.tsx | 0 .../components/issues/filters/priority.tsx | 0 .../components/issues/filters/root.tsx | 0 .../components/issues/filters/selection.tsx | 2 +- .../components/issues/filters/state.tsx | 0 space/{ => core}/components/issues/index.ts | 0 .../components/issues/issue-layouts/index.ts | 0 .../issues/issue-layouts/kanban/block.tsx | 0 .../issues/issue-layouts/kanban/header.tsx | 0 .../issues/issue-layouts/kanban/index.ts | 0 .../issues/issue-layouts/kanban/root.tsx | 0 .../issues/issue-layouts/list/block.tsx | 0 .../issues/issue-layouts/list/header.tsx | 0 .../issues/issue-layouts/list/index.ts | 0 .../issues/issue-layouts/list/root.tsx | 0 .../issue-layouts/properties/due-date.tsx | 0 .../issues/issue-layouts/properties/index.ts | 0 .../issue-layouts/properties/labels.tsx | 0 .../issue-layouts/properties/priority.tsx | 0 .../issues/issue-layouts/properties/state.tsx | 0 .../components/issues/issue-layouts/root.tsx | 0 .../components/issues/navbar/controls.tsx | 0 .../components/issues/navbar/index.ts | 0 .../issues/navbar/layout-selection.tsx | 0 .../components/issues/navbar/root.tsx | 0 .../components/issues/navbar/theme.tsx | 0 .../components/issues/navbar/user-avatar.tsx | 0 .../peek-overview/comment/add-comment.tsx | 0 .../comment/comment-detail-card.tsx | 0 .../comment/comment-reactions.tsx | 0 .../issues/peek-overview/comment/index.ts | 0 .../peek-overview/full-screen-peek-view.tsx | 0 .../issues/peek-overview/header.tsx | 0 .../components/issues/peek-overview/index.ts | 0 .../issues/peek-overview/issue-activity.tsx | 0 .../issues/peek-overview/issue-details.tsx | 0 .../peek-overview/issue-emoji-reactions.tsx | 0 .../issues/peek-overview/issue-properties.tsx | 0 .../issues/peek-overview/issue-reaction.tsx | 0 .../peek-overview/issue-vote-reactions.tsx | 0 .../issues/peek-overview/layout.tsx | 0 .../issues/peek-overview/side-peek-view.tsx | 0 space/{ => core}/components/ui/icon.tsx | 0 space/{ => core}/components/ui/index.ts | 0 .../components/ui/reaction-selector.tsx | 0 space/{ => core}/components/views/auth.tsx | 0 space/{ => core}/components/views/index.ts | 0 space/{ => core}/constants/editor.ts | 0 space/{ => core}/constants/issue.ts | 8 +- space/{ => core}/constants/seo.ts | 0 space/{ => core}/constants/state.ts | 0 space/{ => core}/hooks/store/index.ts | 0 space/{ => core}/hooks/store/publish/index.ts | 0 .../hooks/store/publish/use-publish-list.ts | 0 .../hooks/store/publish/use-publish.ts | 0 space/{ => core}/hooks/store/use-instance.ts | 0 .../hooks/store/use-issue-details.tsx | 0 .../hooks/store/use-issue-filter.ts | 0 space/{ => core}/hooks/store/use-issue.ts | 0 .../hooks/store/use-user-profile.ts | 0 space/{ => core}/hooks/store/use-user.ts | 0 .../hooks/use-clipboard-write-permission.tsx | 0 space/{ => core}/hooks/use-is-in-iframe.tsx | 0 space/{ => core}/hooks/use-mention.tsx | 0 space/{ => core}/hooks/use-outside-click.tsx | 0 space/{ => core}/hooks/use-timer.tsx | 0 space/{ => core}/lib/instance-provider.tsx | 0 space/{ => core}/lib/store-provider.tsx | 4 +- space/{ => core}/lib/toast-provider.tsx | 0 space/{ => core}/services/api.service.ts | 0 space/{ => core}/services/auth.service.ts | 0 space/{ => core}/services/file.service.ts | 0 space/{ => core}/services/instance.service.ts | 0 space/{ => core}/services/issue.service.ts | 0 .../services/project-member.service.ts | 0 space/{ => core}/services/publish.service.ts | 0 space/{ => core}/services/user.service.ts | 0 space/{ => core}/store/instance.store.ts | 4 +- space/{ => core}/store/issue-detail.store.ts | 4 +- space/{ => core}/store/issue-filters.store.ts | 36 +-- space/{ => core}/store/issue.store.ts | 5 +- space/{ => core}/store/mentions.store.ts | 4 +- space/{ => core}/store/profile.store.ts | 5 +- .../{ => core}/store/publish/publish.store.ts | 4 +- .../store/publish/publish_list.store.ts | 32 +-- space/{ => core}/store/root.store.ts | 2 +- space/{ => core}/store/user.store.ts | 3 +- space/{ => core}/types/auth.ts | 0 space/{ => core}/types/issue.d.ts | 0 space/{ => core}/types/project.d.ts | 0 space/ee/store/root.store.ts | 1 + space/tsconfig.json | 6 +- .../project/publish-project/modal.tsx | 4 +- 135 files changed, 221 insertions(+), 203 deletions(-) create mode 100644 space/ce/store/root.store.ts rename space/{ => core}/components/account/auth-forms/auth-banner.tsx (100%) rename space/{ => core}/components/account/auth-forms/auth-header.tsx (100%) rename space/{ => core}/components/account/auth-forms/auth-root.tsx (100%) rename space/{ => core}/components/account/auth-forms/email.tsx (100%) rename space/{ => core}/components/account/auth-forms/index.ts (100%) rename space/{ => core}/components/account/auth-forms/password.tsx (100%) rename space/{ => core}/components/account/auth-forms/unique-code.tsx (100%) rename space/{ => core}/components/account/helpers/index.ts (100%) rename space/{ => core}/components/account/helpers/password-strength-meter.tsx (100%) rename space/{ => core}/components/account/index.ts (100%) rename space/{ => core}/components/account/oauth/github-button.tsx (100%) rename space/{ => core}/components/account/oauth/gitlab-button.tsx (100%) rename space/{ => core}/components/account/oauth/google-button.tsx (100%) rename space/{ => core}/components/account/oauth/index.ts (100%) rename space/{ => core}/components/account/oauth/oauth-options.tsx (100%) rename space/{ => core}/components/account/terms-and-conditions.tsx (100%) rename space/{ => core}/components/account/user-logged-in.tsx (100%) rename space/{ => core}/components/common/index.ts (100%) rename space/{ => core}/components/common/logo-spinner.tsx (100%) rename space/{ => core}/components/common/project-logo.tsx (100%) rename space/{ => core}/components/editor/index.ts (100%) rename space/{ => core}/components/editor/lite-text-editor.tsx (100%) rename space/{ => core}/components/editor/lite-text-read-only-editor.tsx (100%) rename space/{ => core}/components/editor/rich-text-read-only-editor.tsx (100%) rename space/{ => core}/components/editor/toolbar.tsx (100%) rename space/{ => core}/components/instance/index.ts (100%) rename space/{ => core}/components/instance/instance-failure-view.tsx (100%) rename space/{ => core}/components/issues/filters/applied-filters/filters-list.tsx (100%) rename space/{ => core}/components/issues/filters/applied-filters/label.tsx (100%) rename space/{ => core}/components/issues/filters/applied-filters/priority.tsx (100%) rename space/{ => core}/components/issues/filters/applied-filters/root.tsx (100%) rename space/{ => core}/components/issues/filters/applied-filters/state.tsx (100%) rename space/{ => core}/components/issues/filters/helpers/dropdown.tsx (100%) rename space/{ => core}/components/issues/filters/helpers/filter-header.tsx (100%) rename space/{ => core}/components/issues/filters/helpers/filter-option.tsx (100%) rename space/{ => core}/components/issues/filters/helpers/index.ts (100%) rename space/{ => core}/components/issues/filters/index.ts (100%) rename space/{ => core}/components/issues/filters/labels.tsx (100%) rename space/{ => core}/components/issues/filters/priority.tsx (100%) rename space/{ => core}/components/issues/filters/root.tsx (100%) rename space/{ => core}/components/issues/filters/selection.tsx (98%) rename space/{ => core}/components/issues/filters/state.tsx (100%) rename space/{ => core}/components/issues/index.ts (100%) rename space/{ => core}/components/issues/issue-layouts/index.ts (100%) rename space/{ => core}/components/issues/issue-layouts/kanban/block.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/kanban/header.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/kanban/index.ts (100%) rename space/{ => core}/components/issues/issue-layouts/kanban/root.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/list/block.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/list/header.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/list/index.ts (100%) rename space/{ => core}/components/issues/issue-layouts/list/root.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/properties/due-date.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/properties/index.ts (100%) rename space/{ => core}/components/issues/issue-layouts/properties/labels.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/properties/priority.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/properties/state.tsx (100%) rename space/{ => core}/components/issues/issue-layouts/root.tsx (100%) rename space/{ => core}/components/issues/navbar/controls.tsx (100%) rename space/{ => core}/components/issues/navbar/index.ts (100%) rename space/{ => core}/components/issues/navbar/layout-selection.tsx (100%) rename space/{ => core}/components/issues/navbar/root.tsx (100%) rename space/{ => core}/components/issues/navbar/theme.tsx (100%) rename space/{ => core}/components/issues/navbar/user-avatar.tsx (100%) rename space/{ => core}/components/issues/peek-overview/comment/add-comment.tsx (100%) rename space/{ => core}/components/issues/peek-overview/comment/comment-detail-card.tsx (100%) rename space/{ => core}/components/issues/peek-overview/comment/comment-reactions.tsx (100%) rename space/{ => core}/components/issues/peek-overview/comment/index.ts (100%) rename space/{ => core}/components/issues/peek-overview/full-screen-peek-view.tsx (100%) rename space/{ => core}/components/issues/peek-overview/header.tsx (100%) rename space/{ => core}/components/issues/peek-overview/index.ts (100%) rename space/{ => core}/components/issues/peek-overview/issue-activity.tsx (100%) rename space/{ => core}/components/issues/peek-overview/issue-details.tsx (100%) rename space/{ => core}/components/issues/peek-overview/issue-emoji-reactions.tsx (100%) rename space/{ => core}/components/issues/peek-overview/issue-properties.tsx (100%) rename space/{ => core}/components/issues/peek-overview/issue-reaction.tsx (100%) rename space/{ => core}/components/issues/peek-overview/issue-vote-reactions.tsx (100%) rename space/{ => core}/components/issues/peek-overview/layout.tsx (100%) rename space/{ => core}/components/issues/peek-overview/side-peek-view.tsx (100%) rename space/{ => core}/components/ui/icon.tsx (100%) rename space/{ => core}/components/ui/index.ts (100%) rename space/{ => core}/components/ui/reaction-selector.tsx (100%) rename space/{ => core}/components/views/auth.tsx (100%) rename space/{ => core}/components/views/index.ts (100%) rename space/{ => core}/constants/editor.ts (100%) rename space/{ => core}/constants/issue.ts (88%) rename space/{ => core}/constants/seo.ts (100%) rename space/{ => core}/constants/state.ts (100%) rename space/{ => core}/hooks/store/index.ts (100%) rename space/{ => core}/hooks/store/publish/index.ts (100%) rename space/{ => core}/hooks/store/publish/use-publish-list.ts (100%) rename space/{ => core}/hooks/store/publish/use-publish.ts (100%) rename space/{ => core}/hooks/store/use-instance.ts (100%) rename space/{ => core}/hooks/store/use-issue-details.tsx (100%) rename space/{ => core}/hooks/store/use-issue-filter.ts (100%) rename space/{ => core}/hooks/store/use-issue.ts (100%) rename space/{ => core}/hooks/store/use-user-profile.ts (100%) rename space/{ => core}/hooks/store/use-user.ts (100%) rename space/{ => core}/hooks/use-clipboard-write-permission.tsx (100%) rename space/{ => core}/hooks/use-is-in-iframe.tsx (100%) rename space/{ => core}/hooks/use-mention.tsx (100%) rename space/{ => core}/hooks/use-outside-click.tsx (100%) rename space/{ => core}/hooks/use-timer.tsx (100%) rename space/{ => core}/lib/instance-provider.tsx (100%) rename space/{ => core}/lib/store-provider.tsx (94%) rename space/{ => core}/lib/toast-provider.tsx (100%) rename space/{ => core}/services/api.service.ts (100%) rename space/{ => core}/services/auth.service.ts (100%) rename space/{ => core}/services/file.service.ts (100%) rename space/{ => core}/services/instance.service.ts (100%) rename space/{ => core}/services/issue.service.ts (100%) rename space/{ => core}/services/project-member.service.ts (100%) rename space/{ => core}/services/publish.service.ts (100%) rename space/{ => core}/services/user.service.ts (100%) rename space/{ => core}/store/instance.store.ts (96%) rename space/{ => core}/store/issue-detail.store.ts (99%) rename space/{ => core}/store/issue-filters.store.ts (83%) rename space/{ => core}/store/issue.store.ts (96%) rename space/{ => core}/store/mentions.store.ts (93%) rename space/{ => core}/store/profile.store.ts (97%) rename space/{ => core}/store/publish/publish.store.ts (97%) rename space/{ => core}/store/publish/publish_list.store.ts (57%) rename space/{ => core}/store/root.store.ts (98%) rename space/{ => core}/store/user.store.ts (98%) rename space/{ => core}/types/auth.ts (100%) rename space/{ => core}/types/issue.d.ts (100%) rename space/{ => core}/types/project.d.ts (100%) create mode 100644 space/ee/store/root.store.ts diff --git a/apiserver/plane/space/views/issue.py b/apiserver/plane/space/views/issue.py index a736ed8ec..6ece02cbb 100644 --- a/apiserver/plane/space/views/issue.py +++ b/apiserver/plane/space/views/issue.py @@ -2,7 +2,20 @@ import json from django.core.serializers.json import DjangoJSONEncoder -from django.db.models import Exists, F, Func, OuterRef, Q, Prefetch +from django.db.models import ( + Exists, + F, + Func, + OuterRef, + Q, + Prefetch, + Case, + When, + CharField, + IntegerField, + Value, + Max, +) # Django imports from django.utils import timezone @@ -30,19 +43,11 @@ from plane.db.models import ( DeployBoard, IssueVote, ProjectPublicMember, + State, + Label, ) from plane.bgtasks.issue_activites_task import issue_activity -from plane.utils.grouper import ( - issue_group_values, - issue_on_results, - issue_queryset_grouper, -) from plane.utils.issue_filters import issue_filters -from plane.utils.order_queryset import order_issue_queryset -from plane.utils.paginator import ( - GroupedOffsetPaginator, - SubGroupedOffsetPaginator, -) # Module imports from .base import BaseAPIView, BaseViewSet @@ -516,24 +521,32 @@ class ProjectIssuesPublicEndpoint(BaseAPIView): ] def get(self, request, anchor): - if not DeployBoard.objects.filter( + deploy_board = DeployBoard.objects.filter( anchor=anchor, entity_name="project" - ).exists(): + ).first() + if not deploy_board: return Response( {"error": "Project is not published"}, status=status.HTTP_404_NOT_FOUND, ) - project_deploy_board = DeployBoard.objects.get( - anchor=anchor, entity_name="project" - ) - - project_id = project_deploy_board.entity_identifier - slug = project_deploy_board.workspace.slug filters = issue_filters(request.query_params, "GET") + # Custom ordering for priority and state + priority_order = ["urgent", "high", "medium", "low", "none"] + state_order = [ + "backlog", + "unstarted", + "started", + "completed", + "cancelled", + ] + order_by_param = request.GET.get("order_by", "-created_at") + project_id = deploy_board.entity_identifier + slug = deploy_board.workspace.slug + issue_queryset = ( Issue.issue_objects.annotate( sub_issues_count=Issue.issue_objects.filter( @@ -543,8 +556,8 @@ class ProjectIssuesPublicEndpoint(BaseAPIView): .annotate(count=Func(F("id"), function="Count")) .values("count") ) - .filter(project_id=project_deploy_board.project_id) - .filter(workspace_id=project_deploy_board.workspace_id) + .filter(project_id=project_id) + .filter(workspace__slug=slug) .select_related("project", "workspace", "state", "parent") .prefetch_related("assignees", "labels") .prefetch_related( @@ -561,6 +574,7 @@ class ProjectIssuesPublicEndpoint(BaseAPIView): ) .filter(**filters) .annotate(cycle_id=F("issue_cycle__cycle_id")) + .annotate(module_id=F("issue_module__module_id")) .annotate( link_count=IssueLink.objects.filter(issue=OuterRef("id")) .order_by() @@ -575,118 +589,107 @@ class ProjectIssuesPublicEndpoint(BaseAPIView): .annotate(count=Func(F("id"), function="Count")) .values("count") ) - .annotate( - sub_issues_count=Issue.issue_objects.filter( - parent=OuterRef("id") - ) - .order_by() - .annotate(count=Func(F("id"), function="Count")) - .values("count") + ) + + # Priority Ordering + if order_by_param == "priority" or order_by_param == "-priority": + priority_order = ( + priority_order + if order_by_param == "priority" + else priority_order[::-1] ) - ).distinct() - - order_by_param = request.GET.get("order_by", "-created_at") - - issue_queryset = self.get_queryset().filter(**filters) - - # Issue queryset - issue_queryset, order_by_param = order_issue_queryset( - issue_queryset=issue_queryset, - order_by_param=order_by_param, - ) - - # Group by - group_by = request.GET.get("group_by", False) - sub_group_by = request.GET.get("sub_group_by", False) - - # issue queryset - issue_queryset = issue_queryset_grouper( - queryset=issue_queryset, - group_by=group_by, - sub_group_by=sub_group_by, - ) - - if group_by: - # Check group and sub group value paginate - if sub_group_by: - if group_by == sub_group_by: - return Response( - { - "error": "Group by and sub group by cannot have same parameters" - }, - status=status.HTTP_400_BAD_REQUEST, - ) - else: - # group and sub group pagination - return self.paginate( - request=request, - order_by=order_by_param, - queryset=issue_queryset, - on_results=lambda issues: issue_on_results( - group_by=group_by, - issues=issues, - sub_group_by=sub_group_by, - ), - paginator_cls=SubGroupedOffsetPaginator, - group_by_fields=issue_group_values( - field=group_by, - slug=slug, - project_id=project_id, - filters=filters, - ), - sub_group_by_fields=issue_group_values( - field=sub_group_by, - slug=slug, - project_id=project_id, - filters=filters, - ), - group_by_field_name=group_by, - sub_group_by_field_name=sub_group_by, - count_filter=Q( - Q(issue_inbox__status=1) - | Q(issue_inbox__status=-1) - | Q(issue_inbox__status=2) - | Q(issue_inbox__isnull=True), - archived_at__isnull=True, - is_draft=False, - ), - ) - # Group Paginate - else: - # Group paginate - return self.paginate( - request=request, - order_by=order_by_param, - queryset=issue_queryset, - on_results=lambda issues: issue_on_results( - group_by=group_by, - issues=issues, - sub_group_by=sub_group_by, - ), - paginator_cls=GroupedOffsetPaginator, - group_by_fields=issue_group_values( - field=group_by, - slug=slug, - project_id=project_id, - filters=filters, - ), - group_by_field_name=group_by, - count_filter=Q( - Q(issue_inbox__status=1) - | Q(issue_inbox__status=-1) - | Q(issue_inbox__status=2) - | Q(issue_inbox__isnull=True), - archived_at__isnull=True, - is_draft=False, - ), + issue_queryset = issue_queryset.annotate( + priority_order=Case( + *[ + When(priority=p, then=Value(i)) + for i, p in enumerate(priority_order) + ], + output_field=CharField(), ) + ).order_by("priority_order") + + # State Ordering + elif order_by_param in [ + "state__name", + "state__group", + "-state__name", + "-state__group", + ]: + state_order = ( + state_order + if order_by_param in ["state__name", "state__group"] + else state_order[::-1] + ) + issue_queryset = issue_queryset.annotate( + state_order=Case( + *[ + When(state__group=state_group, then=Value(i)) + for i, state_group in enumerate(state_order) + ], + default=Value(len(state_order)), + output_field=CharField(), + ) + ).order_by("state_order") + # assignee and label ordering + elif order_by_param in [ + "labels__name", + "-labels__name", + "assignees__first_name", + "-assignees__first_name", + ]: + issue_queryset = issue_queryset.annotate( + max_values=Max( + order_by_param[1::] + if order_by_param.startswith("-") + else order_by_param + ) + ).order_by( + "-max_values" + if order_by_param.startswith("-") + else "max_values" + ) else: - # List Paginate - return self.paginate( - order_by=order_by_param, - request=request, - queryset=issue_queryset, - on_results=lambda issues: issue_on_results( - group_by=group_by, issues=issues, sub_group_by=sub_group_by + issue_queryset = issue_queryset.order_by(order_by_param) + + issues = IssuePublicSerializer(issue_queryset, many=True).data + + state_group_order = [ + "backlog", + "unstarted", + "started", + "completed", + "cancelled", + ] + + states = ( + State.objects.filter( + ~Q(name="Triage"), + workspace__slug=slug, + project_id=project_id, + ) + .annotate( + custom_order=Case( + *[ + When(group=value, then=Value(index)) + for index, value in enumerate(state_group_order) + ], + default=Value(len(state_group_order)), + output_field=IntegerField(), ), ) + .values("name", "group", "color", "id") + .order_by("custom_order", "sequence") + ) + + labels = Label.objects.filter( + workspace__slug=slug, project_id=project_id + ).values("id", "name", "color", "parent") + + return Response( + { + "issues": issues, + "states": states, + "labels": labels, + }, + status=status.HTTP_200_OK, + ) diff --git a/apiserver/plane/space/views/project.py b/apiserver/plane/space/views/project.py index 76f1600ee..6f8977e03 100644 --- a/apiserver/plane/space/views/project.py +++ b/apiserver/plane/space/views/project.py @@ -37,7 +37,9 @@ class WorkspaceProjectDeployBoardEndpoint(BaseAPIView): ] def get(self, request, anchor): - deploy_board = DeployBoard.objects.filter(anchor=anchor, entity_name="project").values_list + deploy_board = DeployBoard.objects.filter( + anchor=anchor, entity_name="project" + ).values_list projects = ( Project.objects.filter(workspace=deploy_board.workspace) .annotate( diff --git a/apiserver/plane/utils/exception_logger.py b/apiserver/plane/utils/exception_logger.py index e1d4ea26f..f802f286b 100644 --- a/apiserver/plane/utils/exception_logger.py +++ b/apiserver/plane/utils/exception_logger.py @@ -16,7 +16,7 @@ def log_exception(e): if settings.DEBUG: # Print the traceback if in debug mode - traceback.print_exc(e) + print(traceback.format_exc()) # Capture in sentry if configured capture_exception(e) diff --git a/space/app/issues/[anchor]/layout.tsx b/space/app/issues/[anchor]/layout.tsx index 91291e481..2b2c403eb 100644 --- a/space/app/issues/[anchor]/layout.tsx +++ b/space/app/issues/[anchor]/layout.tsx @@ -7,7 +7,7 @@ import useSWR from "swr"; import { LogoSpinner } from "@/components/common"; import { IssuesNavbarRoot } from "@/components/issues"; // hooks -import { usePublish, usePublishList } from "@/hooks/store"; +import { useIssueFilter, usePublish, usePublishList } from "@/hooks/store"; // assets import planeLogo from "@/public/plane-logo.svg"; @@ -25,8 +25,25 @@ const IssuesLayout = observer((props: Props) => { // store hooks const { fetchPublishSettings } = usePublishList(); const publishSettings = usePublish(anchor); + const { updateLayoutOptions } = useIssueFilter(); // fetch publish settings - useSWR(anchor ? `PUBLISH_SETTINGS_${anchor}` : null, anchor ? () => fetchPublishSettings(anchor) : null); + useSWR( + anchor ? `PUBLISH_SETTINGS_${anchor}` : null, + anchor + ? async () => { + const response = await fetchPublishSettings(anchor); + if (response.view_props) { + updateLayoutOptions({ + list: !!response.view_props.list, + kanban: !!response.view_props.kanban, + calendar: !!response.view_props.calendar, + gantt: !!response.view_props.gantt, + spreadsheet: !!response.view_props.spreadsheet, + }); + } + } + : null + ); if (!publishSettings) return ; diff --git a/space/ce/store/root.store.ts b/space/ce/store/root.store.ts new file mode 100644 index 000000000..710462e13 --- /dev/null +++ b/space/ce/store/root.store.ts @@ -0,0 +1,8 @@ +// store +import { CoreRootStore } from "@/store/root.store"; + +export class RootStore extends CoreRootStore { + constructor() { + super(); + } +} diff --git a/space/components/account/auth-forms/auth-banner.tsx b/space/core/components/account/auth-forms/auth-banner.tsx similarity index 100% rename from space/components/account/auth-forms/auth-banner.tsx rename to space/core/components/account/auth-forms/auth-banner.tsx diff --git a/space/components/account/auth-forms/auth-header.tsx b/space/core/components/account/auth-forms/auth-header.tsx similarity index 100% rename from space/components/account/auth-forms/auth-header.tsx rename to space/core/components/account/auth-forms/auth-header.tsx diff --git a/space/components/account/auth-forms/auth-root.tsx b/space/core/components/account/auth-forms/auth-root.tsx similarity index 100% rename from space/components/account/auth-forms/auth-root.tsx rename to space/core/components/account/auth-forms/auth-root.tsx diff --git a/space/components/account/auth-forms/email.tsx b/space/core/components/account/auth-forms/email.tsx similarity index 100% rename from space/components/account/auth-forms/email.tsx rename to space/core/components/account/auth-forms/email.tsx diff --git a/space/components/account/auth-forms/index.ts b/space/core/components/account/auth-forms/index.ts similarity index 100% rename from space/components/account/auth-forms/index.ts rename to space/core/components/account/auth-forms/index.ts diff --git a/space/components/account/auth-forms/password.tsx b/space/core/components/account/auth-forms/password.tsx similarity index 100% rename from space/components/account/auth-forms/password.tsx rename to space/core/components/account/auth-forms/password.tsx diff --git a/space/components/account/auth-forms/unique-code.tsx b/space/core/components/account/auth-forms/unique-code.tsx similarity index 100% rename from space/components/account/auth-forms/unique-code.tsx rename to space/core/components/account/auth-forms/unique-code.tsx diff --git a/space/components/account/helpers/index.ts b/space/core/components/account/helpers/index.ts similarity index 100% rename from space/components/account/helpers/index.ts rename to space/core/components/account/helpers/index.ts diff --git a/space/components/account/helpers/password-strength-meter.tsx b/space/core/components/account/helpers/password-strength-meter.tsx similarity index 100% rename from space/components/account/helpers/password-strength-meter.tsx rename to space/core/components/account/helpers/password-strength-meter.tsx diff --git a/space/components/account/index.ts b/space/core/components/account/index.ts similarity index 100% rename from space/components/account/index.ts rename to space/core/components/account/index.ts diff --git a/space/components/account/oauth/github-button.tsx b/space/core/components/account/oauth/github-button.tsx similarity index 100% rename from space/components/account/oauth/github-button.tsx rename to space/core/components/account/oauth/github-button.tsx diff --git a/space/components/account/oauth/gitlab-button.tsx b/space/core/components/account/oauth/gitlab-button.tsx similarity index 100% rename from space/components/account/oauth/gitlab-button.tsx rename to space/core/components/account/oauth/gitlab-button.tsx diff --git a/space/components/account/oauth/google-button.tsx b/space/core/components/account/oauth/google-button.tsx similarity index 100% rename from space/components/account/oauth/google-button.tsx rename to space/core/components/account/oauth/google-button.tsx diff --git a/space/components/account/oauth/index.ts b/space/core/components/account/oauth/index.ts similarity index 100% rename from space/components/account/oauth/index.ts rename to space/core/components/account/oauth/index.ts diff --git a/space/components/account/oauth/oauth-options.tsx b/space/core/components/account/oauth/oauth-options.tsx similarity index 100% rename from space/components/account/oauth/oauth-options.tsx rename to space/core/components/account/oauth/oauth-options.tsx diff --git a/space/components/account/terms-and-conditions.tsx b/space/core/components/account/terms-and-conditions.tsx similarity index 100% rename from space/components/account/terms-and-conditions.tsx rename to space/core/components/account/terms-and-conditions.tsx diff --git a/space/components/account/user-logged-in.tsx b/space/core/components/account/user-logged-in.tsx similarity index 100% rename from space/components/account/user-logged-in.tsx rename to space/core/components/account/user-logged-in.tsx diff --git a/space/components/common/index.ts b/space/core/components/common/index.ts similarity index 100% rename from space/components/common/index.ts rename to space/core/components/common/index.ts diff --git a/space/components/common/logo-spinner.tsx b/space/core/components/common/logo-spinner.tsx similarity index 100% rename from space/components/common/logo-spinner.tsx rename to space/core/components/common/logo-spinner.tsx diff --git a/space/components/common/project-logo.tsx b/space/core/components/common/project-logo.tsx similarity index 100% rename from space/components/common/project-logo.tsx rename to space/core/components/common/project-logo.tsx diff --git a/space/components/editor/index.ts b/space/core/components/editor/index.ts similarity index 100% rename from space/components/editor/index.ts rename to space/core/components/editor/index.ts diff --git a/space/components/editor/lite-text-editor.tsx b/space/core/components/editor/lite-text-editor.tsx similarity index 100% rename from space/components/editor/lite-text-editor.tsx rename to space/core/components/editor/lite-text-editor.tsx diff --git a/space/components/editor/lite-text-read-only-editor.tsx b/space/core/components/editor/lite-text-read-only-editor.tsx similarity index 100% rename from space/components/editor/lite-text-read-only-editor.tsx rename to space/core/components/editor/lite-text-read-only-editor.tsx diff --git a/space/components/editor/rich-text-read-only-editor.tsx b/space/core/components/editor/rich-text-read-only-editor.tsx similarity index 100% rename from space/components/editor/rich-text-read-only-editor.tsx rename to space/core/components/editor/rich-text-read-only-editor.tsx diff --git a/space/components/editor/toolbar.tsx b/space/core/components/editor/toolbar.tsx similarity index 100% rename from space/components/editor/toolbar.tsx rename to space/core/components/editor/toolbar.tsx diff --git a/space/components/instance/index.ts b/space/core/components/instance/index.ts similarity index 100% rename from space/components/instance/index.ts rename to space/core/components/instance/index.ts diff --git a/space/components/instance/instance-failure-view.tsx b/space/core/components/instance/instance-failure-view.tsx similarity index 100% rename from space/components/instance/instance-failure-view.tsx rename to space/core/components/instance/instance-failure-view.tsx diff --git a/space/components/issues/filters/applied-filters/filters-list.tsx b/space/core/components/issues/filters/applied-filters/filters-list.tsx similarity index 100% rename from space/components/issues/filters/applied-filters/filters-list.tsx rename to space/core/components/issues/filters/applied-filters/filters-list.tsx diff --git a/space/components/issues/filters/applied-filters/label.tsx b/space/core/components/issues/filters/applied-filters/label.tsx similarity index 100% rename from space/components/issues/filters/applied-filters/label.tsx rename to space/core/components/issues/filters/applied-filters/label.tsx diff --git a/space/components/issues/filters/applied-filters/priority.tsx b/space/core/components/issues/filters/applied-filters/priority.tsx similarity index 100% rename from space/components/issues/filters/applied-filters/priority.tsx rename to space/core/components/issues/filters/applied-filters/priority.tsx diff --git a/space/components/issues/filters/applied-filters/root.tsx b/space/core/components/issues/filters/applied-filters/root.tsx similarity index 100% rename from space/components/issues/filters/applied-filters/root.tsx rename to space/core/components/issues/filters/applied-filters/root.tsx diff --git a/space/components/issues/filters/applied-filters/state.tsx b/space/core/components/issues/filters/applied-filters/state.tsx similarity index 100% rename from space/components/issues/filters/applied-filters/state.tsx rename to space/core/components/issues/filters/applied-filters/state.tsx diff --git a/space/components/issues/filters/helpers/dropdown.tsx b/space/core/components/issues/filters/helpers/dropdown.tsx similarity index 100% rename from space/components/issues/filters/helpers/dropdown.tsx rename to space/core/components/issues/filters/helpers/dropdown.tsx diff --git a/space/components/issues/filters/helpers/filter-header.tsx b/space/core/components/issues/filters/helpers/filter-header.tsx similarity index 100% rename from space/components/issues/filters/helpers/filter-header.tsx rename to space/core/components/issues/filters/helpers/filter-header.tsx diff --git a/space/components/issues/filters/helpers/filter-option.tsx b/space/core/components/issues/filters/helpers/filter-option.tsx similarity index 100% rename from space/components/issues/filters/helpers/filter-option.tsx rename to space/core/components/issues/filters/helpers/filter-option.tsx diff --git a/space/components/issues/filters/helpers/index.ts b/space/core/components/issues/filters/helpers/index.ts similarity index 100% rename from space/components/issues/filters/helpers/index.ts rename to space/core/components/issues/filters/helpers/index.ts diff --git a/space/components/issues/filters/index.ts b/space/core/components/issues/filters/index.ts similarity index 100% rename from space/components/issues/filters/index.ts rename to space/core/components/issues/filters/index.ts diff --git a/space/components/issues/filters/labels.tsx b/space/core/components/issues/filters/labels.tsx similarity index 100% rename from space/components/issues/filters/labels.tsx rename to space/core/components/issues/filters/labels.tsx diff --git a/space/components/issues/filters/priority.tsx b/space/core/components/issues/filters/priority.tsx similarity index 100% rename from space/components/issues/filters/priority.tsx rename to space/core/components/issues/filters/priority.tsx diff --git a/space/components/issues/filters/root.tsx b/space/core/components/issues/filters/root.tsx similarity index 100% rename from space/components/issues/filters/root.tsx rename to space/core/components/issues/filters/root.tsx diff --git a/space/components/issues/filters/selection.tsx b/space/core/components/issues/filters/selection.tsx similarity index 98% rename from space/components/issues/filters/selection.tsx rename to space/core/components/issues/filters/selection.tsx index 926fbf5b0..fd59a1704 100644 --- a/space/components/issues/filters/selection.tsx +++ b/space/core/components/issues/filters/selection.tsx @@ -7,7 +7,7 @@ import { Search, X } from "lucide-react"; import { IStateLite } from "@plane/types"; import { IIssueLabel, IIssueFilterOptions, TIssueFilterKeys } from "@/types/issue"; // components -import { FilterPriority, FilterState } from "./"; +import { FilterPriority, FilterState } from "."; type Props = { filters: IIssueFilterOptions; diff --git a/space/components/issues/filters/state.tsx b/space/core/components/issues/filters/state.tsx similarity index 100% rename from space/components/issues/filters/state.tsx rename to space/core/components/issues/filters/state.tsx diff --git a/space/components/issues/index.ts b/space/core/components/issues/index.ts similarity index 100% rename from space/components/issues/index.ts rename to space/core/components/issues/index.ts diff --git a/space/components/issues/issue-layouts/index.ts b/space/core/components/issues/issue-layouts/index.ts similarity index 100% rename from space/components/issues/issue-layouts/index.ts rename to space/core/components/issues/issue-layouts/index.ts diff --git a/space/components/issues/issue-layouts/kanban/block.tsx b/space/core/components/issues/issue-layouts/kanban/block.tsx similarity index 100% rename from space/components/issues/issue-layouts/kanban/block.tsx rename to space/core/components/issues/issue-layouts/kanban/block.tsx diff --git a/space/components/issues/issue-layouts/kanban/header.tsx b/space/core/components/issues/issue-layouts/kanban/header.tsx similarity index 100% rename from space/components/issues/issue-layouts/kanban/header.tsx rename to space/core/components/issues/issue-layouts/kanban/header.tsx diff --git a/space/components/issues/issue-layouts/kanban/index.ts b/space/core/components/issues/issue-layouts/kanban/index.ts similarity index 100% rename from space/components/issues/issue-layouts/kanban/index.ts rename to space/core/components/issues/issue-layouts/kanban/index.ts diff --git a/space/components/issues/issue-layouts/kanban/root.tsx b/space/core/components/issues/issue-layouts/kanban/root.tsx similarity index 100% rename from space/components/issues/issue-layouts/kanban/root.tsx rename to space/core/components/issues/issue-layouts/kanban/root.tsx diff --git a/space/components/issues/issue-layouts/list/block.tsx b/space/core/components/issues/issue-layouts/list/block.tsx similarity index 100% rename from space/components/issues/issue-layouts/list/block.tsx rename to space/core/components/issues/issue-layouts/list/block.tsx diff --git a/space/components/issues/issue-layouts/list/header.tsx b/space/core/components/issues/issue-layouts/list/header.tsx similarity index 100% rename from space/components/issues/issue-layouts/list/header.tsx rename to space/core/components/issues/issue-layouts/list/header.tsx diff --git a/space/components/issues/issue-layouts/list/index.ts b/space/core/components/issues/issue-layouts/list/index.ts similarity index 100% rename from space/components/issues/issue-layouts/list/index.ts rename to space/core/components/issues/issue-layouts/list/index.ts diff --git a/space/components/issues/issue-layouts/list/root.tsx b/space/core/components/issues/issue-layouts/list/root.tsx similarity index 100% rename from space/components/issues/issue-layouts/list/root.tsx rename to space/core/components/issues/issue-layouts/list/root.tsx diff --git a/space/components/issues/issue-layouts/properties/due-date.tsx b/space/core/components/issues/issue-layouts/properties/due-date.tsx similarity index 100% rename from space/components/issues/issue-layouts/properties/due-date.tsx rename to space/core/components/issues/issue-layouts/properties/due-date.tsx diff --git a/space/components/issues/issue-layouts/properties/index.ts b/space/core/components/issues/issue-layouts/properties/index.ts similarity index 100% rename from space/components/issues/issue-layouts/properties/index.ts rename to space/core/components/issues/issue-layouts/properties/index.ts diff --git a/space/components/issues/issue-layouts/properties/labels.tsx b/space/core/components/issues/issue-layouts/properties/labels.tsx similarity index 100% rename from space/components/issues/issue-layouts/properties/labels.tsx rename to space/core/components/issues/issue-layouts/properties/labels.tsx diff --git a/space/components/issues/issue-layouts/properties/priority.tsx b/space/core/components/issues/issue-layouts/properties/priority.tsx similarity index 100% rename from space/components/issues/issue-layouts/properties/priority.tsx rename to space/core/components/issues/issue-layouts/properties/priority.tsx diff --git a/space/components/issues/issue-layouts/properties/state.tsx b/space/core/components/issues/issue-layouts/properties/state.tsx similarity index 100% rename from space/components/issues/issue-layouts/properties/state.tsx rename to space/core/components/issues/issue-layouts/properties/state.tsx diff --git a/space/components/issues/issue-layouts/root.tsx b/space/core/components/issues/issue-layouts/root.tsx similarity index 100% rename from space/components/issues/issue-layouts/root.tsx rename to space/core/components/issues/issue-layouts/root.tsx diff --git a/space/components/issues/navbar/controls.tsx b/space/core/components/issues/navbar/controls.tsx similarity index 100% rename from space/components/issues/navbar/controls.tsx rename to space/core/components/issues/navbar/controls.tsx diff --git a/space/components/issues/navbar/index.ts b/space/core/components/issues/navbar/index.ts similarity index 100% rename from space/components/issues/navbar/index.ts rename to space/core/components/issues/navbar/index.ts diff --git a/space/components/issues/navbar/layout-selection.tsx b/space/core/components/issues/navbar/layout-selection.tsx similarity index 100% rename from space/components/issues/navbar/layout-selection.tsx rename to space/core/components/issues/navbar/layout-selection.tsx diff --git a/space/components/issues/navbar/root.tsx b/space/core/components/issues/navbar/root.tsx similarity index 100% rename from space/components/issues/navbar/root.tsx rename to space/core/components/issues/navbar/root.tsx diff --git a/space/components/issues/navbar/theme.tsx b/space/core/components/issues/navbar/theme.tsx similarity index 100% rename from space/components/issues/navbar/theme.tsx rename to space/core/components/issues/navbar/theme.tsx diff --git a/space/components/issues/navbar/user-avatar.tsx b/space/core/components/issues/navbar/user-avatar.tsx similarity index 100% rename from space/components/issues/navbar/user-avatar.tsx rename to space/core/components/issues/navbar/user-avatar.tsx diff --git a/space/components/issues/peek-overview/comment/add-comment.tsx b/space/core/components/issues/peek-overview/comment/add-comment.tsx similarity index 100% rename from space/components/issues/peek-overview/comment/add-comment.tsx rename to space/core/components/issues/peek-overview/comment/add-comment.tsx diff --git a/space/components/issues/peek-overview/comment/comment-detail-card.tsx b/space/core/components/issues/peek-overview/comment/comment-detail-card.tsx similarity index 100% rename from space/components/issues/peek-overview/comment/comment-detail-card.tsx rename to space/core/components/issues/peek-overview/comment/comment-detail-card.tsx diff --git a/space/components/issues/peek-overview/comment/comment-reactions.tsx b/space/core/components/issues/peek-overview/comment/comment-reactions.tsx similarity index 100% rename from space/components/issues/peek-overview/comment/comment-reactions.tsx rename to space/core/components/issues/peek-overview/comment/comment-reactions.tsx diff --git a/space/components/issues/peek-overview/comment/index.ts b/space/core/components/issues/peek-overview/comment/index.ts similarity index 100% rename from space/components/issues/peek-overview/comment/index.ts rename to space/core/components/issues/peek-overview/comment/index.ts diff --git a/space/components/issues/peek-overview/full-screen-peek-view.tsx b/space/core/components/issues/peek-overview/full-screen-peek-view.tsx similarity index 100% rename from space/components/issues/peek-overview/full-screen-peek-view.tsx rename to space/core/components/issues/peek-overview/full-screen-peek-view.tsx diff --git a/space/components/issues/peek-overview/header.tsx b/space/core/components/issues/peek-overview/header.tsx similarity index 100% rename from space/components/issues/peek-overview/header.tsx rename to space/core/components/issues/peek-overview/header.tsx diff --git a/space/components/issues/peek-overview/index.ts b/space/core/components/issues/peek-overview/index.ts similarity index 100% rename from space/components/issues/peek-overview/index.ts rename to space/core/components/issues/peek-overview/index.ts diff --git a/space/components/issues/peek-overview/issue-activity.tsx b/space/core/components/issues/peek-overview/issue-activity.tsx similarity index 100% rename from space/components/issues/peek-overview/issue-activity.tsx rename to space/core/components/issues/peek-overview/issue-activity.tsx diff --git a/space/components/issues/peek-overview/issue-details.tsx b/space/core/components/issues/peek-overview/issue-details.tsx similarity index 100% rename from space/components/issues/peek-overview/issue-details.tsx rename to space/core/components/issues/peek-overview/issue-details.tsx diff --git a/space/components/issues/peek-overview/issue-emoji-reactions.tsx b/space/core/components/issues/peek-overview/issue-emoji-reactions.tsx similarity index 100% rename from space/components/issues/peek-overview/issue-emoji-reactions.tsx rename to space/core/components/issues/peek-overview/issue-emoji-reactions.tsx diff --git a/space/components/issues/peek-overview/issue-properties.tsx b/space/core/components/issues/peek-overview/issue-properties.tsx similarity index 100% rename from space/components/issues/peek-overview/issue-properties.tsx rename to space/core/components/issues/peek-overview/issue-properties.tsx diff --git a/space/components/issues/peek-overview/issue-reaction.tsx b/space/core/components/issues/peek-overview/issue-reaction.tsx similarity index 100% rename from space/components/issues/peek-overview/issue-reaction.tsx rename to space/core/components/issues/peek-overview/issue-reaction.tsx diff --git a/space/components/issues/peek-overview/issue-vote-reactions.tsx b/space/core/components/issues/peek-overview/issue-vote-reactions.tsx similarity index 100% rename from space/components/issues/peek-overview/issue-vote-reactions.tsx rename to space/core/components/issues/peek-overview/issue-vote-reactions.tsx diff --git a/space/components/issues/peek-overview/layout.tsx b/space/core/components/issues/peek-overview/layout.tsx similarity index 100% rename from space/components/issues/peek-overview/layout.tsx rename to space/core/components/issues/peek-overview/layout.tsx diff --git a/space/components/issues/peek-overview/side-peek-view.tsx b/space/core/components/issues/peek-overview/side-peek-view.tsx similarity index 100% rename from space/components/issues/peek-overview/side-peek-view.tsx rename to space/core/components/issues/peek-overview/side-peek-view.tsx diff --git a/space/components/ui/icon.tsx b/space/core/components/ui/icon.tsx similarity index 100% rename from space/components/ui/icon.tsx rename to space/core/components/ui/icon.tsx diff --git a/space/components/ui/index.ts b/space/core/components/ui/index.ts similarity index 100% rename from space/components/ui/index.ts rename to space/core/components/ui/index.ts diff --git a/space/components/ui/reaction-selector.tsx b/space/core/components/ui/reaction-selector.tsx similarity index 100% rename from space/components/ui/reaction-selector.tsx rename to space/core/components/ui/reaction-selector.tsx diff --git a/space/components/views/auth.tsx b/space/core/components/views/auth.tsx similarity index 100% rename from space/components/views/auth.tsx rename to space/core/components/views/auth.tsx diff --git a/space/components/views/index.ts b/space/core/components/views/index.ts similarity index 100% rename from space/components/views/index.ts rename to space/core/components/views/index.ts diff --git a/space/constants/editor.ts b/space/core/constants/editor.ts similarity index 100% rename from space/constants/editor.ts rename to space/core/constants/editor.ts diff --git a/space/constants/issue.ts b/space/core/constants/issue.ts similarity index 88% rename from space/constants/issue.ts rename to space/core/constants/issue.ts index 77297946f..5d858a70e 100644 --- a/space/constants/issue.ts +++ b/space/core/constants/issue.ts @@ -1,4 +1,4 @@ -import { Calendar, GanttChartSquare, Kanban, List, Sheet } from "lucide-react"; +import { Kanban, List } from "lucide-react"; // types import { TIssuePriorities } from "@plane/types"; import { TIssueLayout, TIssueFilterKeys, TIssueFilterPriorityObject } from "@/types/issue"; @@ -29,9 +29,9 @@ export const ISSUE_LAYOUTS: { }[] = [ { key: "list", title: "List", icon: List }, { key: "kanban", title: "Kanban", icon: Kanban }, - { key: "calendar", title: "Calendar", icon: Calendar }, - { key: "spreadsheet", title: "Spreadsheet", icon: Sheet }, - { key: "gantt", title: "Gantt chart", icon: GanttChartSquare }, + // { key: "calendar", title: "Calendar", icon: Calendar }, + // { key: "spreadsheet", title: "Spreadsheet", icon: Sheet }, + // { key: "gantt", title: "Gantt chart", icon: GanttChartSquare }, ]; export const issuePriorityFilters: TIssueFilterPriorityObject[] = [ diff --git a/space/constants/seo.ts b/space/core/constants/seo.ts similarity index 100% rename from space/constants/seo.ts rename to space/core/constants/seo.ts diff --git a/space/constants/state.ts b/space/core/constants/state.ts similarity index 100% rename from space/constants/state.ts rename to space/core/constants/state.ts diff --git a/space/hooks/store/index.ts b/space/core/hooks/store/index.ts similarity index 100% rename from space/hooks/store/index.ts rename to space/core/hooks/store/index.ts diff --git a/space/hooks/store/publish/index.ts b/space/core/hooks/store/publish/index.ts similarity index 100% rename from space/hooks/store/publish/index.ts rename to space/core/hooks/store/publish/index.ts diff --git a/space/hooks/store/publish/use-publish-list.ts b/space/core/hooks/store/publish/use-publish-list.ts similarity index 100% rename from space/hooks/store/publish/use-publish-list.ts rename to space/core/hooks/store/publish/use-publish-list.ts diff --git a/space/hooks/store/publish/use-publish.ts b/space/core/hooks/store/publish/use-publish.ts similarity index 100% rename from space/hooks/store/publish/use-publish.ts rename to space/core/hooks/store/publish/use-publish.ts diff --git a/space/hooks/store/use-instance.ts b/space/core/hooks/store/use-instance.ts similarity index 100% rename from space/hooks/store/use-instance.ts rename to space/core/hooks/store/use-instance.ts diff --git a/space/hooks/store/use-issue-details.tsx b/space/core/hooks/store/use-issue-details.tsx similarity index 100% rename from space/hooks/store/use-issue-details.tsx rename to space/core/hooks/store/use-issue-details.tsx diff --git a/space/hooks/store/use-issue-filter.ts b/space/core/hooks/store/use-issue-filter.ts similarity index 100% rename from space/hooks/store/use-issue-filter.ts rename to space/core/hooks/store/use-issue-filter.ts diff --git a/space/hooks/store/use-issue.ts b/space/core/hooks/store/use-issue.ts similarity index 100% rename from space/hooks/store/use-issue.ts rename to space/core/hooks/store/use-issue.ts diff --git a/space/hooks/store/use-user-profile.ts b/space/core/hooks/store/use-user-profile.ts similarity index 100% rename from space/hooks/store/use-user-profile.ts rename to space/core/hooks/store/use-user-profile.ts diff --git a/space/hooks/store/use-user.ts b/space/core/hooks/store/use-user.ts similarity index 100% rename from space/hooks/store/use-user.ts rename to space/core/hooks/store/use-user.ts diff --git a/space/hooks/use-clipboard-write-permission.tsx b/space/core/hooks/use-clipboard-write-permission.tsx similarity index 100% rename from space/hooks/use-clipboard-write-permission.tsx rename to space/core/hooks/use-clipboard-write-permission.tsx diff --git a/space/hooks/use-is-in-iframe.tsx b/space/core/hooks/use-is-in-iframe.tsx similarity index 100% rename from space/hooks/use-is-in-iframe.tsx rename to space/core/hooks/use-is-in-iframe.tsx diff --git a/space/hooks/use-mention.tsx b/space/core/hooks/use-mention.tsx similarity index 100% rename from space/hooks/use-mention.tsx rename to space/core/hooks/use-mention.tsx diff --git a/space/hooks/use-outside-click.tsx b/space/core/hooks/use-outside-click.tsx similarity index 100% rename from space/hooks/use-outside-click.tsx rename to space/core/hooks/use-outside-click.tsx diff --git a/space/hooks/use-timer.tsx b/space/core/hooks/use-timer.tsx similarity index 100% rename from space/hooks/use-timer.tsx rename to space/core/hooks/use-timer.tsx diff --git a/space/lib/instance-provider.tsx b/space/core/lib/instance-provider.tsx similarity index 100% rename from space/lib/instance-provider.tsx rename to space/core/lib/instance-provider.tsx diff --git a/space/lib/store-provider.tsx b/space/core/lib/store-provider.tsx similarity index 94% rename from space/lib/store-provider.tsx rename to space/core/lib/store-provider.tsx index b77a981f8..c1256ddc2 100644 --- a/space/lib/store-provider.tsx +++ b/space/core/lib/store-provider.tsx @@ -2,8 +2,8 @@ import { ReactNode, createContext } from "react"; import { ThemeProvider } from "next-themes"; -// store -import { RootStore } from "@/store/root.store"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; let rootStore = new RootStore(); diff --git a/space/lib/toast-provider.tsx b/space/core/lib/toast-provider.tsx similarity index 100% rename from space/lib/toast-provider.tsx rename to space/core/lib/toast-provider.tsx diff --git a/space/services/api.service.ts b/space/core/services/api.service.ts similarity index 100% rename from space/services/api.service.ts rename to space/core/services/api.service.ts diff --git a/space/services/auth.service.ts b/space/core/services/auth.service.ts similarity index 100% rename from space/services/auth.service.ts rename to space/core/services/auth.service.ts diff --git a/space/services/file.service.ts b/space/core/services/file.service.ts similarity index 100% rename from space/services/file.service.ts rename to space/core/services/file.service.ts diff --git a/space/services/instance.service.ts b/space/core/services/instance.service.ts similarity index 100% rename from space/services/instance.service.ts rename to space/core/services/instance.service.ts diff --git a/space/services/issue.service.ts b/space/core/services/issue.service.ts similarity index 100% rename from space/services/issue.service.ts rename to space/core/services/issue.service.ts diff --git a/space/services/project-member.service.ts b/space/core/services/project-member.service.ts similarity index 100% rename from space/services/project-member.service.ts rename to space/core/services/project-member.service.ts diff --git a/space/services/publish.service.ts b/space/core/services/publish.service.ts similarity index 100% rename from space/services/publish.service.ts rename to space/core/services/publish.service.ts diff --git a/space/services/user.service.ts b/space/core/services/user.service.ts similarity index 100% rename from space/services/user.service.ts rename to space/core/services/user.service.ts diff --git a/space/store/instance.store.ts b/space/core/store/instance.store.ts similarity index 96% rename from space/store/instance.store.ts rename to space/core/store/instance.store.ts index d2e6918a3..759ea33dc 100644 --- a/space/store/instance.store.ts +++ b/space/core/store/instance.store.ts @@ -2,10 +2,10 @@ import set from "lodash/set"; import { observable, action, makeObservable, runInAction } from "mobx"; // types import { IInstance, IInstanceConfig } from "@plane/types"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; // services import { InstanceService } from "@/services/instance.service"; -// store types -import { RootStore } from "@/store/root.store"; type TError = { status: string; diff --git a/space/store/issue-detail.store.ts b/space/core/store/issue-detail.store.ts similarity index 99% rename from space/store/issue-detail.store.ts rename to space/core/store/issue-detail.store.ts index 672fe29ad..34d659635 100644 --- a/space/store/issue-detail.store.ts +++ b/space/core/store/issue-detail.store.ts @@ -1,9 +1,9 @@ import { makeObservable, observable, action, runInAction } from "mobx"; import { v4 as uuidv4 } from "uuid"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; // services import IssueService from "@/services/issue.service"; -// store types -import { RootStore } from "@/store/root.store"; // types import { IIssue, IPeekMode, IVote } from "@/types/issue"; diff --git a/space/store/issue-filters.store.ts b/space/core/store/issue-filters.store.ts similarity index 83% rename from space/store/issue-filters.store.ts rename to space/core/store/issue-filters.store.ts index daf797f90..337a806ee 100644 --- a/space/store/issue-filters.store.ts +++ b/space/core/store/issue-filters.store.ts @@ -5,8 +5,8 @@ import { action, makeObservable, observable, runInAction } from "mobx"; import { computedFn } from "mobx-utils"; // constants import { ISSUE_DISPLAY_FILTERS_BY_LAYOUT } from "@/constants/issue"; -// store -import { RootStore } from "@/store/root.store"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; // types import { TIssueLayoutOptions, @@ -115,16 +115,11 @@ export class IssueFilterStore implements IIssueFilterStore { updateLayoutOptions = (options: TIssueLayoutOptions) => set(this, ["layoutOptions"], options); initIssueFilters = async (anchor: string, initFilters: TIssueFilters) => { - try { - if (this.filters === undefined) runInAction(() => (this.filters = {})); - if (this.filters && initFilters) set(this.filters, [anchor], initFilters); + if (this.filters === undefined) runInAction(() => (this.filters = {})); + if (this.filters && initFilters) set(this.filters, [anchor], initFilters); - const appliedFilters = this.getAppliedFilters(anchor); - - await this.store.issue.fetchPublicIssues(anchor, appliedFilters); - } catch (error) { - throw error; - } + const appliedFilters = this.getAppliedFilters(anchor); + await this.store.issue.fetchPublicIssues(anchor, appliedFilters); }; updateIssueFilters = async ( @@ -133,19 +128,14 @@ export class IssueFilterStore implements IIssueFilterStore { filterKey: keyof TIssueFilters[K], filterValue: TIssueFilters[K][typeof filterKey] ) => { - try { - if (!filterKind || !filterKey || !filterValue) return; - if (this.filters === undefined) runInAction(() => (this.filters = {})); + if (!filterKind || !filterKey || !filterValue) return; + if (this.filters === undefined) runInAction(() => (this.filters = {})); - runInAction(() => { - if (this.filters) set(this.filters, [anchor, filterKind, filterKey], filterValue); - }); + runInAction(() => { + if (this.filters) set(this.filters, [anchor, filterKind, filterKey], filterValue); + }); - const appliedFilters = this.getAppliedFilters(anchor); - - await this.store.issue.fetchPublicIssues(anchor, appliedFilters); - } catch (error) { - throw error; - } + const appliedFilters = this.getAppliedFilters(anchor); + await this.store.issue.fetchPublicIssues(anchor, appliedFilters); }; } diff --git a/space/store/issue.store.ts b/space/core/store/issue.store.ts similarity index 96% rename from space/store/issue.store.ts rename to space/core/store/issue.store.ts index 4f2d845b5..e5d7003d9 100644 --- a/space/store/issue.store.ts +++ b/space/core/store/issue.store.ts @@ -2,12 +2,12 @@ import { observable, action, makeObservable, runInAction } from "mobx"; import { computedFn } from "mobx-utils"; // types import { IStateLite } from "@plane/types"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; // services import IssueService from "@/services/issue.service"; // types import { IIssue, IIssueLabel } from "@/types/issue"; -// store -import { RootStore } from "./root.store"; export interface IIssueStore { loader: boolean; @@ -88,6 +88,7 @@ export class IssueStore implements IIssueStore { } catch (error) { this.loader = false; this.error = error; + throw error; } }; diff --git a/space/store/mentions.store.ts b/space/core/store/mentions.store.ts similarity index 93% rename from space/store/mentions.store.ts rename to space/core/store/mentions.store.ts index c8ef48ce5..3970eecde 100644 --- a/space/store/mentions.store.ts +++ b/space/core/store/mentions.store.ts @@ -1,6 +1,8 @@ import { computed, makeObservable } from "mobx"; +// editor import { IMentionHighlight } from "@plane/lite-text-editor"; -import { RootStore } from "./root.store"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; export interface IMentionsStore { // mentionSuggestions: IMentionSuggestion[]; diff --git a/space/store/profile.store.ts b/space/core/store/profile.store.ts similarity index 97% rename from space/store/profile.store.ts rename to space/core/store/profile.store.ts index 9086e84df..d62a8da40 100644 --- a/space/store/profile.store.ts +++ b/space/core/store/profile.store.ts @@ -1,10 +1,11 @@ import set from "lodash/set"; import { action, makeObservable, observable, runInAction } from "mobx"; +// types import { TUserProfile } from "@plane/types"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; // services import { UserService } from "@/services/user.service"; -// store types -import { RootStore } from "@/store/root.store"; type TError = { status: string; diff --git a/space/store/publish/publish.store.ts b/space/core/store/publish/publish.store.ts similarity index 97% rename from space/store/publish/publish.store.ts rename to space/core/store/publish/publish.store.ts index 3f7896d6b..aa2e7e0d9 100644 --- a/space/store/publish/publish.store.ts +++ b/space/core/store/publish/publish.store.ts @@ -7,8 +7,8 @@ import { TProjectPublishSettings, TProjectPublishViewProps, } from "@plane/types"; -// store types -import { RootStore } from "@/store/root.store"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; export interface IPublishStore extends TProjectPublishSettings { // computed diff --git a/space/store/publish/publish_list.store.ts b/space/core/store/publish/publish_list.store.ts similarity index 57% rename from space/store/publish/publish_list.store.ts rename to space/core/store/publish/publish_list.store.ts index ff3fde70f..05f08e47b 100644 --- a/space/store/publish/publish_list.store.ts +++ b/space/core/store/publish/publish_list.store.ts @@ -2,12 +2,12 @@ import set from "lodash/set"; import { makeObservable, observable, runInAction, action } from "mobx"; // types import { TProjectPublishSettings } from "@plane/types"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; // services import PublishService from "@/services/publish.service"; // store import { PublishStore } from "@/store/publish/publish.store"; -// store -import { RootStore } from "../root.store"; export interface IPublishListStore { // observables @@ -22,7 +22,7 @@ export class PublishListStore implements IPublishListStore { // service publishService; - constructor(private store: RootStore) { + constructor(private rootStore: RootStore) { makeObservable(this, { // observables publishMap: observable, @@ -38,24 +38,12 @@ export class PublishListStore implements IPublishListStore { * @param {string} anchor */ fetchPublishSettings = async (anchor: string) => { - try { - const response = await this.publishService.fetchPublishSettings(anchor); - runInAction(() => { - if (response.anchor && response.view_props) { - this.store.issueFilter.updateLayoutOptions({ - list: !!response.view_props.list, - kanban: !!response.view_props.kanban, - calendar: !!response.view_props.calendar, - gantt: !!response.view_props.gantt, - spreadsheet: !!response.view_props.spreadsheet, - }); - set(this.publishMap, [response.anchor], new PublishStore(this.store, response)); - } - }); - - return response; - } catch (error) { - throw error; - } + const response = await this.publishService.fetchPublishSettings(anchor); + runInAction(() => { + if (response.anchor) { + set(this.publishMap, [response.anchor], new PublishStore(this.rootStore, response)); + } + }); + return response; }; } diff --git a/space/store/root.store.ts b/space/core/store/root.store.ts similarity index 98% rename from space/store/root.store.ts rename to space/core/store/root.store.ts index 082220f5d..2405a8e24 100644 --- a/space/store/root.store.ts +++ b/space/core/store/root.store.ts @@ -10,7 +10,7 @@ import { IPublishListStore, PublishListStore } from "./publish/publish_list.stor enableStaticRendering(typeof window === "undefined"); -export class RootStore { +export class CoreRootStore { instance: IInstanceStore; user: IUserStore; issue: IIssueStore; diff --git a/space/store/user.store.ts b/space/core/store/user.store.ts similarity index 98% rename from space/store/user.store.ts rename to space/core/store/user.store.ts index 52cf3ca66..70d84ef40 100644 --- a/space/store/user.store.ts +++ b/space/core/store/user.store.ts @@ -2,12 +2,13 @@ import set from "lodash/set"; import { action, computed, makeObservable, observable, runInAction } from "mobx"; // types import { IUser } from "@plane/types"; +// plane web store +import { RootStore } from "@/plane-web/store/root.store"; // services import { AuthService } from "@/services/auth.service"; import { UserService } from "@/services/user.service"; // store types import { ProfileStore, IProfileStore } from "@/store/profile.store"; -import { RootStore } from "@/store/root.store"; // types import { ActorDetail } from "@/types/issue"; diff --git a/space/types/auth.ts b/space/core/types/auth.ts similarity index 100% rename from space/types/auth.ts rename to space/core/types/auth.ts diff --git a/space/types/issue.d.ts b/space/core/types/issue.d.ts similarity index 100% rename from space/types/issue.d.ts rename to space/core/types/issue.d.ts diff --git a/space/types/project.d.ts b/space/core/types/project.d.ts similarity index 100% rename from space/types/project.d.ts rename to space/core/types/project.d.ts diff --git a/space/ee/store/root.store.ts b/space/ee/store/root.store.ts new file mode 100644 index 000000000..c514c4c25 --- /dev/null +++ b/space/ee/store/root.store.ts @@ -0,0 +1 @@ +export * from "ce/store/root.store"; diff --git a/space/tsconfig.json b/space/tsconfig.json index 1305e698f..849d224ef 100644 --- a/space/tsconfig.json +++ b/space/tsconfig.json @@ -11,7 +11,11 @@ "baseUrl": ".", "jsx": "preserve", "paths": { - "@/*": ["*"] + "@/*": ["core/*"], + "@/helpers/*": ["helpers/*"], + "@/public/*": ["public/*"], + "@/styles/*": ["styles/*"], + "@/plane-web/*": ["ce/*"] }, "plugins": [ { diff --git a/web/core/components/project/publish-project/modal.tsx b/web/core/components/project/publish-project/modal.tsx index 8bac8a12d..97385c0c6 100644 --- a/web/core/components/project/publish-project/modal.tsx +++ b/web/core/components/project/publish-project/modal.tsx @@ -156,7 +156,7 @@ export const PublishProjectModal: React.FC = observer((props) => { }); }, [projectPublishSettings, reset]); - const publishLink = `${SPACE_BASE_URL}/${projectPublishSettings?.anchor}`; + const publishLink = `${SPACE_BASE_URL}/issues/${projectPublishSettings?.anchor}`; const handleCopyLink = () => copyTextToClipboard(publishLink).then(() => @@ -171,7 +171,7 @@ export const PublishProjectModal: React.FC = observer((props) => {
-
Publish page
+
Publish project
{project.anchor && (