import reactStringReplace from 'react-string-replace'; import { Emoji } from './Emoji'; import { SERVER_BASE_URL } from './App'; /*function reactStringReplace(pcs, re, fn, limit = 10) { if (!(pcs instanceof Array)) pcs = [pcs]; return pcs.map(str => { if (typeof str != "string") return str; var split = str.split(re); for (var i = 1; i < split.length && ((i + 1) / 2) < limit; i += 2) { split[i] = fn(split[i]); } return split; }).flat(); }*/ export function processMessageContent(content) { if (!content) return; if (content.length > 5000) { content = content.substring(0, 5000) + `[${content.length - 5000} chars truncated]`; } // youtube content = reactStringReplace(content, /https?:\/\/(?:(?:www.)?youtube.com|youtu.be)\/(?:watch\?v=)?([a-zA-Z0-9-_]{11})/gi, id => ); // hyperlinks content = reactStringReplace(content, /(https?:\/\/\S+)/gi, link => {link} ); // emoji content = reactStringReplace(content, /:([a-z0-9-_]+):/gi, emoji => ); // files content = reactStringReplace(content, /\[img:(\S+)\]/gi, x => { var url = SERVER_BASE_URL + "/objects/" + x; return ; }); content = reactStringReplace(content, /\[video:(\S+)\]/gi, x => { var url = SERVER_BASE_URL + "/objects/" + x; return ; }); content = reactStringReplace(content, /\[audio:(\S+)\]/gi, x => { var url = SERVER_BASE_URL + "/objects/" + x; return ; }); content = reactStringReplace(content, /\[file:(\S+)\]/gi, x => { var url = SERVER_BASE_URL + "/objects/" + x; var filename = x.split('/').pop() || x; return {filename}; }); return content; }