Files
danak-website/src/config/func.ts
T
hamid zarghami 1bf0b56a63 ads + blog + ...
2025-04-19 15:35:22 +03:30

110 lines
2.9 KiB
TypeScript

import Cookie from "js-cookie";
export function isEmail(input: string): boolean {
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return emailRegex.test(input);
}
export function NumberFormat(number: number): string {
return Intl.NumberFormat("fa-IR").format(number);
// return Intl.NumberFormat("fa-IR").format(number);
}
export const timeAgo = (date: string | Date): string => {
const now = new Date();
const past = new Date(date);
const diff = Math.floor((now.getTime() - past.getTime()) / 1000); // اختلاف بر حسب ثانیه
const units = [
{ name: "سال", value: 60 * 60 * 24 * 365 },
{ name: "ماه", value: 60 * 60 * 24 * 30 },
{ name: "روز", value: 60 * 60 * 24 },
{ name: "ساعت", value: 60 * 60 },
{ name: "دقیقه", value: 60 },
{ name: "ثانیه", value: 1 },
];
for (const unit of units) {
const amount = Math.floor(diff / unit.value);
if (amount >= 1) return `${amount} ${unit.name} پیش`;
}
return "همین الان";
};
export const getToken = () => {
return Cookie.get(process.env.NEXT_PUBLIC_BASE_URL || "");
};
export const getRefreshToken = () => {
return Cookie.get(process.env.VITE_REFRESH_TOKEN_NAME || "");
};
const isProduction = process.env.NODE_ENV === "production";
const domain = isProduction ? ".danakcorp.com" : undefined;
export const setToken = (token: string) => {
Cookie.set(process.env.NEXT_PUBLIC_TOKEN_NAME || "", token, {
domain: domain || "",
});
};
export const setRefreshToken = (refreshToken: string) => {
Cookie.set(process.env.NEXT_PUBLIC_REFRESH_TOKEN_NAME || "", refreshToken, {
domain: domain || "",
});
};
export const removeToken = () => {
Cookie.remove(process.env.NEXT_PUBLIC_TOKEN_NAME || "", {
domain,
path: "/",
});
};
export const removeRefreshToken = () => {
Cookie.remove(process.env.NEXT_PUBLIC_REFRESH_TOKEN_NAME || "", {
domain,
path: "/",
});
};
export function toJalaliDate(
date: Date | string | number,
options?: Intl.DateTimeFormatOptions,
locale: string = "fa-IR-u-ca-persian"
): string {
const parsedDate = new Date(date);
if (isNaN(parsedDate.getTime())) {
return "";
throw new Error("Invalid date provided to toJalaliDate");
}
const defaultOptions: Intl.DateTimeFormatOptions = {
year: "numeric",
month: "numeric",
day: "numeric",
// weekday: "long",
// hour: "numeric",
// minute: "numeric",
};
const formatter = new Intl.DateTimeFormat(locale, {
...defaultOptions,
...options,
});
return formatter.format(parsedDate);
}
export function limitHtmlWords(htmlString: string, wordLimit: number): string {
// پاک کردن تگ‌ها
const plainText = htmlString.replace(/<[^>]*>/g, "");
// تقسیم و محدود کردن کلمات
const words = plainText.split(/\s+/).slice(0, wordLimit);
const result = words.join(" ") + "...";
return result;
}