diff --git a/packages/editor/src/ee/types/issue-embed.ts b/packages/editor/src/ee/types/issue-embed.ts index 32213c2fd3..8d8ddb7e7e 100644 --- a/packages/editor/src/ee/types/issue-embed.ts +++ b/packages/editor/src/ee/types/issue-embed.ts @@ -1,3 +1,6 @@ +// types +import { TEmbedItem } from "@/types"; + export type TEmbedConfig = { issue?: TIssueEmbedConfig; }; @@ -18,12 +21,3 @@ export type TIssueEmbedConfig = { workspaceSlug: string | undefined; }) => React.ReactNode; }; - -export type TEmbedItem = { - id: string; - title: string; - subTitle: string; - icon: React.ReactNode; - projectId: string; - workspaceSlug: string; -}; diff --git a/web/ce/hooks/use-issue-embed.tsx b/web/ce/hooks/use-issue-embed.tsx index 5ca4d4b02b..9f085fa41f 100644 --- a/web/ce/hooks/use-issue-embed.tsx +++ b/web/ce/hooks/use-issue-embed.tsx @@ -1,24 +1,2 @@ -// editor -import { TEmbedConfig, TReadOnlyEmbedConfig } from "@plane/editor"; -// types -import { TPageEmbedType } from "@plane/types"; -// plane web components -import { IssueEmbedUpgradeCard } from "@/plane-web/components/pages"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export const useIssueEmbed = (workspaceSlug: string, projectId: string, queryType: TPageEmbedType = "issue") => { - const widgetCallback = () => ; - - const issueEmbedProps: TEmbedConfig["issue"] = { - widgetCallback, - }; - - const issueEmbedReadOnlyProps: TReadOnlyEmbedConfig["issue"] = { - widgetCallback, - }; - - return { - issueEmbedProps, - issueEmbedReadOnlyProps, - }; -}; +// Removed the implementation for the CE hook as it was using an overridden type causing the build to fail. +export * from "ee/hooks/use-issue-embed"; diff --git a/web/core/components/pages/editor/editor-body.tsx b/web/core/components/pages/editor/editor-body.tsx index 08bc1a3268..0a661d0e7f 100644 --- a/web/core/components/pages/editor/editor-body.tsx +++ b/web/core/components/pages/editor/editor-body.tsx @@ -17,7 +17,6 @@ import { PageContentBrowser, PageEditorTitle, PageContentLoader } from "@/compon import { cn } from "@/helpers/common.helper"; // hooks import { useMember, useMention, useUser, useWorkspace } from "@/hooks/store"; -import { useIssueEmbed } from "@/hooks/use-issue-embed"; import { usePageFilters } from "@/hooks/use-page-filters"; // plane web hooks import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed"; @@ -97,13 +96,6 @@ export const PageEditorBody: React.FC = observer((props) => { if (pageId === undefined || pageDescription === undefined || !pageDescriptionYJS || !isDescriptionReady) return ; - const handleIssueSearch = async (searchQuery: string) => { - const response = await fetchIssues(searchQuery); - return response; - }; - - if (pageDescription === undefined) return ; - return (
{ - const fetchIssues = async (searchQuery: string): Promise => { - const response = await pageService.searchEmbed(workspaceSlug, projectId, { - query_type: queryType, - query: searchQuery, - count: 10, - }); - const structuredIssues: TEmbedItem[] = (response ?? []).map((issue) => ({ - id: issue.id, - subTitle: `${issue.project__identifier}-${issue.sequence_id}`, - title: issue.name, - icon: , - projectId: projectId, - workspaceSlug: workspaceSlug, - })); - return structuredIssues; - }; - - return { - fetchIssues, - }; -}; diff --git a/web/ee/components/pages/editor/embed/index.ts b/web/ee/components/pages/editor/embed/index.ts index f30596cb00..63c4292bfe 100644 --- a/web/ee/components/pages/editor/embed/index.ts +++ b/web/ee/components/pages/editor/embed/index.ts @@ -1 +1,2 @@ export * from "./issue-embed"; +export * from "./issue-embed-upgrade-card"; diff --git a/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.ts b/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.ts new file mode 100644 index 0000000000..02bff5a0ab --- /dev/null +++ b/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.ts @@ -0,0 +1 @@ +export * from "ce/components/pages/editor/embed/issue-embed-upgrade-card"; diff --git a/web/ee/hooks/use-bulk-operation-status.ts b/web/ee/hooks/use-bulk-operation-status.ts new file mode 100644 index 0000000000..7b7d57fb18 --- /dev/null +++ b/web/ee/hooks/use-bulk-operation-status.ts @@ -0,0 +1 @@ +export const useBulkOperationStatus = () => true; diff --git a/web/ee/hooks/use-issue-embed.tsx b/web/ee/hooks/use-issue-embed.tsx index 96e436e70d..9e33149d94 100644 --- a/web/ee/hooks/use-issue-embed.tsx +++ b/web/ee/hooks/use-issue-embed.tsx @@ -1 +1,68 @@ -export * from "ce/hooks/use-issue-embed"; +// editor +import { TEmbedConfig, TEmbedItem, TIssueEmbedConfig, TReadOnlyEmbedConfig } from "@plane/editor"; +// types +import { TPageEmbedResponse, TPageEmbedType } from "@plane/types"; +// ui +import { PriorityIcon } from "@plane/ui"; +// plane web components +import { IssueEmbedCard } from "@/plane-web/components/pages"; +// services +import { ProjectPageService } from "@/services/page"; + +const pageService = new ProjectPageService(); + +export const useIssueEmbed = (workspaceSlug: string, projectId: string, queryType: TPageEmbedType = "issue") => { + const fetchIssues = async (searchQuery: string): Promise => { + const response = await pageService.searchEmbed(workspaceSlug, projectId, { + query_type: queryType, + query: searchQuery, + count: 10, + }); + const structuredIssues: TEmbedItem[] = (response ?? []).map((issue) => ({ + id: issue.id, + subTitle: `${issue.project__identifier}-${issue.sequence_id}`, + title: issue.name, + icon: , + projectId: projectId, + workspaceSlug: workspaceSlug, + })); + return structuredIssues; + }; + + const searchCallback: TIssueEmbedConfig["searchCallback"] = async (query: string): Promise => + new Promise((resolve) => { + setTimeout(async () => { + const response = await fetchIssues(query); + const issueItemsWithIdentifiers = response?.map((issue) => ({ + ...issue, + projectId: projectId.toString(), + workspaceSlug: workspaceSlug.toString(), + })); + resolve(issueItemsWithIdentifiers); + }, 300); + }); + + const widgetCallback: TIssueEmbedConfig["widgetCallback"] = ({ + issueId, + projectId: projectIdFromEmbed, + workspaceSlug: workspaceSlugFromEmbed, + }) => { + const resolvedProjectId = projectIdFromEmbed ?? projectId?.toString() ?? ""; + const resolvedWorkspaceSlug = workspaceSlugFromEmbed ?? workspaceSlug?.toString() ?? ""; + return ; + }; + + const issueEmbedProps: TEmbedConfig["issue"] = { + searchCallback, + widgetCallback, + }; + + const issueEmbedReadOnlyProps: TReadOnlyEmbedConfig["issue"] = { + widgetCallback, + }; + + return { + issueEmbedProps, + issueEmbedReadOnlyProps, + }; +};