| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- import { Toast } from '@douyinfe/semi-ui';
- import { toastConstants } from '../constants';
- import React from 'react';
- import { toast } from 'react-toastify';
- const HTMLToastContent = ({ htmlContent }) => {
- return <div dangerouslySetInnerHTML={{ __html: htmlContent }} />;
- };
- export default HTMLToastContent;
- export function isAdmin() {
- let user = localStorage.getItem('user');
- if (!user) return false;
- user = JSON.parse(user);
- return user.role >= 10;
- }
- export function isRoot() {
- let user = localStorage.getItem('user');
- if (!user) return false;
- user = JSON.parse(user);
- return user.role >= 100;
- }
- export function getSystemName() {
- let system_name = localStorage.getItem('system_name');
- if (!system_name) return 'New API';
- return system_name;
- }
- export function getLogo() {
- let logo = localStorage.getItem('logo');
- if (!logo) return '/logo.png';
- return logo;
- }
- export function getUserIdFromLocalStorage() {
- let user = localStorage.getItem('user');
- if (!user) return -1;
- user = JSON.parse(user);
- return user.id;
- }
- export function getFooterHTML() {
- return localStorage.getItem('footer_html');
- }
- export async function copy(text) {
- let okay = true;
- try {
- await navigator.clipboard.writeText(text);
- } catch (e) {
- try {
- // 构建input 执行 复制命令
- var _input = window.document.createElement('input');
- _input.value = text;
- window.document.body.appendChild(_input);
- _input.select();
- window.document.execCommand('Copy');
- window.document.body.removeChild(_input);
- } catch (e) {
- okay = false;
- console.error(e);
- }
- }
- return okay;
- }
- export function isMobile() {
- return window.innerWidth <= 600;
- }
- let showErrorOptions = { autoClose: toastConstants.ERROR_TIMEOUT };
- let showWarningOptions = { autoClose: toastConstants.WARNING_TIMEOUT };
- let showSuccessOptions = { autoClose: toastConstants.SUCCESS_TIMEOUT };
- let showInfoOptions = { autoClose: toastConstants.INFO_TIMEOUT };
- let showNoticeOptions = { autoClose: false };
- if (isMobile()) {
- showErrorOptions.position = 'top-center';
- // showErrorOptions.transition = 'flip';
- showSuccessOptions.position = 'top-center';
- // showSuccessOptions.transition = 'flip';
- showInfoOptions.position = 'top-center';
- // showInfoOptions.transition = 'flip';
- showNoticeOptions.position = 'top-center';
- // showNoticeOptions.transition = 'flip';
- }
- export function showError(error) {
- console.error(error);
- if (error.message) {
- if (error.name === 'AxiosError') {
- switch (error.response.status) {
- case 401:
- // toast.error('错误:未登录或登录已过期,请重新登录!', showErrorOptions);
- window.location.href = '/login?expired=true';
- break;
- case 429:
- Toast.error('错误:请求次数过多,请稍后再试!');
- break;
- case 500:
- Toast.error('错误:服务器内部错误,请联系管理员!');
- break;
- case 405:
- Toast.info('本站仅作演示之用,无服务端!');
- break;
- default:
- Toast.error('错误:' + error.message);
- }
- return;
- }
- Toast.error('错误:' + error.message);
- } else {
- Toast.error('错误:' + error);
- }
- }
- export function showWarning(message) {
- Toast.warning(message);
- }
- export function showSuccess(message) {
- Toast.success(message);
- }
- export function showInfo(message) {
- Toast.info(message);
- }
- export function showNotice(message, isHTML = false) {
- if (isHTML) {
- toast(<HTMLToastContent htmlContent={message} />, showNoticeOptions);
- } else {
- Toast.info(message);
- }
- }
- export function openPage(url) {
- window.open(url);
- }
- export function removeTrailingSlash(url) {
- if (!url) return '';
- if (url.endsWith('/')) {
- return url.slice(0, -1);
- } else {
- return url;
- }
- }
- export function getTodayStartTimestamp() {
- var now = new Date();
- now.setHours(0, 0, 0, 0);
- return Math.floor(now.getTime() / 1000);
- }
- export function timestamp2string(timestamp) {
- let date = new Date(timestamp * 1000);
- let year = date.getFullYear().toString();
- let month = (date.getMonth() + 1).toString();
- let day = date.getDate().toString();
- let hour = date.getHours().toString();
- let minute = date.getMinutes().toString();
- let second = date.getSeconds().toString();
- if (month.length === 1) {
- month = '0' + month;
- }
- if (day.length === 1) {
- day = '0' + day;
- }
- if (hour.length === 1) {
- hour = '0' + hour;
- }
- if (minute.length === 1) {
- minute = '0' + minute;
- }
- if (second.length === 1) {
- second = '0' + second;
- }
- return (
- year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second
- );
- }
- export function timestamp2string1(timestamp, dataExportDefaultTime = 'hour') {
- let date = new Date(timestamp * 1000);
- // let year = date.getFullYear().toString();
- let month = (date.getMonth() + 1).toString();
- let day = date.getDate().toString();
- let hour = date.getHours().toString();
- if (day === '24') {
- console.log('timestamp', timestamp);
- }
- if (month.length === 1) {
- month = '0' + month;
- }
- if (day.length === 1) {
- day = '0' + day;
- }
- if (hour.length === 1) {
- hour = '0' + hour;
- }
- let str = month + '-' + day;
- if (dataExportDefaultTime === 'hour') {
- str += ' ' + hour + ':00';
- } else if (dataExportDefaultTime === 'week') {
- let nextWeek = new Date(timestamp * 1000 + 6 * 24 * 60 * 60 * 1000);
- let nextMonth = (nextWeek.getMonth() + 1).toString();
- let nextDay = nextWeek.getDate().toString();
- if (nextMonth.length === 1) {
- nextMonth = '0' + nextMonth;
- }
- if (nextDay.length === 1) {
- nextDay = '0' + nextDay;
- }
- str += ' - ' + nextMonth + '-' + nextDay;
- }
- return str;
- }
- export function downloadTextAsFile(text, filename) {
- let blob = new Blob([text], { type: 'text/plain;charset=utf-8' });
- let url = URL.createObjectURL(blob);
- let a = document.createElement('a');
- a.href = url;
- a.download = filename;
- a.click();
- }
- export const verifyJSON = (str) => {
- try {
- JSON.parse(str);
- } catch (e) {
- return false;
- }
- return true;
- };
- export function verifyJSONPromise(value) {
- try {
- JSON.parse(value);
- return Promise.resolve();
- } catch (e) {
- return Promise.reject('不是合法的 JSON 字符串');
- }
- }
- export function shouldShowPrompt(id) {
- let prompt = localStorage.getItem(`prompt-${id}`);
- return !prompt;
- }
- export function setPromptShown(id) {
- localStorage.setItem(`prompt-${id}`, 'true');
- }
- /**
- * 比较两个对象的属性,找出有变化的属性,并返回包含变化属性信息的数组
- * @param {Object} oldObject - 旧对象
- * @param {Object} newObject - 新对象
- * @return {Array} 包含变化属性信息的数组,每个元素是一个对象,包含 key, oldValue 和 newValue
- */
- export function compareObjects(oldObject, newObject) {
- const changedProperties = [];
- // 比较两个对象的属性
- for (const key in oldObject) {
- if (oldObject.hasOwnProperty(key) && newObject.hasOwnProperty(key)) {
- if (oldObject[key] !== newObject[key]) {
- changedProperties.push({
- key: key,
- oldValue: oldObject[key],
- newValue: newObject[key],
- });
- }
- }
- }
- return changedProperties;
- }
|