123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import { useState } from "react";
- import { screenWidth } from "./metrics";
- export const PAGINATE_BY = 5
- /*
- Executes before Render
- */
- export const useConstructor = (callBack = () => { }) => {
- const [hasBeenCalled, setHasBeenCalled] = useState(false);
- if (hasBeenCalled) return;
- callBack();
- setHasBeenCalled(true);
- }
- const _MS_PER_SECOND = 1000;
- const _MS_PER_MINUTE = _MS_PER_SECOND * 60;
- const _MS_PER_HOUR = _MS_PER_MINUTE * 60;
- const _MS_PER_DAY = _MS_PER_HOUR * 24;
- const _MS_PER_MONTH = _MS_PER_DAY * 31;
- const _MS_PER_YEAR = _MS_PER_MONTH * 12;
- export const capitalize = (str) => str.charAt(0).toUpperCase() + str.substring(1, str.length).toLowerCase()
- export const getDifferenceInDates = (startDate, endDate) => {
- var diff = Math.floor(startDate.getTime() - endDate.getTime());
- return {
- "year": Math.floor(diff / _MS_PER_YEAR),
- "month": Math.floor(diff / _MS_PER_MONTH),
- "day": Math.floor(diff / _MS_PER_DAY),
- "hour": Math.floor(diff / _MS_PER_HOUR),
- "minute": Math.floor(diff / _MS_PER_MINUTE),
- "second": Math.floor(diff / _MS_PER_SECOND),
- }
- }
- export const getTimestamp = (iso_date_str) => {
- let diffObj = getDifferenceInDates(new Date(), new Date(iso_date_str))
- var result = "Timestamp Not Found"
- for (const key of Object.keys(diffObj)) {
- if (diffObj[key] > 0) {
- result = `${diffObj[key]} ${capitalize(key)}${ diffObj[key] > 1 ? "s" : ""} ago`
- break
- }
- }
- return result
- }
- const _getMonth = (index) => {
- const months = {
- 0: "January",
- 1: "Febraury",
- 2: "March",
- 3: "April",
- 4: "May",
- 5: "June",
- 6: "July",
- 7: "August",
- 8: "September",
- 9: "October",
- 10: "November",
- 11: "December"
- }
- if (Object.hasOwn(months, index)) {
- return months[index]
- } else {
- return "Month Not Found"
- }
- }
- export const getDate = (iso_date_str) => {
- let date = new Date(iso_date_str)
- return `${date.getDate()} ${_getMonth(date.getMonth())} ${date.getFullYear()}`
- }
- const MOBILE_SCREEN_BREAKPOINT = 480;
- const TABLET_SCREEN_BREAKPOINT = 768;
- const LARGE_SCREEN_BREAKPOINT = 1180;
- export const MOBILE_SCREEN = "Mobile"
- export const TABLET_SCREEN = "Tablet"
- export const DESKTOP_SCREEN = "Desktop"
- export const getScreenType = () => {
- let screenType;
- if (screenWidth <= MOBILE_SCREEN_BREAKPOINT) {
- screenType = MOBILE_SCREEN
- }else if(screenWidth <= TABLET_SCREEN_BREAKPOINT){
- screenType = TABLET_SCREEN
- }else {
- screenType = DESKTOP_SCREEN
- }
- return screenType
- }
- export const validateEmail = (email) => {
- const emailRegex = "^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$"
- return String(email).match(emailRegex)
- }
- export const navigateToArticle = (navigation,article_id,article_slug) => {
- navigation.push("NewsDetailPage",{slug: article_slug, id: article_id})
- navigation.navigate("NewsDetailPage",{slug: article_slug, id: article_id})
- }
- export const navigateToListViewPage = (navigation,topic_type,topic) => {
- navigation.navigate("MainNav",{ screen : "NewsListPage", params :{type: topic_type, title: topic }})
- }
|