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;
}