Utils.re (1143B)
1 /* to enable require css file */ 2 [@bs.val] external requireCSS: string => unit = "require"; 3 4 /* to get Date.now */ 5 [@bs.val] external currentTime: unit => int = "Date.now"; 6 7 /* format a timestamp in seconds as relative humanised time sentence */ 8 let fromNow = unixtime => { 9 let delta = currentTime() / 1000 - unixtime; 10 if (delta < 3600) { 11 string_of_int(delta / 60) ++ " minutes ago"; 12 } else if (delta < 86400) { 13 string_of_int(delta / 3600) ++ " hours ago"; 14 } else { 15 string_of_int(delta / 86400) ++ " days ago"; 16 }; 17 }; 18 19 /* extras JS function */ 20 [@bs.send] [@bs.return nullable] 21 external getAttribute: (Js.t('a), string) => option(string) = "getAttribute"; 22 23 let dangerousHtml: string => Js.t('a) = html => {"__html": html}; 24 25 let distanceFromBottom: unit => int = 26 () => { 27 let bodyClientHeight = [%raw "document.body.clientHeight"]; 28 let windowScrollY = [%raw "window.scrollY"]; 29 let windowInnerHeight = [%raw "window.innerHeight"]; 30 bodyClientHeight - (windowScrollY + windowInnerHeight); 31 }; 32 33 /* registerServiceWorker */ 34 [@bs.module] 35 external registerServiceWorker: unit => unit = "./registerServiceWorker";