UNPKG

@acrsolutions/chat-components

Version:

Un set di componenti per la creazione di un'applicazione di messaggistica

101 lines (100 loc) 3.15 kB
/** * Cerca una porzione di stringa in una stringa, ignorando il case * @param partialString la stringa da cercare * @param entireString la stringa in cui cercare * @returns true se la stringa parziale è inclusa nella stringa intera, false altrimenti */ export function includesIgnoreCase(partialString = '', entireString = '') { return entireString.toLowerCase().includes(partialString.toLowerCase()); } /** * Prende un oggetto e restituisce un array delle proprie chiavi tipizzate. * @param obj L'oggetto di cui si vogliono le chiavi. * @returns Un array di chiavi tipizzate dell'oggetto passato come parametro. */ export function getTypedObjectKeys(obj) { if (obj == null) return []; return Object.keys(obj); } export const MessageTypes = { Unknown: 'unknown', Text: 'text', Location: 'location', Contacts: 'contacts', Interactive: 'interactive', Image: 'image', Audio: 'audio', Document: 'document', Reaction: 'reaction', Template: 'template', Video: 'video', Button: 'button', }; export const MediaMessageTypes = [ MessageTypes.Image, MessageTypes.Audio, MessageTypes.Video, MessageTypes.Document, ]; // Definizione delle categorie // Mappa delle estensioni dei file alle categorie const extToCategoryMap = new Map([ // Text ['.txt', MessageTypes.Text], ['.html', MessageTypes.Text], ['.json', MessageTypes.Text], ['.css', MessageTypes.Text], ['.js', MessageTypes.Text], // Images ['.jpg', MessageTypes.Image], ['.jpeg', MessageTypes.Image], ['.png', MessageTypes.Image], ['.gif', MessageTypes.Image], ['.webp', MessageTypes.Image], ['.svg', MessageTypes.Image], // Audio ['.mp3', MessageTypes.Audio], ['.wav', MessageTypes.Audio], ['.ogg', MessageTypes.Audio], // Video ['.mp4', MessageTypes.Video], ['.webm', MessageTypes.Video], ['.ogg', MessageTypes.Video], // Documents ['.pdf', MessageTypes.Document], ['.doc', MessageTypes.Document], ['.docx', MessageTypes.Document], ['.xls', MessageTypes.Document], ['.xlsx', MessageTypes.Document], ]); // Funzione per ottenere la categoria in base all'estensione del file export const getCategoryFromExtension = (fileName) => { // Estrai l'estensione del file const extension = fileName.slice(fileName.lastIndexOf('.')).toLowerCase(); // Restituisci la categoria associata all'estensione const category = extToCategoryMap.get(extension); if (category !== MessageTypes.Image && category !== MessageTypes.Video && category !== MessageTypes.Audio && category !== MessageTypes.Document) { return null; } return category; }; export function toPrintableFullDate(date) { if (date == null) return 'Nessuna data'; return (new Date(date).toLocaleDateString() + ' ' + new Date(date).toLocaleTimeString()); } export function buildSentTime(sentDate) { const sentTime = sentDate.split('T')[1]; if (sentTime.length > 5) { return sentTime.substring(0, 5); } else { return sentTime; } }