mirror of
https://github.com/makeplane/plane
synced 2025-08-07 19:59:33 +00:00
chore: moved helper function to utils package
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import React, { FC, MouseEvent, useEffect, useMemo, useState } from "react";
|
||||
import { format, parseISO } from "date-fns";
|
||||
import { observer } from "mobx-react";
|
||||
import { useParams, usePathname, useSearchParams } from "next/navigation";
|
||||
import { useForm } from "react-hook-form";
|
||||
@@ -17,13 +16,13 @@ import {
|
||||
import { useLocalStorage } from "@plane/hooks";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
import { ICycle, TCycleGroups } from "@plane/types";
|
||||
// ui
|
||||
import { Avatar, AvatarGroup, FavoriteStar, LayersIcon, Tooltip, TransferIcon, setPromiseToast } from "@plane/ui";
|
||||
import { renderSafeFormattedDate } from "@plane/utils";
|
||||
// components
|
||||
import { CycleQuickActions, TransferIssuesModal } from "@/components/cycles";
|
||||
import { DateRangeDropdown } from "@/components/dropdowns";
|
||||
import { ButtonAvatars } from "@/components/dropdowns/member/avatar";
|
||||
import { getDate, renderSafeFormattedDate } from "@/helpers/date-time.helper";
|
||||
import { getDate } from "@/helpers/date-time.helper";
|
||||
import { getFileURL } from "@/helpers/file.helper";
|
||||
// hooks
|
||||
import { generateQueryParams } from "@/helpers/router.helper";
|
||||
@@ -64,7 +63,7 @@ export const CycleListItemAction: FC<Props> = observer((props) => {
|
||||
const searchParams = useSearchParams();
|
||||
const pathname = usePathname();
|
||||
// store hooks
|
||||
const { addCycleToFavorites, removeCycleFromFavorites, updateCycleDetails } = useCycle();
|
||||
const { addCycleToFavorites, removeCycleFromFavorites } = useCycle();
|
||||
const { captureEvent } = useEventTracker();
|
||||
const { allowPermissions } = useUserPermissions();
|
||||
|
||||
@@ -77,7 +76,7 @@ export const CycleListItemAction: FC<Props> = observer((props) => {
|
||||
const { getUserDetails } = useMember();
|
||||
|
||||
// form
|
||||
const { control, reset, getValues } = useForm({
|
||||
const { reset } = useForm({
|
||||
defaultValues,
|
||||
});
|
||||
|
||||
|
||||
@@ -475,38 +475,3 @@ export const checkDateCriteria = (dateToCheck: Date | null, filterDate: Date, ty
|
||||
|
||||
return type === "after" ? normalizedCheck >= normalizedFilter : normalizedCheck <= normalizedFilter;
|
||||
};
|
||||
|
||||
/**
|
||||
* @returns {string} safely formatted date or fallback text
|
||||
* @description Safely formats a date using renderFormattedPayloadDate and date-fns format, with fallback for invalid dates
|
||||
* @param {Date | string | undefined | null} date
|
||||
* @param {string} formatToken (optional) // default "MMM dd, yyyy"
|
||||
* @param {string} fallback (optional) // default "Invalid date"
|
||||
* @example renderSafeFormattedDate("2024-01-01") // "Jan 01, 2024"
|
||||
* @example renderSafeFormattedDate(null) // "Invalid date"
|
||||
* @example renderSafeFormattedDate("2024-01-01", "MM/dd/yyyy", "N/A") // "01/01/2024"
|
||||
*/
|
||||
export const renderSafeFormattedDate = (
|
||||
date: Date | string | undefined | null,
|
||||
formatToken: string = "MMM dd, yyyy",
|
||||
fallback: string = "Invalid date"
|
||||
): string => {
|
||||
if (!date) return fallback;
|
||||
|
||||
// Use renderFormattedPayloadDate to get a properly formatted payload date
|
||||
const payloadDate = renderFormattedPayloadDate(date);
|
||||
|
||||
// If renderFormattedPayloadDate returns undefined/null, return fallback
|
||||
if (!payloadDate) return fallback;
|
||||
|
||||
try {
|
||||
// Parse and format the payload date
|
||||
const parsedDate = getDate(payloadDate);
|
||||
if (!parsedDate || !isValid(parsedDate)) return fallback;
|
||||
|
||||
return format(parsedDate, formatToken);
|
||||
} catch (error) {
|
||||
// Return fallback if any error occurs during formatting
|
||||
return fallback;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user