at the end of the day, it was inevitable
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
import moment from 'moment';
|
||||
import { cloneDeep } from 'lodash';
|
||||
import axios from 'axios';
|
||||
import Cookies from 'cookies-js';
|
||||
|
||||
// append scripts in body
|
||||
export const appendScriptLink = (sources) => {
|
||||
sources.map((src) => {
|
||||
const script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.setAttribute('src', src);
|
||||
script.setAttribute('async', true);
|
||||
document.body.appendChild(script);
|
||||
});
|
||||
};
|
||||
|
||||
// load script into body part
|
||||
export const loadScript = (source) => {
|
||||
const s = document.createElement('script');
|
||||
s.type = 'text/javascript';
|
||||
s.async = true;
|
||||
s.innerHTML = source;
|
||||
document.body.appendChild(s);
|
||||
};
|
||||
|
||||
// set document element value
|
||||
export const setDocumentData = (tag, value) => {
|
||||
if (tag === 'title') {
|
||||
document.title = value
|
||||
? `${value} | SOCIALHOSE.IO App`
|
||||
: 'Social Listening Platform | Social Analytics | SOCIALHOSE.IO App';
|
||||
}
|
||||
};
|
||||
|
||||
// convert UTC date to Local date
|
||||
export const convertUTCtoLocal = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
|
||||
if (!date) return '';
|
||||
const utcDate = moment.utc(date).format(); //is used to consider input as UTC if timezone offset is not passed
|
||||
return moment(utcDate).format(format);
|
||||
};
|
||||
|
||||
// convert Local date to UTC date
|
||||
export const convertlocaltoUTC = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
|
||||
if (!date) return '';
|
||||
return moment.utc(date).format(format);
|
||||
};
|
||||
|
||||
// get date
|
||||
export const getDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
|
||||
return !date ? moment().format(format) : moment(date).format(format);
|
||||
};
|
||||
|
||||
export const getMomentObject = (date) => {
|
||||
return date ? (moment.isMoment(date) ? date : moment(date)) : null;
|
||||
};
|
||||
|
||||
export const getQueryParams = (obj) => {
|
||||
if (!obj) {
|
||||
return null;
|
||||
}
|
||||
const { page, pageSize = 10, sorted, searchQuery = undefined } = obj;
|
||||
const params = {
|
||||
page: page + 1,
|
||||
limit: pageSize,
|
||||
query: searchQuery
|
||||
};
|
||||
if (sorted && sorted.length) {
|
||||
const sortedField = sorted[0];
|
||||
const sort = {
|
||||
field: sortedField.id,
|
||||
direction: sortedField.desc ? 'desc' : 'asc'
|
||||
};
|
||||
params['sort'] = sort;
|
||||
}
|
||||
return params;
|
||||
};
|
||||
|
||||
export function removeHttpsUrl(url) {
|
||||
return !url ? '' : url.replace(/(^\w+:|^)\/\//, '');
|
||||
}
|
||||
|
||||
export function capOnlyFirstLetter(string) {
|
||||
// lodash: capitalize
|
||||
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
|
||||
}
|
||||
|
||||
export function capFirstLetter(string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
|
||||
export function getValidHttpUrl(string) {
|
||||
let url;
|
||||
|
||||
try {
|
||||
url = new URL(string);
|
||||
} catch (_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
url.protocol = 'https:';
|
||||
return url.toString();
|
||||
}
|
||||
|
||||
export function getArray(obj, key = 'name', value = 'value') {
|
||||
return Object.entries(obj).map((v) => ({
|
||||
[key]: v[0],
|
||||
[value]: v[1]
|
||||
}));
|
||||
}
|
||||
|
||||
// get title for source index table
|
||||
export function getTitle(prevTitle) {
|
||||
if (prevTitle && prevTitle.replace(/!+/g, '').trim().length > 0) {
|
||||
return prevTitle;
|
||||
}
|
||||
|
||||
return '[No Name]';
|
||||
}
|
||||
|
||||
export function abbreviateNumber(num) {
|
||||
if (num >= 1000000000) {
|
||||
return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
|
||||
}
|
||||
if (num >= 1000000) {
|
||||
return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
|
||||
}
|
||||
if (num >= 1000) {
|
||||
return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
export function notNullAndUnd(value) {
|
||||
return value !== null && value !== undefined;
|
||||
}
|
||||
|
||||
export function validateForm(form, errors, handleValidation) {
|
||||
let failed;
|
||||
for (let val in errors) {
|
||||
const fieldError = errors[val];
|
||||
if (fieldError) {
|
||||
failed = true;
|
||||
} else if (fieldError === null && !form[val] && form[val] !== 0) {
|
||||
failed = true;
|
||||
handleValidation(val, true);
|
||||
}
|
||||
}
|
||||
if (failed) {
|
||||
return false;
|
||||
} else {
|
||||
return cloneDeep(form);
|
||||
}
|
||||
}
|
||||
|
||||
// get IP
|
||||
export function getIP() {
|
||||
return localStorage.getItem('ip');
|
||||
}
|
||||
|
||||
export const setIP = async () => {
|
||||
try {
|
||||
const res = await axios.get('https://api.ipify.org/?format=json');
|
||||
res.data && res.data.ip && localStorage.setItem('ip', res.data.ip);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
|
||||
export function getHPContext() {
|
||||
return {
|
||||
hutk: Cookies.get('hubspotutk') || undefined,
|
||||
ipAddress: getIP() || undefined
|
||||
};
|
||||
}
|
||||
|
||||
export function arraymove(arr, fromIndex, toIndex) {
|
||||
if (fromIndex === -1 || toIndex === -1) {
|
||||
return;
|
||||
}
|
||||
var element = arr[fromIndex];
|
||||
arr.splice(fromIndex, 1);
|
||||
arr.splice(toIndex, 0, element);
|
||||
}
|
||||
Reference in New Issue
Block a user