forked from github/plane
1e152c666c
* chore: moved app & space from apps to root * chore: modified workspace configuration * chore: modified dockerfiles for space and web * chore: modified icons for space * feat: updated files for new svg icons supported by next-images * chore: added /spaces base path for next * chore: added compose config for space * chore: updated husky configuration * chore: updated workflows for new configuration * chore: changed app name to web * fix: resolved build errors with web * chore: reset file tracing root for both projects * chore: added nginx config for deploy * fix: eslint and tsconfig settings for space app * husky setup fixes based on new dir * eslint fixes * prettier formatting --------- Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
57 lines
1.1 KiB
TypeScript
57 lines
1.1 KiB
TypeScript
export const getRandomEmoji = () => {
|
|
const emojis = [
|
|
"8986",
|
|
"9200",
|
|
"128204",
|
|
"127773",
|
|
"127891",
|
|
"127947",
|
|
"128076",
|
|
"128077",
|
|
"128187",
|
|
"128188",
|
|
"128512",
|
|
"128522",
|
|
"128578",
|
|
];
|
|
|
|
return emojis[Math.floor(Math.random() * emojis.length)];
|
|
};
|
|
|
|
export const renderEmoji = (
|
|
emoji:
|
|
| string
|
|
| {
|
|
name: string;
|
|
color: string;
|
|
}
|
|
) => {
|
|
if (!emoji) return;
|
|
|
|
if (typeof emoji === "object")
|
|
return (
|
|
<span style={{ color: emoji.color }} className="material-symbols-rounded text-lg">
|
|
{emoji.name}
|
|
</span>
|
|
);
|
|
else return isNaN(parseInt(emoji)) ? emoji : String.fromCodePoint(parseInt(emoji));
|
|
};
|
|
|
|
export const groupReactions: (reactions: any[], key: string) => { [key: string]: any[] } = (
|
|
reactions: any,
|
|
key: string
|
|
) => {
|
|
const groupedReactions = reactions.reduce(
|
|
(acc: any, reaction: any) => {
|
|
if (!acc[reaction[key]]) {
|
|
acc[reaction[key]] = [];
|
|
}
|
|
acc[reaction[key]].push(reaction);
|
|
return acc;
|
|
},
|
|
{} as { [key: string]: any[] }
|
|
);
|
|
|
|
return groupedReactions;
|
|
};
|