Rocket.Chat.ReactNative/app/views/DiscussionBoard/helpers.tsx

137 lines
3.7 KiB
TypeScript

import moment from 'moment';
import { sendFileMessage, sendMessage } from '../../lib/methods';
import { Services } from '../../lib/services';
import { TAnyMessageModel } from '../../definitions';
import { themeColors } from '../../lib/constants';
export const getColor = (color: string) => {
const colorRegex = /^(#([A-Fa-f0-9]{3}){1,2}|(rgb|hsl)a?\([-.\d\s%,]+\))$/i;
const isColor = colorRegex.test(color);
if (isColor) {
return color;
}
if (themeColors[color]) {
return themeColors[color];
}
};
export const getIcon = (icon: string) => {
let imagePath;
switch (icon) {
// case 'covid':
// imagePath = require('../../static/images/discussionboard/covid.png');
// break;
// case 'diet':
// imagePath = require('../../static/images/discussionboard/diet.png');
// break;
// case 'exercising':
// imagePath = require('../../static/images/discussionboard/exercising.png');
// break;
// case 'insulin':
// imagePath = require('../../static/images/discussionboard/insulin.png');
// break;
// case 'mdi_users':
// imagePath = require('../../static/images/discussionboard/mdi_users.png');
// break;
// case 'syringe':
// imagePath = require('../../static/images/discussionboard/syringe.png');
// break;
case 'solidStar':
imagePath = require(`../../static/images/discussionboard/star_solid.png`);
break;
case 'outlineStar':
imagePath = require(`../../static/images/discussionboard/star_outline.png`);
break;
case 'solidSave':
imagePath = require('../../static/images/discussionboard/save_solid.png');
break;
case 'outlineSave':
imagePath = require('../../static/images/discussionboard/save.png');
break;
case 'like':
imagePath = require('../../static/images/discussionboard/like.png');
break;
case 'comment':
imagePath = require('../../static/images/discussionboard/comment.png');
break;
case 'arrowRight':
imagePath = require('../../static/images/discussionboard/arrow_right.png');
break;
case 'arrowLeft':
imagePath = require('../../static/images/discussionboard/arrow_left.png');
break;
case 'discussionBoardIcon':
imagePath = require('../../static/images/discussion-solid.png');
break;
case 'arrowDown':
imagePath = require('../../static/images/discussionboard/arrow_down.png');
break;
case 'selectImage':
imagePath = require('../../static/images/discussionboard/image_picker.png');
break;
case 'more':
imagePath = require('../../static/images/discussionboard/more.png');
break;
case 'send':
imagePath = require('../../static/images/discussionboard/send.png');
break;
default:
imagePath = require('../../static/images/discussionboard/image_picker.png');
break;
}
return imagePath;
};
export const handleStar = async (message: TAnyMessageModel, callback?: () => void) => {
try {
await Services.toggleStarMessage(message.id, message.starred as boolean); // TODO: reevaluate `message.starred` type on IMessage
if (callback) {
callback();
}
} catch (e) {
console.log('e', e);
}
};
export const handleSendMessage = async ({
message,
tshow,
rid,
callBack,
hasAttachment,
fileInfo,
server,
user
}: {
message: string;
tshow?: boolean;
rid: string;
callBack: () => void;
hasAttachment?: boolean;
fileInfo?: any;
server?: string;
user?: any;
}) => {
if (hasAttachment) {
await sendFileMessage(rid, fileInfo, undefined, server, user);
if (callBack) {
callBack();
}
} else {
sendMessage(rid, message, undefined, user, tshow).then(() => {
if (callBack) {
callBack();
}
});
}
};
export const getDate = (date: string, format?: string) => {
const formattedDate = moment(date).format(format ?? 'MMMM D, YYYY - h:MMa');
return moment(date) ? formattedDate : '';
};