refactor: Clean lint errors and organise files
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
/* eslint-disable complexity */
|
||||
import { Router } from 'express';
|
||||
import { getKlipyApiKey, hasKlipyApiKey } from '../config/variables';
|
||||
|
||||
@@ -47,6 +46,11 @@ interface KlipyApiResponse {
|
||||
};
|
||||
}
|
||||
|
||||
interface ResolvedGifMedia {
|
||||
previewMeta: NormalizedMediaMeta | null;
|
||||
sourceMeta: NormalizedMediaMeta;
|
||||
}
|
||||
|
||||
function pickFirst<T>(...values: (T | null | undefined)[]): T | undefined {
|
||||
for (const value of values) {
|
||||
if (value != null)
|
||||
@@ -130,33 +134,49 @@ function extractKlipyResponseData(payload: unknown): { items: unknown[]; hasNext
|
||||
};
|
||||
}
|
||||
|
||||
function resolveGifMedia(file?: KlipyGifVariants): ResolvedGifMedia | null {
|
||||
const previewVariant = pickFirst(file?.md, file?.sm, file?.xs, file?.hd);
|
||||
const sourceVariant = pickFirst(file?.hd, file?.md, file?.sm, file?.xs);
|
||||
const previewMeta = pickGifMeta(previewVariant);
|
||||
const sourceMeta = pickGifMeta(sourceVariant) ?? previewMeta;
|
||||
|
||||
if (!sourceMeta?.url)
|
||||
return null;
|
||||
|
||||
return {
|
||||
previewMeta,
|
||||
sourceMeta
|
||||
};
|
||||
}
|
||||
|
||||
function resolveGifSlug(gifItem: KlipyGifItem): string | undefined {
|
||||
return sanitizeString(gifItem.slug) ?? sanitizeString(gifItem.id);
|
||||
}
|
||||
|
||||
function normalizeGifItem(item: unknown): NormalizedKlipyGif | null {
|
||||
if (!item || typeof item !== 'object')
|
||||
return null;
|
||||
|
||||
const gifItem = item as KlipyGifItem;
|
||||
const resolvedMedia = resolveGifMedia(gifItem.file);
|
||||
const slug = resolveGifSlug(gifItem);
|
||||
|
||||
if (gifItem.type === 'ad')
|
||||
return null;
|
||||
|
||||
const lowVariant = pickFirst(gifItem.file?.md, gifItem.file?.sm, gifItem.file?.xs, gifItem.file?.hd);
|
||||
const highVariant = pickFirst(gifItem.file?.hd, gifItem.file?.md, gifItem.file?.sm, gifItem.file?.xs);
|
||||
const lowMeta = pickGifMeta(lowVariant);
|
||||
const highMeta = pickGifMeta(highVariant);
|
||||
const selectedMeta = highMeta ?? lowMeta;
|
||||
const slug = sanitizeString(gifItem.slug) ?? sanitizeString(gifItem.id);
|
||||
|
||||
if (!slug || !selectedMeta?.url)
|
||||
if (!slug || !resolvedMedia)
|
||||
return null;
|
||||
|
||||
const { previewMeta, sourceMeta } = resolvedMedia;
|
||||
|
||||
return {
|
||||
id: slug,
|
||||
slug,
|
||||
title: sanitizeString(gifItem.title),
|
||||
url: selectedMeta.url,
|
||||
previewUrl: lowMeta?.url ?? selectedMeta.url,
|
||||
width: selectedMeta.width ?? lowMeta?.width ?? 0,
|
||||
height: selectedMeta.height ?? lowMeta?.height ?? 0
|
||||
url: sourceMeta.url,
|
||||
previewUrl: previewMeta?.url ?? sourceMeta.url,
|
||||
width: sourceMeta.width ?? previewMeta?.width ?? 0,
|
||||
height: sourceMeta.height ?? previewMeta?.height ?? 0
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user