const TOKEN_NAME = import.meta.env.VITE_TOKEN_NAME; const REFRESH_TOKEN_NAME = import.meta.env.VITE_REFRESH_TOKEN_NAME; export const getToken = () => { return localStorage.getItem(TOKEN_NAME); }; export const setToken = (token: string) => { localStorage.setItem(TOKEN_NAME, token); }; export const removeToken = () => { localStorage.removeItem(TOKEN_NAME); }; export const getRefreshToken = () => { return localStorage.getItem(REFRESH_TOKEN_NAME); }; export const setRefreshToken = (refreshToken: string) => { localStorage.setItem(REFRESH_TOKEN_NAME, refreshToken); }; export const removeRefreshToken = () => { localStorage.removeItem(REFRESH_TOKEN_NAME); }; export const timeAgo = (dateString: string): string => { const date = new Date(dateString); const now = new Date(); const diffInMs = now.getTime() - date.getTime(); const diffInMinutes = Math.floor(diffInMs / (1000 * 60)); const diffInHours = Math.floor(diffInMinutes / 60); const diffInDays = Math.floor(diffInHours / 24); if (diffInMinutes < 1) return "همین الان"; if (diffInMinutes < 60) return `${diffInMinutes} دقیقه پیش`; if (diffInHours < 24) return `${diffInHours} ساعت پیش`; if (diffInDays < 7) return `${diffInDays} روز پیش`; return date.toLocaleDateString("fa-IR"); }; export const NumberFormat = (num?: number): string => { if (!num) return "0"; return num.toLocaleString("fa-IR"); }; export interface IGeneralError { status: number; success: boolean; error: { message: string[]; }; } export const extractErrorMessage = ( error: Error | unknown, fallbackMessage: string = "خطایی رخ داده است", ): string => { try { const axiosError = error as { response?: { data: IGeneralError } }; return axiosError?.response?.data?.error?.message?.[0] || fallbackMessage; } catch { return fallbackMessage; } }; export const getFileNameAndExtensionFromUrl = ( url: string, ): { fileName: string; extension: string } => { try { const cleanUrl = url.split("?")[0].split("#")[0]; const lastPart = cleanUrl.substring(cleanUrl.lastIndexOf("/") + 1); if (!lastPart || !lastPart.includes(".")) { return { fileName: "", extension: "" }; } const lastDotIndex = lastPart.lastIndexOf("."); const fileName = lastPart.substring(0, lastDotIndex); const extension = lastPart.substring(lastDotIndex + 1); return { fileName, extension }; } catch { return { fileName: "", extension: "" }; } };