base structure
This commit is contained in:
@@ -0,0 +1 @@
|
||||
export const SIDEBAR_SIZE_LEFT = 300;
|
||||
@@ -0,0 +1,119 @@
|
||||
export const Pages = {
|
||||
auth: {
|
||||
login: "/auth/login",
|
||||
register: "/auth/register",
|
||||
forgotPassword: "/auth/forgot",
|
||||
},
|
||||
dashboard: "/dashboard",
|
||||
services: {
|
||||
mine: "/services",
|
||||
other: "/other-service",
|
||||
detail: "/services/detail/",
|
||||
update: "/services/update/",
|
||||
add: "/services/add",
|
||||
list: "/services/list",
|
||||
category: "/services/category",
|
||||
plan: "/services/plan/",
|
||||
review: "/services/reviews",
|
||||
guide: "/services/guide/",
|
||||
},
|
||||
sliders: {
|
||||
list: "/sliders/list",
|
||||
create: "/sliders/create",
|
||||
detail: "/sliders/detail/",
|
||||
},
|
||||
transactions: "/transactions",
|
||||
receipts: {
|
||||
index: "/receipts/list",
|
||||
detail: "/receipts/detail/",
|
||||
create: "/receipts/create",
|
||||
},
|
||||
ticket: {
|
||||
list: "/tickets/list",
|
||||
create: "/tickets/create",
|
||||
detail: "/tickets/messages/",
|
||||
category: "/tickets/category",
|
||||
},
|
||||
announcement: {
|
||||
list: "/announcement",
|
||||
detail: "/announcement/detail/",
|
||||
create: "/announcement/create",
|
||||
},
|
||||
criticisms: {
|
||||
list: "/criticisms/list",
|
||||
detail: "/ccriticisms/detail/",
|
||||
},
|
||||
feedback: {
|
||||
list: "/feedback/list",
|
||||
},
|
||||
learning: {
|
||||
list: "/learning/list",
|
||||
detail: "/learning/detail/",
|
||||
create: "/learning/create",
|
||||
category: "/learning/category",
|
||||
},
|
||||
setting: "/setting",
|
||||
wallet: "/wallet",
|
||||
profile: "/profile",
|
||||
customers: {
|
||||
list: "/customers/list",
|
||||
},
|
||||
representative: {
|
||||
list: "/representatives/list",
|
||||
},
|
||||
developers: {
|
||||
list: "/developers/list",
|
||||
},
|
||||
discount: {
|
||||
list: "/discounts/list",
|
||||
create: "/discounts/create",
|
||||
detail: "/discounts/detail/",
|
||||
},
|
||||
referralCode: {
|
||||
list: "/referral-code/list",
|
||||
},
|
||||
users: {
|
||||
list: "/users/list",
|
||||
create: "/users/create",
|
||||
detail: "/users/detail/",
|
||||
roleList: "/users/roles-all",
|
||||
roleCreate: "/users/roles-add",
|
||||
groupAdd: "/users/group-add",
|
||||
groupList: "/users/groups",
|
||||
},
|
||||
ads: {
|
||||
list: "/ads/list",
|
||||
create: "/ads/create",
|
||||
update: "/ads/update/",
|
||||
},
|
||||
blog: {
|
||||
list: "/blog/list",
|
||||
create: "/blog/create",
|
||||
category: "/blog/category",
|
||||
detail: "/blog/detail/",
|
||||
comments: "/blog/comments",
|
||||
},
|
||||
messages: {
|
||||
list: "/messages/list",
|
||||
detail: "/messages/detail/",
|
||||
},
|
||||
customer: {
|
||||
list: "/customers/list",
|
||||
create: "/customers/create",
|
||||
update: "/customers/update/",
|
||||
},
|
||||
cardBank: {
|
||||
list: "/card-bank/list",
|
||||
create: "/card-bank/create",
|
||||
detail: "/card-bank/detail/",
|
||||
},
|
||||
payment: {
|
||||
list: "/payments/list",
|
||||
},
|
||||
support: {
|
||||
create: "/support/create",
|
||||
list: "/support/list",
|
||||
detail: "/support/detail/",
|
||||
planUsers: "/support/plan-users/",
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,10 @@
|
||||
export const SideBarItemHasSubMenu = [
|
||||
"services",
|
||||
"customers",
|
||||
"receipts",
|
||||
"users",
|
||||
"tickets",
|
||||
"learning",
|
||||
"blog",
|
||||
"support",
|
||||
];
|
||||
@@ -0,0 +1,22 @@
|
||||
import axios from "axios";
|
||||
import { getToken } from "./func";
|
||||
|
||||
const axiosInstance = axios.create({
|
||||
baseURL: import.meta.env.VITE_BASE_URL,
|
||||
});
|
||||
|
||||
axiosInstance.interceptors.response.use(
|
||||
(response) => response,
|
||||
(error) => {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
axiosInstance.interceptors.request.use(async function (config) {
|
||||
const token = getToken();
|
||||
|
||||
config.headers.Authorization = "Bearer " + token;
|
||||
return config;
|
||||
});
|
||||
|
||||
export default axiosInstance;
|
||||
@@ -0,0 +1,54 @@
|
||||
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);
|
||||
}
|
||||
|
||||
export const getToken = () => {
|
||||
return localStorage.getItem(import.meta.env.VITE_TOKEN_NAME);
|
||||
};
|
||||
|
||||
export const getRefreshToken = () => {
|
||||
return localStorage.getItem(import.meta.env.VITE_REFRESH_TOKEN_NAME);
|
||||
};
|
||||
|
||||
export const setToken = (token: string) => {
|
||||
localStorage.setItem(import.meta.env.VITE_TOKEN_NAME, token);
|
||||
};
|
||||
|
||||
export const setRefreshToken = (refreshToken: string) => {
|
||||
localStorage.setItem(import.meta.env.VITE_REFRESH_TOKEN_NAME, refreshToken);
|
||||
};
|
||||
|
||||
export const removeToken = () => {
|
||||
localStorage.removeItem(import.meta.env.VITE_TOKEN_NAME);
|
||||
};
|
||||
|
||||
export const removeRefreshToken = () => {
|
||||
localStorage.removeItem(import.meta.env.VITE_REFRESH_TOKEN_NAME);
|
||||
};
|
||||
|
||||
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 "همین الان";
|
||||
};
|
||||
Reference in New Issue
Block a user