@cometchat/chat-uikit-react-native
Version:
Ready-to-use Chat UI Components for React Native
62 lines (48 loc) • 1.83 kB
text/typescript
import { CometChat } from "@cometchat/chat-sdk-react-native";
const wordBoundary = {
start: `(?:^|:|;|'|"|,|{|}|\\.|\\s|\\!|\\?|\\(|\\)|\\[|\\]|\\*)`,
end: `(?=$|:|;|'|"|,|{|}|\\.|\\s|\\!|\\?|\\(|\\)|\\[|\\]|\\*)`,
};
export const makeExtentionCall = (
extentionType: string,
callMethod: string,
extentionAction: string,
parameters: any
) => {
return CometChat.callExtension(extentionType, callMethod, extentionAction, parameters);
};
export const messageStatus = Object.freeze({
inprogress: "inprogress",
success: "success",
error: "error",
});
export const emailPattern =
wordBoundary.start + `[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}` + wordBoundary.end;
export const urlPattern =
wordBoundary.start +
`((https?://|www\\.|pic\\.)[-\\w;/?:@&=+$\\|\\_.!~*\\|'()\\[\\]%#,☺]+[\\w/#](\\(\\))?)` +
wordBoundary.end;
export const phoneNumPattern =
wordBoundary.start +
`(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)` +
wordBoundary.end;
export const ID = () => {
// Math.random should be unique because of its seeding algorithm.
// Convert it to base 36 (numbers + letters), and grab the first 9 characters
// after the decimal.
return "_" + Math.random().toString(36).substr(2, 9);
};
export const getUnixTimestamp = () => {
return Math.round(+new Date() / 1000);
};
export const getUnixTimestampInMilliseconds = () => {
return Math.round(+new Date());
};
export const formatBytes = (bytes: number, decimals = 2) => {
if (bytes === 0) return "0 Bytes";
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
};