Merge branch 'whyour:develop' into develop

This commit is contained in:
yuanwangokk-1 2024-06-24 20:59:54 +08:00 committed by GitHub
commit 866aff6ca5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 40 additions and 17 deletions

View File

@ -351,7 +351,7 @@ export default class UserService {
public async getNotificationMode(): Promise<NotificationInfo> { public async getNotificationMode(): Promise<NotificationInfo> {
const doc = await this.getDb({ type: AuthDataType.notification }); const doc = await this.getDb({ type: AuthDataType.notification });
return doc.info as NotificationInfo; return (doc.info || {}) as NotificationInfo;
} }
private async updateAuthDb(payload: SystemInfo): Promise<any> { private async updateAuthDb(payload: SystemInfo): Promise<any> {

View File

@ -97,7 +97,6 @@ const push_config = {
WEBHOOK_CONTENT_TYPE: '', // 自定义通知 content-type WEBHOOK_CONTENT_TYPE: '', // 自定义通知 content-type
}; };
// 首先读取 面板变量 或者 github action 运行变量
for (const key in push_config) { for (const key in push_config) {
const v = process.env[key]; const v = process.env[key];
if (v) { if (v) {
@ -1290,7 +1289,7 @@ async function sendNotify(text, desp, params = {}) {
} }
} }
if (push_config.HITOKOTO) { if (push_config.HITOKOTO !== 'false') {
desp += '\n\n' + (await one()); desp += '\n\n' + (await one());
} }

View File

@ -120,7 +120,6 @@ push_config = {
} }
# fmt: on # fmt: on
# 首先读取 面板变量 或者 github action 运行变量
for k in push_config: for k in push_config:
if os.getenv(k): if os.getenv(k):
v = os.getenv(k) v = os.getenv(k)
@ -962,7 +961,7 @@ def send(title: str, content: str, ignore_default_config: bool = False, **kwargs
return return
hitokoto = push_config.get("HITOKOTO") hitokoto = push_config.get("HITOKOTO")
content += "\n\n" + one() if hitokoto else "" content += "\n\n" + one() if hitokoto != "false" else ""
notify_function = add_notify_function() notify_function = add_notify_function()
ts = [ ts = [

View File

@ -57,6 +57,7 @@ import { useVT } from 'virtualizedtableforantd4';
import { ICrontab, OperationName, OperationPath, CrontabStatus } from './type'; import { ICrontab, OperationName, OperationPath, CrontabStatus } from './type';
import Name from '@/components/name'; import Name from '@/components/name';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { noop } from 'lodash';
const { Text, Paragraph, Link } = Typography; const { Text, Paragraph, Link } = Typography;
const { Search } = Input; const { Search } = Input;
@ -76,7 +77,7 @@ const Crontab = () => {
wordBreak: 'break-all', wordBreak: 'break-all',
marginBottom: 0, marginBottom: 0,
color: '#1890ff', color: '#1890ff',
cursor: 'pointer' cursor: 'pointer',
}} }}
ellipsis={{ tooltip: text, rows: 2 }} ellipsis={{ tooltip: text, rows: 2 }}
onClick={() => { onClick={() => {
@ -270,9 +271,14 @@ const Crontab = () => {
record.sub_id ? ( record.sub_id ? (
<Name <Name
service={() => service={() =>
request.get(`${config.apiPrefix}subscriptions/${record.sub_id}`) request.get(`${config.apiPrefix}subscriptions/${record.sub_id}`, {
onError: noop,
})
} }
options={{ ready: record?.sub_id, cacheKey: record.sub_id }} options={{
ready: record?.sub_id,
cacheKey: record.sub_id,
}}
/> />
) : ( ) : (
'-' '-'

View File

@ -1,29 +1,44 @@
import intl from 'react-intl-universal' import intl from 'react-intl-universal';
import { message } from 'antd'; import { message } from 'antd';
import config from './config'; import config from './config';
import { history } from '@umijs/max'; import { history } from '@umijs/max';
import axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios'; import axios, {
AxiosError,
AxiosInstance,
AxiosRequestConfig,
AxiosResponse,
InternalAxiosRequestConfig,
} from 'axios';
interface IResponseData { export interface IResponseData {
code?: number; code?: number;
data?: any; data?: any;
message?: string; message?: string;
error?: any; error?: any;
} }
type Override< export type Override<
T, T,
K extends Partial<{ [P in keyof T]: any }> | string, K extends Partial<{ [P in keyof T]: any }> | string,
> = K extends string > = K extends string
? Omit<T, K> & { [P in keyof T]: T[P] | unknown } ? Omit<T, K> & { [P in keyof T]: T[P] | unknown }
: Omit<T, keyof K> & K; : Omit<T, keyof K> & K;
export interface ICustomConfig {
onError?: (res: AxiosResponse<unknown, any>) => void;
}
message.config({ message.config({
duration: 2, duration: 2,
}); });
const time = Date.now(); const time = Date.now();
const errorHandler = function (error: AxiosError) { const errorHandler = function (
error: Override<
AxiosError<IResponseData>,
{ config: InternalAxiosRequestConfig & ICustomConfig }
>,
) {
if (error.response) { if (error.response) {
const msg = error.response.data const msg = error.response.data
? error.response.data.message || error.message || error.response.data ? error.response.data.message || error.message || error.response.data
@ -38,6 +53,10 @@ const errorHandler = function (error: AxiosError) {
history.push('/login'); history.push('/login');
} }
} else { } else {
if (typeof error.config?.onError === 'function') {
return error.config?.onError(error.response);
}
message.error({ message.error({
content: msg, content: msg,
style: { maxWidth: 500, margin: '0 auto' }, style: { maxWidth: 500, margin: '0 auto' },
@ -105,21 +124,21 @@ export const request = _request as Override<
{ {
get<T = IResponseData, D = any>( get<T = IResponseData, D = any>(
url: string, url: string,
config?: AxiosRequestConfig<D>, config?: AxiosRequestConfig<D> & ICustomConfig,
): Promise<T>; ): Promise<T>;
delete<T = IResponseData, D = any>( delete<T = IResponseData, D = any>(
url: string, url: string,
config?: AxiosRequestConfig<D>, config?: AxiosRequestConfig<D> & ICustomConfig,
): Promise<T>; ): Promise<T>;
post<T = IResponseData, D = any>( post<T = IResponseData, D = any>(
url: string, url: string,
data?: D, data?: D,
config?: AxiosRequestConfig<D>, config?: AxiosRequestConfig<D> & ICustomConfig,
): Promise<T>; ): Promise<T>;
put<T = IResponseData, D = any>( put<T = IResponseData, D = any>(
url: string, url: string,
data?: D, data?: D,
config?: AxiosRequestConfig<D>, config?: AxiosRequestConfig<D> & ICustomConfig,
): Promise<T>; ): Promise<T>;
} }
>; >;