mirror of
https://github.com/Shik3i/KoalaSync.git
synced 2026-07-26 12:08:15 +00:00
52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
import { extractEpisodeId } from './episode-utils.js';
|
|
|
|
export const TITLE_PRIVACY_MODES = Object.freeze({
|
|
FULL: 'full',
|
|
EPISODE: 'episode',
|
|
HIDDEN: 'hidden'
|
|
});
|
|
|
|
export function normalizeTitlePrivacyMode(mode) {
|
|
return Object.values(TITLE_PRIVACY_MODES).includes(mode)
|
|
? mode
|
|
: TITLE_PRIVACY_MODES.FULL;
|
|
}
|
|
|
|
export function normalizeSendTabTitle(sendTabTitle, legacyMode = TITLE_PRIVACY_MODES.FULL) {
|
|
if (typeof sendTabTitle === 'boolean') return sendTabTitle;
|
|
return normalizeTitlePrivacyMode(legacyMode) === TITLE_PRIVACY_MODES.FULL;
|
|
}
|
|
|
|
export function normalizeTabTitle(title) {
|
|
if (typeof title !== 'string') return null;
|
|
const normalized = title.replace(/^\s*(?:\(\d+\+?\)|\[\d+\+?\])\s+/, '').trim();
|
|
return normalized.length > 0 ? normalized : null;
|
|
}
|
|
|
|
export function sanitizeTabTitle(title, sendTabTitle) {
|
|
if (!sendTabTitle) return null;
|
|
return normalizeTabTitle(title);
|
|
}
|
|
|
|
export function sanitizeSharedTitle(title, mode) {
|
|
const normalizedMode = normalizeTitlePrivacyMode(mode);
|
|
if (normalizedMode === TITLE_PRIVACY_MODES.HIDDEN) return null;
|
|
|
|
if (typeof title !== 'string' || title.length === 0) return null;
|
|
if (normalizedMode === TITLE_PRIVACY_MODES.EPISODE) {
|
|
return extractEpisodeId(title) || null;
|
|
}
|
|
return title;
|
|
}
|
|
|
|
export function applyTitlePrivacyToPayload(payload, mode, keys = ['mediaTitle', 'expectedTitle', 'title']) {
|
|
const source = payload && typeof payload === 'object' ? payload : {};
|
|
const next = { ...source };
|
|
keys.forEach(key => {
|
|
if (Object.prototype.hasOwnProperty.call(next, key)) {
|
|
next[key] = sanitizeSharedTitle(next[key], mode);
|
|
}
|
|
});
|
|
return next;
|
|
}
|