ybbond-reason

My old site written in ReasonReact
Log | Files | Refs | README | LICENSE | CC-LICENSE

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";