mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import { formatDate } from '@vueuse/shared'
|
|
export const isNullOrBlank = (string: string | null | undefined | number) =>
|
|
string == null ||
|
|
(string as string).length === 0 ||
|
|
/^\s+$/.test(string as string)
|
|
|
|
export const isLegadoUrl = (/** @type {string} */ url: string) =>
|
|
/,\s*\{/.test(url) ||
|
|
!(
|
|
url.startsWith('http') ||
|
|
url.startsWith('data:') ||
|
|
url.startsWith('blob:')
|
|
)
|
|
|
|
/**
|
|
* 验证输入的URL是否符合阅读后端地址规则
|
|
* @param allowedProtocols 允许的协议,默认`["https:", "http:"]`
|
|
*/
|
|
export const validatorHttpUrl = (
|
|
http_url: string | URL,
|
|
allowedProtocols: string[] = ['https:', 'http:'],
|
|
) => {
|
|
try {
|
|
const url = new URL(http_url)
|
|
const { protocol } = url
|
|
if (!allowedProtocols.includes(protocol))
|
|
throw new Error(
|
|
`Expected protocol ${allowedProtocols.join('/')}, but ${protocol}`,
|
|
)
|
|
return true
|
|
} catch {
|
|
return false
|
|
}
|
|
}
|
|
|
|
export const dateFormat = (/** @type {number} */ t: number) => {
|
|
const time = new Date().getTime()
|
|
const offset = Math.floor((time - t) / 1000)
|
|
let str = ''
|
|
|
|
if (offset <= 30) {
|
|
str = '刚刚'
|
|
} else if (offset < 60) {
|
|
str = offset + '秒前'
|
|
} else if (offset < 3600) {
|
|
str = Math.floor(offset / 60) + '分钟前'
|
|
} else if (offset < 86400) {
|
|
str = Math.floor(offset / 3600) + '小时前'
|
|
} else if (offset < 2592000) {
|
|
str = Math.floor(offset / 86400) + '天前'
|
|
} else {
|
|
str = formatDate(new Date(t), 'YYYY-MM-DD')
|
|
}
|
|
return str
|
|
}
|