mirror of
https://github.com/gosticks/plane.git
synced 2025-10-16 12:45:33 +00:00
* chore: fix lint * fix: constants check:lint command * chore(lint): permit unused vars which begin w/ _ * chore: rm dead code * fix(lint): more lint fixes to constants pkg * fix(lint): lint the live server - fix lint issues * chore: improve clean script * fix(lint): more lint * chore: set live server process title * chore(deps): update to turbo@2.5.5 * chore(live): target node22 * fix(dev): add missing ui pkg dependency * fix(dev): lint decorators * fix(dev): lint space app * fix(dev): address lint issues in types pkg * fix(dev): lint editor pkg * chore(dev): moar lint * fix(dev): live server exit code * chore: address PR feedback * fix(lint): better TPageExtended type * chore: refactor * chore: revert most live server changes * fix: few more lint issues * chore: enable ci checks Ensure we can build + confirm that lint is not getting worse. * chore: address PR feedback * fix: web lint warning added to package.json * fix: ci:lint command --------- Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import { format, isValid } from "date-fns";
|
|
import isNumber from "lodash/isNumber";
|
|
|
|
export const timeAgo = (time: any) => {
|
|
switch (typeof time) {
|
|
case "number":
|
|
break;
|
|
case "string":
|
|
time = +new Date(time);
|
|
break;
|
|
case "object":
|
|
if (time.constructor === Date) time = time.getTime();
|
|
break;
|
|
default:
|
|
time = +new Date();
|
|
}
|
|
};
|
|
|
|
/**
|
|
* This method returns a date from string of type yyyy-mm-dd
|
|
* This method is recommended to use instead of new Date() as this does not introduce any timezone offsets
|
|
* @param date
|
|
* @returns date or undefined
|
|
*/
|
|
export const getDate = (date: string | Date | undefined | null): Date | undefined => {
|
|
try {
|
|
if (!date || date === "") return;
|
|
|
|
if (typeof date !== "string" && !(date instanceof String)) return date;
|
|
|
|
const [yearString, monthString, dayString] = date.substring(0, 10).split("-");
|
|
const year = parseInt(yearString);
|
|
const month = parseInt(monthString);
|
|
const day = parseInt(dayString);
|
|
if (!isNumber(year) || !isNumber(month) || !isNumber(day)) return;
|
|
|
|
return new Date(year, month - 1, day);
|
|
} catch (_err) {
|
|
return undefined;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @returns {string | null} formatted date in the format of MMM dd, yyyy
|
|
* @description Returns date in the formatted format
|
|
* @param {Date | string} date
|
|
* @example renderFormattedDate("2024-01-01") // Jan 01, 2024
|
|
*/
|
|
export const renderFormattedDate = (date: string | Date | undefined | null): string | null => {
|
|
// Parse the date to check if it is valid
|
|
const parsedDate = getDate(date);
|
|
// return if undefined
|
|
if (!parsedDate) return null;
|
|
// Check if the parsed date is valid before formatting
|
|
if (!isValid(parsedDate)) return null; // Return null for invalid dates
|
|
// Format the date in format (MMM dd, yyyy)
|
|
const formattedDate = format(parsedDate, "MMM dd, yyyy");
|
|
return formattedDate;
|
|
};
|