Advertisement
ScriptKitty

8chan desktop reply notifications

Feb 24th, 2016
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function() {
  2.  
  3.     var logo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAACglBMVEVMaXFZrVkiliJVVVVXrVc5ODk1oDVFikVCpUI3oDcilyIhlSEnmSdnZ2cblBtnl2ctnS0nmCcelR4iliItni04oDiRrJEPDw8AAAABAQEJCQkcHBw1oDU8ojwwnjAhliE2oTYqmiojlyNRq1FGpUYomSgwnjBEpUQvni87oTtfsV9xt3FDQ0MxMTFhYWEJCQkkJCQCAgIkmCQiliIomignmScvmy8lmSUklyRisGIvnC8omSgunS4lmSUflh86ojpGp0ZEpURCpEIunS4klyQlmCVismIODg4ICAgZGRkiIiIVFRUcHBxTU1NaWloOkQ40njQglSA0nzQpmylyuHIhliEclhxWrVZksmRBpEEblBs8ozwtnC0vnS8smiw3oDctnC06oToklyQ0njQvnS9Oqk44oThJp0kgmCAunS4KCgolmCVKSUobGxsyMTI5OTl1dXVAPkAyMjJeXV4zMzMEBAQ1NTUPDw8NDQ02NjZAQEAkJCQuLi43nzdYrlhOqk4jlyMznzMsmiwEkAQmmCY4oTgnmCdEpkRJp0kunS5FpkVHp0cglyAynTI6ozp3vHcZkxlNqU11unUomSgunC4lJSVwcHArmisUFBRNqU01NTU4ODg5OTl4d3gHBwcjIyMiIiIJCQkCAgInJycbGxsVFRUflx9Gp0YQkRAEjQRptWkqmipdsF0XkxdUq1RDpkM5OTkBAQEPDw9PT08wMDBLqUsbGxsSkhIVFRUeHh5oaGg6Ojo6OjoaGho5OTkQEBBPT08GBgZaWloYGBguLi4XFxdhYWF9fX0hlSEjliMilSIkliQiliIdlB0flB8akxoglSAglCAckxwmlyYWkRYiIiLAR24uAAAAyHRSTlMAGN0GCBJPAh0K8PyvDPsFEM759VeRC9vHXOLiOUVz+kfY+yZAyIsOF5lDETUaO1eR/brltMGtiZ8x0Nygmc1YLWspl9L1Vuny8sO922h3Xr71ZzE14DdRIXOzN2jB1bckfOzsfIPQcKVI6+QuCiIWI1QtJYi9b4+lV5n3jXE4Z8k/6U62rud5S7qltl+phijuRlWQyUdb4cmMXGYoN7NlWYTTms70nZmNT3+kb+R67IGU0kK7WzUgmaZHoKboSXNDe3/SopNdRrrqp2IAAATcSURBVHhe7dTlexRXFAbwd3eTldhusjFim4SoS0PcIEpCILhbkBDcrYUCxZ0CxZ0K9VJ3pb13fAP9fzo7szZh92HTz/l9mnmePe+ec+c8F2MzblxBekZhzaJzCUvSbPg/rPMyPlqaNXfZ0uYlszF2tsm5dokIhEpOQiKOtoZhbIyxcq0PkarSMAaWhDhCtYh9oSn09hcp5Rz1x9EPQk1IjBLkAkZ4zlINoRahSXDV8xvylj+XCMcRibqxwpsIRdcLShmxvS0hhm+srquLyhI8s5CL9Xi14mUCZTono/DFla/NkOmMVQxV8TUhHMNkkWUuGtElXrbAzbpyJlXF5OBVwhoE6dowEHUDfmZlq2OIp6FhnZI+Y8YMY1sYvIpEIWoKkL9Su3qFPHWRji/wqz5cGzuYzRGSHZHVnOnpd01WvBWApRga5tfUFvj58BgeiCQMx7Esy8kh0iQjFG35COj9EddWsOIaqAqaInnqj9CoNASHLvXn7Doo6lsIHY10tk9EUHNi1F1aqr7NJfRljHQ8w4YgZncqAeJnkE1sFFhfmSYittWEgA4qHVDnKQBhVbynnkiU44hfBpGCHEXXiPoXdQCGRKoijqqM9DnG2g7O6deFPc+Ml51WAtiRE65PSqj6EjsMRb6xmvAc9ZDmZuRjlAsRapvkJLCSpwp+uQ4epqJjDsnXBDk0+g6sUYtIow7Fy9R+pQ4d/F2qliTWG8EPzDfB50P31HwhkONQm41Lh5YpvoH3HScvDLR6BrEleAZ01AML1U8gnMJLbAc2CNRLEFpWt1msFvOsFsEdLBYCaFJn5QNeT+aEmcS3IhxxxC7KjSAcVUl6HYC1Sgdc3EEElBbl1GwnS3zPcSchW6V06TwSdO9bYwUaCCcMQQnglQGPTEEwttXKpmixkv0AAO8I1LEYwa1on+mkWs5GI1RNhA1yiCqLCbLFNZECR72kiGYz3BaqO8UPYBSl0Fw7BFXmuUEiMeIIT3mHPm823HyLFDkfGpcSAdMSvdgFD3P8+XVnzhx770SmDX6KG9xrrV8AP2+vM0HXxAjXigP0pfWpSBXO3BXwKuocwre5EhVvADBc/XxneTgM2zYjEJ37hqaC/qy7t4LVMR1hbS0MJYMXgI3Xu5MepqTcDE+dgIA+FqkbOZQXX1R0tl0/0rFieIP71t7RvavEhM3f3S2dFiTAulxkvRHUnk0lura1OZKhVJqUCOtXyZvgsik8tRwGuJRuNkERDcWCLJ56MQzlnq+yy+WU008E7vRchSp82u97H+8Gwh8lpfbdv2co3/fXnzsT4VKvJyz1pywN88k8AO90J3oDkh7srfzN1Ne9e9veyqnRyVP3PKucDkVbrkBHkxrmQRuQuhvorfilpwTAIzlgP7D/MVQFlyMJ9cORyDodXMp6vvQGlAN3nz3oheyfd6OT3wCmvw6P9Gq7IGewLEupJNmPZkJl6O01qA/KZ9xV8evTaAB/awJUaecnDTKcLOJK3mF4bVzftx0orfhe+Yy79m+t3GnF9pSp2gCVxZzz5K0nOeZ8+Ct5uv7p9fUp97b8LAck/4RbPUl9KXLAwwrgj38Rgk379nxxqxSG/tvAth+Abyp+vL+j37qvDLjTj1DcLp9QYoK1bAuwcSuw5Wb/9ugya8kOYGsZZOPG/Qem21OzbeKVHAAAAABJRU5ErkJggg=='
  4.     window.get_post_board = function get_post_board($post) {
  5.         return $(document).find('input[name="board"]').attr('value');
  6.     };
  7.  
  8.     window.get_post_id = function get_post_id($post) {
  9.         var match = /\breply_(\d+)\b/.exec($post.attr("id"));
  10.         return get_post_board() + ':' + match[1];
  11.     };
  12.  
  13.     window.pageHasFocus = function() {
  14.         if (document.hasFocus) return document.hasFocus();
  15.         if (document.visibilityState) return document.visibilityState == 'visible';
  16.         return true;
  17.     };
  18.  
  19.     function canNotify() {
  20.         return window.Notification && Notification.permission == 'granted' && !pageHasFocus();
  21.     }
  22.  
  23.     function makeNote($post) {
  24.  
  25.         var replyImage = logo;
  26.         replyImage = $post.find(".post-image").first().attr('src');
  27.         if (!replyImage)
  28.             replyImage = logo;
  29.  
  30.         var note = new Notification(makeHeadLine($post), {
  31.             body: getBody($post),
  32.             tag: "desktop_" + window.get_post_id($post),
  33.             icon: replyImage
  34.         });
  35.  
  36.         function closer() {
  37.             note.close();
  38.             $(window).off('focus', closer);
  39.         }
  40.         $(window).on('focus', closer);
  41.         note.addEventListener("click", function() {
  42.             closer();
  43.             window.focus();
  44.             window.scrollTo(0, document.body.scrollHeight);
  45.         }, false);
  46.     }
  47.  
  48.     function makeHeadLine(postEl) {
  49.         var $intro = $('.intro', postEl).first();
  50.         var subject = $intro.find('.subject').first().text();
  51.         if (subject.length) subject += ' — ';
  52.         var name = $intro.find('.name').first().text();
  53.         var trip = $intro.find('.trip').first().text();
  54.         if (trip) name += trip;
  55.         return subject + name;
  56.     }
  57.  
  58.     function getBody(postEl) {
  59.         var $body = $(".body", postEl).first().clone();
  60.         $body.html($body.html().replace(/<br\b[^>]*>/g, "; "));
  61.         var text = $body.text().replace(/^(; )+/, '');
  62.         if (text.length > 120) text = text.substr(0, 120) + '…';
  63.         return text;
  64.     }
  65.  
  66.     var site_location;
  67.     if (typeof active_page !== 'undefined') {
  68.         site_location = active_page;
  69.     }
  70.  
  71.     if (site_location == 'thread') {
  72.         Notification.requestPermission();
  73.  
  74.         $(document).on('new_post', function(e, post) {
  75.             var $post = $(post);
  76.             var test = $post.find('div.body > p > small');
  77.             test = ($(test).text() === '(You)');
  78.             if (test && canNotify()) {
  79.                 makeNote($post);
  80.             }
  81.         });
  82.     }
  83.  
  84. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement