From 06c42d56693418f40c81e78524dd1970f0a59c3f Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Wed, 8 May 2024 19:51:44 +0530 Subject: [PATCH] refactor: reomve unnecessary constants and helpers --- web/constants/fetch-keys.ts | 141 +------------------------- web/helpers/array.helper.ts | 39 ------- web/helpers/calendar.helper.ts | 43 +------- web/helpers/common.helper.ts | 19 ---- web/helpers/dashboard.helper.ts | 4 +- web/helpers/event-tracker.helper.ts | 11 -- web/helpers/generate-random-string.ts | 11 -- web/helpers/issue.helper.ts | 83 +-------------- web/helpers/state.helper.ts | 3 +- web/helpers/string.helper.ts | 47 --------- 10 files changed, 12 insertions(+), 389 deletions(-) delete mode 100644 web/helpers/event-tracker.helper.ts delete mode 100644 web/helpers/generate-random-string.ts diff --git a/web/constants/fetch-keys.ts b/web/constants/fetch-keys.ts index d5112a851..eb95d9f9a 100644 --- a/web/constants/fetch-keys.ts +++ b/web/constants/fetch-keys.ts @@ -1,5 +1,7 @@ -import { objToQueryParams } from "@/helpers/string.helper"; +// types import { IAnalyticsParams, IJiraMetadata, INotificationParams } from "@plane/types"; +// helpers +import { objToQueryParams } from "@/helpers/string.helper"; const paramsToKey = (params: any) => { const { @@ -48,32 +50,6 @@ const paramsToKey = (params: any) => { return `${layoutKey}_${projectKey}_${stateGroupKey}_${stateKey}_${priorityKey}_${assigneesKey}_${mentionsKey}_${createdByKey}_${type}_${groupBy}_${orderBy}_${labelsKey}_${startDateKey}_${targetDateKey}_${sub_issue}_${subscriberKey}`; }; -const myIssuesParamsToKey = (params: any) => { - const { assignees, created_by, labels, priority, state_group, subscriber, start_date, target_date } = params; - - let assigneesKey = assignees ? assignees.split(",") : []; - let createdByKey = created_by ? created_by.split(",") : []; - let stateGroupKey = state_group ? state_group.split(",") : []; - let subscriberKey = subscriber ? subscriber.split(",") : []; - let priorityKey = priority ? priority.split(",") : []; - let labelsKey = labels ? labels.split(",") : []; - const startDateKey = start_date ?? ""; - const targetDateKey = target_date ?? ""; - const type = params?.type ? params.type.toUpperCase() : "NULL"; - const groupBy = params?.group_by ? params.group_by.toUpperCase() : "NULL"; - const orderBy = params?.order_by ? params.order_by.toUpperCase() : "NULL"; - - // sorting each keys in ascending order - assigneesKey = assigneesKey.sort().join("_"); - createdByKey = createdByKey.sort().join("_"); - stateGroupKey = stateGroupKey.sort().join("_"); - subscriberKey = subscriberKey.sort().join("_"); - priorityKey = priorityKey.sort().join("_"); - labelsKey = labelsKey.sort().join("_"); - - return `${assigneesKey}_${createdByKey}_${stateGroupKey}_${subscriberKey}_${priorityKey}_${type}_${groupBy}_${orderBy}_${labelsKey}_${startDateKey}_${targetDateKey}`; -}; - export const CURRENT_USER = "CURRENT_USER"; export const USER_WORKSPACE_INVITATIONS = "USER_WORKSPACE_INVITATIONS"; export const USER_WORKSPACES = "USER_WORKSPACES"; @@ -81,72 +57,19 @@ export const USER_WORKSPACES = "USER_WORKSPACES"; export const WORKSPACE_DETAILS = (workspaceSlug: string) => `WORKSPACE_DETAILS_${workspaceSlug.toUpperCase()}`; export const WORKSPACE_MEMBERS = (workspaceSlug: string) => `WORKSPACE_MEMBERS_${workspaceSlug.toUpperCase()}`; -export const WORKSPACE_MEMBERS_ME = (workspaceSlug: string) => `WORKSPACE_MEMBERS_ME${workspaceSlug.toUpperCase()}`; export const WORKSPACE_INVITATIONS = (workspaceSlug: string) => `WORKSPACE_INVITATIONS_${workspaceSlug.toString()}`; export const WORKSPACE_INVITATION = (invitationId: string) => `WORKSPACE_INVITATION_${invitationId}`; -export const LAST_ACTIVE_WORKSPACE_AND_PROJECTS = "LAST_ACTIVE_WORKSPACE_AND_PROJECTS"; -export const PROJECTS_LIST = ( - workspaceSlug: string, - params: { - is_favorite: "all" | boolean; - } -) => { - if (!params) return `PROJECTS_LIST_${workspaceSlug.toUpperCase()}`; - - return `PROJECTS_LIST_${workspaceSlug.toUpperCase()}_${params.is_favorite.toString().toUpperCase()}`; -}; export const PROJECT_DETAILS = (projectId: string) => `PROJECT_DETAILS_${projectId.toUpperCase()}`; export const PROJECT_MEMBERS = (projectId: string) => `PROJECT_MEMBERS_${projectId.toUpperCase()}`; -export const PROJECT_INVITATIONS = (projectId: string) => `PROJECT_INVITATIONS_${projectId.toString()}`; export const PROJECT_ISSUES_LIST = (workspaceSlug: string, projectId: string) => `PROJECT_ISSUES_LIST_${workspaceSlug.toUpperCase()}_${projectId.toUpperCase()}`; -export const PROJECT_ISSUES_LIST_WITH_PARAMS = (projectId: string, params?: any) => { - if (!params) return `PROJECT_ISSUES_LIST_WITH_PARAMS_${projectId.toUpperCase()}`; - const paramsKey = paramsToKey(params); - - return `PROJECT_ISSUES_LIST_WITH_PARAMS_${projectId.toUpperCase()}_${paramsKey}`; -}; -export const PROJECT_ARCHIVED_ISSUES_LIST_WITH_PARAMS = (projectId: string, params?: any) => { - if (!params) return `PROJECT_ARCHIVED_ISSUES_LIST_WITH_PARAMS_${projectId.toUpperCase()}`; - - const paramsKey = paramsToKey(params); - - return `PROJECT_ARCHIVED_ISSUES_LIST_WITH_PARAMS_${projectId.toUpperCase()}_${paramsKey}`; -}; - -export const PROJECT_DRAFT_ISSUES_LIST_WITH_PARAMS = (projectId: string, params?: any) => { - if (!params) return `PROJECT_DRAFT_ISSUES_LIST_WITH_PARAMS${projectId.toUpperCase()}`; - - const paramsKey = paramsToKey(params); - - return `PROJECT_DRAFT_ISSUES_LIST_WITH_PARAMS${projectId.toUpperCase()}_${paramsKey}`; -}; - -export const GLOBAL_VIEWS_LIST = (workspaceSlug: string) => `GLOBAL_VIEWS_LIST_${workspaceSlug.toUpperCase()}`; -export const GLOBAL_VIEW_DETAILS = (globalViewId: string) => `GLOBAL_VIEW_DETAILS_${globalViewId.toUpperCase()}`; -export const GLOBAL_VIEW_ISSUES = (globalViewId: string) => `GLOBAL_VIEW_ISSUES_${globalViewId.toUpperCase()}`; - -export const PROJECT_ISSUES_DETAILS = (issueId: string) => `PROJECT_ISSUES_DETAILS_${issueId.toUpperCase()}`; -export const PROJECT_ISSUES_PROPERTIES = (projectId: string) => `PROJECT_ISSUES_PROPERTIES_${projectId.toUpperCase()}`; -export const PROJECT_ISSUES_COMMENTS = (issueId: string) => `PROJECT_ISSUES_COMMENTS_${issueId.toUpperCase()}`; -export const PROJECT_ISSUES_ACTIVITY = (issueId: string) => `PROJECT_ISSUES_ACTIVITY_${issueId.toUpperCase()}`; -export const PROJECT_ISSUE_BY_STATE = (projectId: string) => `PROJECT_ISSUE_BY_STATE_${projectId.toUpperCase()}`; -export const PROJECT_ISSUE_LABELS = (projectId: string) => `PROJECT_ISSUE_LABELS_${projectId.toUpperCase()}`; -export const WORKSPACE_LABELS = (workspaceSlug: string) => `WORKSPACE_LABELS_${workspaceSlug.toUpperCase()}`; export const PROJECT_GITHUB_REPOSITORY = (projectId: string) => `PROJECT_GITHUB_REPOSITORY_${projectId.toUpperCase()}`; // cycles -export const CYCLES_LIST = (projectId: string) => `CYCLE_LIST_${projectId.toUpperCase()}`; -export const INCOMPLETE_CYCLES_LIST = (projectId: string) => `INCOMPLETE_CYCLES_LIST_${projectId.toUpperCase()}`; -export const CURRENT_CYCLE_LIST = (projectId: string) => `CURRENT_CYCLE_LIST_${projectId.toUpperCase()}`; -export const UPCOMING_CYCLES_LIST = (projectId: string) => `UPCOMING_CYCLES_LIST_${projectId.toUpperCase()}`; -export const DRAFT_CYCLES_LIST = (projectId: string) => `DRAFT_CYCLES_LIST_${projectId.toUpperCase()}`; -export const COMPLETED_CYCLES_LIST = (projectId: string) => `COMPLETED_CYCLES_LIST_${projectId.toUpperCase()}`; -export const CYCLE_ISSUES = (cycleId: string) => `CYCLE_ISSUES_${cycleId.toUpperCase()}`; export const CYCLE_ISSUES_WITH_PARAMS = (cycleId: string, params?: any) => { if (!params) return `CYCLE_ISSUES_WITH_PARAMS_${cycleId.toUpperCase()}`; @@ -158,43 +81,10 @@ export const CYCLE_DETAILS = (cycleId: string) => `CYCLE_DETAILS_${cycleId.toUpp export const STATES_LIST = (projectId: string) => `STATES_LIST_${projectId.toUpperCase()}`; -export const USER_ISSUE = (workspaceSlug: string) => `USER_ISSUE_${workspaceSlug.toUpperCase()}`; -export const USER_ISSUES = (workspaceSlug: string, params: any) => { - const paramsKey = myIssuesParamsToKey(params); - - return `USER_ISSUES_${workspaceSlug.toUpperCase()}_${paramsKey}`; -}; export const USER_ACTIVITY = (params: { cursor?: string }) => `USER_ACTIVITY_${params?.cursor}`; -export const USER_WORKSPACE_DASHBOARD = (workspaceSlug: string) => - `USER_WORKSPACE_DASHBOARD_${workspaceSlug.toUpperCase()}`; -export const USER_PROJECT_VIEW = (projectId: string) => `USER_PROJECT_VIEW_${projectId.toUpperCase()}`; - -export const MODULE_LIST = (projectId: string) => `MODULE_LIST_${projectId.toUpperCase()}`; -export const MODULE_ISSUES = (moduleId: string) => `MODULE_ISSUES_${moduleId.toUpperCase()}`; -export const MODULE_ISSUES_WITH_PARAMS = (moduleId: string, params?: any) => { - if (!params) return `MODULE_ISSUES_WITH_PARAMS_${moduleId.toUpperCase()}`; - - const paramsKey = paramsToKey(params); - - return `MODULE_ISSUES_WITH_PARAMS_${moduleId.toUpperCase()}_${paramsKey.toUpperCase()}`; -}; -export const MODULE_DETAILS = (moduleId: string) => `MODULE_DETAILS_${moduleId.toUpperCase()}`; - -export const VIEWS_LIST = (projectId: string) => `VIEWS_LIST_${projectId.toUpperCase()}`; -export const VIEW_DETAILS = (viewId: string) => `VIEW_DETAILS_${viewId.toUpperCase()}`; -export const VIEW_ISSUES = (viewId: string, params: any) => { - if (!params) return `VIEW_ISSUES_${viewId.toUpperCase()}`; - - const paramsKey = paramsToKey(params); - - return `VIEW_ISSUES_${viewId.toUpperCase()}_${paramsKey.toUpperCase()}`; -}; // Issues export const ISSUE_DETAILS = (issueId: string) => `ISSUE_DETAILS_${issueId.toUpperCase()}`; -export const SUB_ISSUES = (issueId: string) => `SUB_ISSUES_${issueId.toUpperCase()}`; -export const ISSUE_ATTACHMENTS = (issueId: string) => `ISSUE_ATTACHMENTS_${issueId.toUpperCase()}`; -export const ARCHIVED_ISSUE_DETAILS = (issueId: string) => `ARCHIVED_ISSUE_DETAILS_${issueId.toUpperCase()}`; // integrations export const APP_INTEGRATIONS = "APP_INTEGRATIONS"; @@ -223,21 +113,6 @@ export const GITHUB_REPOSITORY_INFO = (workspaceSlug: string, repoName: string) export const SLACK_CHANNEL_INFO = (workspaceSlug: string, projectId: string) => `SLACK_CHANNEL_INFO_${workspaceSlug.toString().toUpperCase()}_${projectId.toUpperCase()}`; -// Pages -export const RECENT_PAGES_LIST = (projectId: string) => `RECENT_PAGES_LIST_${projectId.toUpperCase()}`; -export const ALL_PAGES_LIST = (projectId: string) => `ALL_PAGES_LIST_${projectId.toUpperCase()}`; -export const ARCHIVED_PAGES_LIST = (projectId: string) => `ARCHIVED_PAGES_LIST_${projectId.toUpperCase}`; -export const FAVORITE_PAGES_LIST = (projectId: string) => `FAVORITE_PAGES_LIST_${projectId.toUpperCase()}`; -export const PRIVATE_PAGES_LIST = (projectId: string) => `PRIVATE_PAGES_LIST_${projectId.toUpperCase()}`; -export const SHARED_PAGES_LIST = (projectId: string) => `SHARED_PAGES_LIST_${projectId.toUpperCase()}`; -export const PAGE_DETAILS = (pageId: string) => `PAGE_DETAILS_${pageId.toUpperCase()}`; -export const PAGE_BLOCKS_LIST = (pageId: string) => `PAGE_BLOCK_LIST_${pageId.toUpperCase()}`; -export const PAGE_BLOCK_DETAILS = (pageId: string) => `PAGE_BLOCK_DETAILS_${pageId.toUpperCase()}`; -export const MY_PAGES_LIST = (pageId: string) => `MY_PAGE_LIST_${pageId}`; -// estimates -export const ESTIMATES_LIST = (projectId: string) => `ESTIMATES_LIST_${projectId.toUpperCase()}`; -export const ESTIMATE_DETAILS = (estimateId: string) => `ESTIMATE_DETAILS_${estimateId.toUpperCase()}`; - // analytics export const ANALYTICS = (workspaceSlug: string, params: IAnalyticsParams) => `ANALYTICS${workspaceSlug.toUpperCase()}_${params.x_axis}_${params.y_axis}_${ @@ -255,9 +130,6 @@ export const USER_WORKSPACE_NOTIFICATIONS = (workspaceSlug: string, params: INot )?.toUpperCase()}_SNOOZED_${snoozed}_ARCHIVED_${archived}_READ_${read}`; }; -export const USER_WORKSPACE_NOTIFICATIONS_DETAILS = (workspaceSlug: string, notificationId: string) => - `USER_WORKSPACE_NOTIFICATIONS_DETAILS_${workspaceSlug?.toUpperCase()}_${notificationId?.toUpperCase()}`; - export const UNREAD_NOTIFICATIONS_COUNT = (workspaceSlug: string) => `UNREAD_NOTIFICATIONS_COUNT_${workspaceSlug?.toUpperCase()}`; @@ -293,15 +165,8 @@ export const USER_PROFILE_ACTIVITY = ( ) => `USER_WORKSPACE_PROFILE_ACTIVITY_${workspaceSlug.toUpperCase()}_${userId.toUpperCase()}_${params?.cursor}`; export const USER_PROFILE_PROJECT_SEGREGATION = (workspaceSlug: string, userId: string) => `USER_PROFILE_PROJECT_SEGREGATION_${workspaceSlug.toUpperCase()}_${userId.toUpperCase()}`; -export const USER_PROFILE_ISSUES = (workspaceSlug: string, userId: string, params: any) => { - const paramsKey = myIssuesParamsToKey(params); - - return `USER_PROFILE_ISSUES_${workspaceSlug.toUpperCase()}_${userId.toUpperCase()}_${paramsKey}`; -}; // reactions -export const ISSUE_REACTION_LIST = (workspaceSlug: string, projectId: string, issueId: string) => - `ISSUE_REACTION_LIST_${workspaceSlug.toUpperCase()}_${projectId.toUpperCase()}_${issueId.toUpperCase()}`; export const COMMENT_REACTION_LIST = (workspaceSlug: string, projectId: string, commendId: string) => `COMMENT_REACTION_LIST_${workspaceSlug.toUpperCase()}_${projectId.toUpperCase()}_${commendId.toUpperCase()}`; diff --git a/web/helpers/array.helper.ts b/web/helpers/array.helper.ts index c2799bfa2..4568d719c 100644 --- a/web/helpers/array.helper.ts +++ b/web/helpers/array.helper.ts @@ -1,14 +1,5 @@ import { IIssueLabel, IIssueLabelTree } from "@plane/types"; -export const groupBy = (array: any[], key: string) => { - const innerKey = key.split("."); // split the key by dot - return array.reduce((result, currentValue) => { - const key = innerKey.reduce((obj, i) => obj?.[i], currentValue) ?? "None"; // get the value of the inner key - (result[key] = result[key] || []).push(currentValue); - return result; - }, {}); -}; - export const orderArrayBy = (orgArray: any[], key: string, ordering: "ascending" | "descending" = "ascending") => { if (!orgArray || !Array.isArray(orgArray) || orgArray.length === 0) return []; @@ -44,39 +35,9 @@ export const findStringWithMostCharacters = (strings: string[]): string => { ); }; -export const checkIfArraysHaveSameElements = (arr1: any[] | null, arr2: any[] | null): boolean => { - if (!arr1 || !arr2) return false; - if (!Array.isArray(arr1) || !Array.isArray(arr2)) return false; - if (arr1.length === 0 && arr2.length === 0) return true; - - return arr1.length === arr2.length && arr1.every((e) => arr2.includes(e)); -}; - -type GroupedItems = { [key: string]: T[] }; - -export const groupByField = (array: T[], field: keyof T): GroupedItems => - array.reduce((grouped: GroupedItems, item: T) => { - const key = String(item[field]); - grouped[key] = (grouped[key] || []).concat(item); - return grouped; - }, {}); - export const sortByField = (array: any[], field: string): any[] => array.sort((a, b) => (a[field] < b[field] ? -1 : a[field] > b[field] ? 1 : 0)); -export const orderGroupedDataByField = (groupedData: GroupedItems, orderBy: keyof T): GroupedItems => { - for (const key in groupedData) { - if (groupedData.hasOwnProperty(key)) { - groupedData[key] = groupedData[key].sort((a, b) => { - if (a[orderBy] < b[orderBy]) return -1; - if (a[orderBy] > b[orderBy]) return 1; - return 0; - }); - } - } - return groupedData; -}; - export const buildTree = (array: IIssueLabel[], parent = null) => { const tree: IIssueLabelTree[] = []; diff --git a/web/helpers/calendar.helper.ts b/web/helpers/calendar.helper.ts index 5b89d8625..37b94363f 100644 --- a/web/helpers/calendar.helper.ts +++ b/web/helpers/calendar.helper.ts @@ -1,44 +1,7 @@ -// helpers -import { ICalendarDate, ICalendarPayload } from "@/components/issues"; -import { getWeekNumberOfDate, renderFormattedPayloadDate } from "@/helpers/date-time.helper"; // types - -export const formatDate = (date: Date, format: string): string => { - const day = date.getDate(); - const month = date.getMonth() + 1; - const year = date.getFullYear(); - const hours = date.getHours(); - const minutes = date.getMinutes(); - const seconds = date.getSeconds(); - const daysOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; - const monthsOfYear = [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December", - ]; - - const formattedDate = format - .replace("dd", day.toString().padStart(2, "0")) - .replace("d", day.toString()) - .replace("eee", daysOfWeek[date.getDay()]) - .replace("Month", monthsOfYear[month - 1]) - .replace("yyyy", year.toString()) - .replace("yyy", year.toString().slice(-3)) - .replace("hh", hours.toString().padStart(2, "0")) - .replace("mm", minutes.toString().padStart(2, "0")) - .replace("ss", seconds.toString().padStart(2, "0")); - - return formattedDate; -}; +import { ICalendarDate, ICalendarPayload } from "@/components/issues"; +// helpers +import { getWeekNumberOfDate, renderFormattedPayloadDate } from "@/helpers/date-time.helper"; /** * @returns {ICalendarPayload} calendar payload to render the calendar diff --git a/web/helpers/common.helper.ts b/web/helpers/common.helper.ts index 9999b3274..980c01dc4 100644 --- a/web/helpers/common.helper.ts +++ b/web/helpers/common.helper.ts @@ -1,25 +1,6 @@ import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; -export const debounce = (func: any, wait: number, immediate: boolean = false) => { - let timeout: any; - - return function executedFunction(...args: any) { - const later = () => { - timeout = null; - if (!immediate) func(...args); - }; - - const callNow = immediate && !timeout; - - clearTimeout(timeout); - - timeout = setTimeout(later, wait); - - if (callNow) func(...args); - }; -}; - export const API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ? process.env.NEXT_PUBLIC_API_BASE_URL : ""; export const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs)); diff --git a/web/helpers/dashboard.helper.ts b/web/helpers/dashboard.helper.ts index 97286bc3a..e9a8888a3 100644 --- a/web/helpers/dashboard.helper.ts +++ b/web/helpers/dashboard.helper.ts @@ -1,10 +1,10 @@ import { endOfMonth, endOfWeek, endOfYear, startOfMonth, startOfWeek, startOfYear } from "date-fns"; -// helpers -import { renderFormattedDate, renderFormattedPayloadDate } from "./date-time.helper"; // types import { TIssuesListTypes } from "@plane/types"; // constants import { DURATION_FILTER_OPTIONS, EDurationFilters } from "@/constants/dashboard"; +// helpers +import { renderFormattedDate, renderFormattedPayloadDate } from "@/helpers/date-time.helper"; /** * @description returns date range based on the duration filter diff --git a/web/helpers/event-tracker.helper.ts b/web/helpers/event-tracker.helper.ts deleted file mode 100644 index d9c42a943..000000000 --- a/web/helpers/event-tracker.helper.ts +++ /dev/null @@ -1,11 +0,0 @@ -import posthog from "posthog-js"; - -export const trackEvent = (eventName: string, payload: object | [] | null = null) => { - try { - posthog?.capture(eventName, { - ...payload, - }); - } catch (error) { - console.log(error); - } -}; diff --git a/web/helpers/generate-random-string.ts b/web/helpers/generate-random-string.ts deleted file mode 100644 index 9329ab9bd..000000000 --- a/web/helpers/generate-random-string.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const generateRandomString = (length: number) => { - let result = ""; - const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - const charactersLength = characters.length; - let counter = 0; - while (counter < length) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); - counter += 1; - } - return result; -}; diff --git a/web/helpers/issue.helper.ts b/web/helpers/issue.helper.ts index 614994767..812db1c44 100644 --- a/web/helpers/issue.helper.ts +++ b/web/helpers/issue.helper.ts @@ -1,94 +1,14 @@ import differenceInCalendarDays from "date-fns/differenceInCalendarDays"; import { v4 as uuidv4 } from "uuid"; // types -import { - TIssue, - TIssueGroupByOptions, - TIssueLayouts, - TIssueOrderByOptions, - TIssueParams, - TStateGroups, -} from "@plane/types"; +import { TIssue, TIssueLayouts, TIssueParams, TStateGroups } from "@plane/types"; import { IGanttBlock } from "@/components/gantt-chart"; // constants import { ISSUE_DISPLAY_FILTERS_BY_LAYOUT } from "@/constants/issue"; import { STATE_GROUPS } from "@/constants/state"; // helpers -import { orderArrayBy } from "@/helpers/array.helper"; import { getDate } from "@/helpers/date-time.helper"; -type THandleIssuesMutation = ( - formData: Partial, - oldGroupTitle: string, - selectedGroupBy: TIssueGroupByOptions, - issueIndex: number, - orderBy: TIssueOrderByOptions, - prevData?: - | { - [key: string]: TIssue[]; - } - | TIssue[] -) => - | { - [key: string]: TIssue[]; - } - | TIssue[] - | undefined; - -export const handleIssuesMutation: THandleIssuesMutation = ( - formData, - oldGroupTitle, - selectedGroupBy, - issueIndex, - orderBy, - prevData -) => { - if (!prevData) return prevData; - - if (Array.isArray(prevData)) { - const updatedIssue = { - ...prevData[issueIndex], - ...formData, - }; - - prevData.splice(issueIndex, 1, updatedIssue); - - return [...prevData]; - } else { - const oldGroup = prevData[oldGroupTitle ?? ""] ?? []; - - let newGroup: TIssue[] = []; - - if (selectedGroupBy === "priority") newGroup = prevData[formData.priority ?? ""] ?? []; - else if (selectedGroupBy === "state") newGroup = prevData[formData.state_id ?? ""] ?? []; - - const updatedIssue = { - ...oldGroup[issueIndex], - ...formData, - }; - - if (selectedGroupBy !== Object.keys(formData)[0]) - return { - ...prevData, - [oldGroupTitle ?? ""]: orderArrayBy( - oldGroup.map((i) => (i.id === updatedIssue.id ? updatedIssue : i)), - orderBy - ), - }; - - const groupThatIsUpdated = selectedGroupBy === "priority" ? formData.priority : formData.state_id; - - return { - ...prevData, - [oldGroupTitle ?? ""]: orderArrayBy( - oldGroup.filter((i) => i.id !== updatedIssue.id), - orderBy - ), - [groupThatIsUpdated ?? ""]: orderArrayBy([...newGroup, updatedIssue], orderBy), - }; - } -}; - export const handleIssueQueryParamsByLayout = ( layout: TIssueLayouts | undefined, viewType: "my_issues" | "issues" | "profile_issues" | "archived_issues" | "draft_issues" @@ -166,6 +86,7 @@ export const shouldHighlightIssueDueDate = ( // if the issue is overdue, highlight the due date return targetDateDistance <= 0; }; + export const renderIssueBlocksStructure = (blocks: TIssue[]): IGanttBlock[] => blocks?.map((block) => ({ data: block, diff --git a/web/helpers/state.helper.ts b/web/helpers/state.helper.ts index a7f07c72e..6393f3840 100644 --- a/web/helpers/state.helper.ts +++ b/web/helpers/state.helper.ts @@ -1,6 +1,7 @@ // types -import { STATE_GROUPS } from "@/constants/state"; import { IState, IStateResponse } from "@plane/types"; +// constants +import { STATE_GROUPS } from "@/constants/state"; export const orderStateGroups = (unorderedStateGroups: IStateResponse | undefined): IStateResponse | undefined => { if (!unorderedStateGroups) return undefined; diff --git a/web/helpers/string.helper.ts b/web/helpers/string.helper.ts index 558c88883..8ac35956b 100644 --- a/web/helpers/string.helper.ts +++ b/web/helpers/string.helper.ts @@ -1,10 +1,4 @@ import * as DOMPurify from "dompurify"; -import { - CYCLE_ISSUES_WITH_PARAMS, - MODULE_ISSUES_WITH_PARAMS, - PROJECT_ISSUES_LIST_WITH_PARAMS, - VIEW_ISSUES, -} from "@/constants/fetch-keys"; export const addSpaceIfCamelCase = (str: string) => { if (str === undefined || str === null) return ""; @@ -24,15 +18,6 @@ export const truncateText = (str: string, length: number) => { return str.length > length ? `${str.substring(0, length)}...` : str; }; -export const createSimilarString = (str: string) => { - const shuffled = str - .split("") - .sort(() => Math.random() - 0.5) - .join(""); - - return shuffled; -}; - const fallbackCopyTextToClipboard = (text: string) => { const textArea = document.createElement("textarea"); textArea.value = text; @@ -98,15 +83,6 @@ export const generateRandomColor = (string: string): string => { return randomColor; }; -export const getFirstCharacters = (str: string) => { - const words = str.trim().split(" "); - if (words.length === 1) { - return words[0].charAt(0); - } else { - return words[0].charAt(0) + words[1].charAt(0); - } -}; - /** * @description: This function will remove all the HTML tags from the string * @param {string} html @@ -161,29 +137,6 @@ export const objToQueryParams = (obj: any) => { return params.toString(); }; -export const getFetchKeysForIssueMutation = (options: { - cycleId?: string | string[]; - moduleId?: string | string[]; - viewId?: string | string[]; - projectId: string; - viewGanttParams: any; - ganttParams: any; -}) => { - const { cycleId, moduleId, viewId, projectId, viewGanttParams, ganttParams } = options; - - const ganttFetchKey = cycleId - ? { ganttFetchKey: CYCLE_ISSUES_WITH_PARAMS(cycleId.toString(), ganttParams) } - : moduleId - ? { ganttFetchKey: MODULE_ISSUES_WITH_PARAMS(moduleId.toString(), ganttParams) } - : viewId - ? { ganttFetchKey: VIEW_ISSUES(viewId.toString(), viewGanttParams) } - : { ganttFetchKey: PROJECT_ISSUES_LIST_WITH_PARAMS(projectId?.toString() ?? "", ganttParams) }; - - return { - ...ganttFetchKey, - }; -}; - /** * @returns {boolean} true if searchQuery is substring of text in the same order, false otherwise * @description Returns true if searchQuery is substring of text in the same order, false otherwise