mirror of
https://github.com/idanoo/autobrr
synced 2025-07-26 10:19:13 +00:00

* feat(torznab): initial impl * feat: torznab processing * feat: torznab more scheduling * feat: feeds web * feat(feeds): create on indexer create * feat(feeds): update migration * feat(feeds): restart on update * feat(feeds): set cron schedule * feat(feeds): use basic empty state * chore: remove duplicate migrations * feat: parse release size from torznab * chore: cleanup unused code
85 lines
2.1 KiB
TypeScript
85 lines
2.1 KiB
TypeScript
import { formatDistanceToNowStrict, formatISO9075 } from "date-fns";
|
|
|
|
// sleep for x ms
|
|
export function sleep(ms: number) {
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
}
|
|
|
|
// get baseUrl sent from server rendered index template
|
|
export function baseUrl() {
|
|
let baseUrl = ""
|
|
if (window.APP.baseUrl) {
|
|
if (window.APP.baseUrl === "/") {
|
|
baseUrl = "/"
|
|
} else if (window.APP.baseUrl === "{{.BaseUrl}}") {
|
|
baseUrl = "/"
|
|
} else if (window.APP.baseUrl === "/autobrr/") {
|
|
baseUrl = "/autobrr/"
|
|
} else {
|
|
baseUrl = window.APP.baseUrl
|
|
}
|
|
}
|
|
|
|
return baseUrl
|
|
}
|
|
|
|
// get sseBaseUrl for SSE
|
|
export function sseBaseUrl() {
|
|
if (process.env.NODE_ENV === "development")
|
|
return `http://localhost:7474/`;
|
|
|
|
return `${window.location.origin}${baseUrl()}`;
|
|
}
|
|
|
|
export function buildPath(...args: string[]): string {
|
|
const [first] = args;
|
|
const firstTrimmed = first.trim();
|
|
const result = args
|
|
.map((part) => part.trim())
|
|
.map((part, i) => {
|
|
if (i === 0) {
|
|
return part.replace(/[/]*$/g, '');
|
|
} else {
|
|
return part.replace(/(^[/]*|[/]*$)/g, '');
|
|
}
|
|
})
|
|
.filter((x) => x.length)
|
|
.join('/');
|
|
|
|
return firstTrimmed === '/' ? `/${result}` : result;
|
|
}
|
|
|
|
export function classNames(...classes: string[]) {
|
|
return classes.filter(Boolean).join(' ')
|
|
}
|
|
|
|
// column widths for inputs etc
|
|
export type COL_WIDTHS = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
|
|
// simplify date
|
|
export function simplifyDate(date: string) {
|
|
if (date !== "0001-01-01T00:00:00Z") {
|
|
return formatISO9075(new Date(date))
|
|
}
|
|
return "n/a"
|
|
}
|
|
|
|
// if empty date show as n/a
|
|
export function IsEmptyDate(date: string) {
|
|
if (date !== "0001-01-01T00:00:00Z") {
|
|
return formatDistanceToNowStrict(
|
|
new Date(date),
|
|
{ addSuffix: true }
|
|
)
|
|
}
|
|
return "n/a"
|
|
}
|
|
|
|
export function slugify(str: string) {
|
|
return str
|
|
.normalize('NFKD')
|
|
.toLowerCase()
|
|
.replace(/[^\w\s-]/g, '')
|
|
.trim()
|
|
.replace(/[-\s]+/g, '-');
|
|
}
|