Files
rpg-companion-sillytavern/src/utils/avatars.js
T
2025-12-05 22:43:56 +01:00

47 lines
1.6 KiB
JavaScript

/**
* Avatar Utilities Module
* Handles safe avatar/thumbnail URL generation with error handling
*/
import { getThumbnailUrl } from '../../../../../../script.js';
/**
* Safely retrieves a thumbnail URL from SillyTavern's API with error handling.
* Returns null instead of throwing errors to prevent extension crashes.
*
* @param {string} type - Type of thumbnail ('avatar' or 'persona')
* @param {string} filename - Filename of the avatar/persona
* @returns {string|null} Thumbnail URL or null if unavailable/error
*/
export function getSafeThumbnailUrl(type, filename) {
// Return null if no filename provided
if (!filename || filename === 'none') {
// console.log(`[RPG Companion] No valid filename provided for ${type} thumbnail`);
return null;
}
try {
// Attempt to get thumbnail URL from SillyTavern API
const url = getThumbnailUrl(type, filename);
// Validate that we got a string back
if (typeof url !== 'string' || url.trim() === '') {
console.warn(`[RPG Companion] getThumbnailUrl returned invalid result for ${type}:`, filename);
return null;
}
// console.log(`[RPG Companion] Successfully generated ${type} thumbnail URL for: ${filename}`);
return url;
} catch (error) {
// Log detailed error information for debugging
console.error(`[RPG Companion] Failed to get ${type} thumbnail for "${filename}":`, error);
console.error('[RPG Companion] Error details:', {
type,
filename,
errorMessage: error.message,
errorStack: error.stack
});
return null;
}
}