112 lines
2.8 KiB
TypeScript
112 lines
2.8 KiB
TypeScript
/*
|
|
* Copyright 2025 coze-dev Authors
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import dayjs from 'dayjs';
|
|
import { I18n, type I18nKeysNoOptionsType } from '@coze-arch/i18n';
|
|
|
|
const MAX_EXPIRATION_DAYS = 30;
|
|
// 1-30天有效期
|
|
export const disabledDate = (date?: Date) => {
|
|
const today = dayjs().startOf('day'); // 当天的开始时间
|
|
const thirtyDaysLater = today.add(MAX_EXPIRATION_DAYS, 'day'); // 30天后的日期
|
|
|
|
return (
|
|
dayjs(date).isBefore(today, 'day') ||
|
|
dayjs(date).isSame(today, 'day') ||
|
|
dayjs(date).isAfter(thirtyDaysLater, 'day')
|
|
);
|
|
};
|
|
|
|
export enum ExpirationDate {
|
|
ONE = '1',
|
|
THIRTY = '30',
|
|
CUSTOMIZE = 'customize',
|
|
}
|
|
enum ServerTimeValue {
|
|
PERMANENT = -1,
|
|
NOT_USE = -1,
|
|
}
|
|
|
|
export const getExpirationOptions = () => {
|
|
const dataOptionsList = [
|
|
{
|
|
label: '1天',
|
|
value: ExpirationDate.ONE,
|
|
},
|
|
{
|
|
label: '30天',
|
|
value: ExpirationDate.THIRTY,
|
|
},
|
|
{
|
|
label: I18n.t('customize_key_1'),
|
|
value: ExpirationDate.CUSTOMIZE,
|
|
},
|
|
];
|
|
const newOptions = dataOptionsList.map(item => {
|
|
const { value } = item;
|
|
if (value === ExpirationDate.CUSTOMIZE) {
|
|
return item;
|
|
}
|
|
const currentDate = dayjs();
|
|
const futureDate = currentDate.add(Number(value), 'day');
|
|
const date = futureDate.format('YYYY-MM-DD');
|
|
return {
|
|
label: I18n.t('expired_time_days_1' as I18nKeysNoOptionsType, {
|
|
num: Number(value),
|
|
date,
|
|
}),
|
|
value,
|
|
};
|
|
});
|
|
return newOptions;
|
|
};
|
|
|
|
export const getExpireAt = (d: Date) => {
|
|
const h = 23;
|
|
const m = 59;
|
|
const s = 59;
|
|
const intDate = dayjs(d)
|
|
.add(h, 'hour')
|
|
.add(m, 'minute')
|
|
.add(s, 'second')
|
|
.unix();
|
|
return intDate;
|
|
};
|
|
|
|
export const getDetailTime = (d: number) => {
|
|
if (d === ServerTimeValue.NOT_USE) {
|
|
return '-';
|
|
}
|
|
const showDate = dayjs.unix(d).format('YYYY-MM-DD HH:mm:ss');
|
|
return showDate;
|
|
};
|
|
|
|
export const getExpirationTime = (d: number) => {
|
|
if (d === ServerTimeValue.PERMANENT) {
|
|
return I18n.t('api_status_permanent_1');
|
|
}
|
|
const showDate = dayjs.unix(d).format('YYYY-MM-DD');
|
|
return showDate;
|
|
};
|
|
|
|
export const getStatus = (d: number) => {
|
|
if (d === ServerTimeValue.PERMANENT) {
|
|
return true;
|
|
}
|
|
const current = dayjs().unix();
|
|
return d >= current;
|
|
};
|