owncast/web/utils/helpers.js

54 lines
1.2 KiB
JavaScript
Raw Normal View History

import UAParser from 'ua-parser-js';
export function pluralize(string, count) {
2020-06-18 19:24:54 +02:00
if (count === 1) {
return string;
}
return `${string}s`;
2020-06-18 19:24:54 +02:00
}
export function getDiffInDaysFromNow(timestamp) {
const time = typeof timestamp === 'string' ? new Date(timestamp) : timestamp;
return (new Date() - time) / (24 * 3600 * 1000);
}
// Take a nested object of state metadata and merge it into
// a single flattened node.
export function mergeMeta(meta) {
return Object.keys(meta).reduce((acc, key) => {
const value = meta[key];
Object.assign(acc, value);
return acc;
}, {});
}
export const isMobileSafariIos = () => {
try {
const ua = navigator.userAgent;
const uaParser = new UAParser(ua);
const browser = uaParser.getBrowser();
const device = uaParser.getDevice();
if (device.vendor !== 'Apple') {
return false;
}
if (device.type !== 'mobile' && device.type !== 'tablet') {
return false;
}
return browser.name === 'Mobile Safari' || browser.name === 'Safari';
} catch (e) {
return false;
}
};
export const isMobileSafariHomeScreenApp = () => {
if (!isMobileSafariIos()) {
return false;
}
return 'standalone' in window.navigator && window.navigator.standalone;
};