1 line
No EOL
3.3 KiB
JavaScript
1 line
No EOL
3.3 KiB
JavaScript
(()=>{"use strict";const e="mnojpmjdmbbfmejpflffifhffcmidifd";let t=null;const r=()=>t,n=(e,r)=>{e&&t&&t.postMessage({type:"GreaselionError",mediaType:e,data:{errorMessage:r}})},i=(e,t,r)=>{if(e.length<t.length)return"";const n=e.indexOf(t);if(-1===n)return"";const i=n+t.length,s=e.indexOf(r,i);let o="";return s!==i?o=-1!==s&&s>i||-1!==s?e.substring(i,s):e.substring(i):""===r&&(o=e.substring(i)),o},s=()=>"complete"===document.readyState&&"visible"===document.visibilityState,o=(RegExp(/&(?:amp|lt|gt|quot|#(0+)?39);/g.source),"reddit"),a=(e,t)=>{if(!e)return"";let r="www";return t&&(r="old"),`https://${r}.reddit.com/user/${e}/`},c=e=>{if(!e)return"";let t=i(e,'hideFromRobots":false,"id":"t2_','","isEmployee"')||i(e,'hideFromRobots":true,"id":"t2_','","isEmployee"');return t||(t=i(e,'target_fullname": "t2_','"')),t},l=e=>e?i(e,'accountIcon":"',"?"):"",d=e=>{if(!e)return"";let t=i(e,'username":"','"');return t||(t=i(e,'target_name": "','"')),t},u=()=>{const e=new URL(location.href);(e=>{if(["/","/coins","/contact","/login","/premium"].includes(e))return!0;const t=["/dev/","/help/","/r/","/wiki/"];for(const r of t)if(e.startsWith(r))return!0;return!1})(e.pathname)?(()=>{const e=r();e&&e.postMessage({type:"SavePublisherVisit",mediaType:"",data:{url:"https://www.reddit.com",publisherKey:"reddit.com",publisherName:"reddit.com",mediaKey:"",favIconUrl:""}})})():(e=>{const t=(e=>{if(!e.pathname||!e.pathname.startsWith("/user/"))return"";const t=e.pathname.split("/").filter((e=>e));return t&&0!==t.length?t.length<2?"":t[1]:""})(e);if(!t)return void n(o,"Invalid screen name");const i=(e=>e.hostname.startsWith("old.")||e.hostname.startsWith("np."))(e);(async(e,t)=>{if(!e)throw new Error("Invalid parameters");const r=await(async(e,t)=>{if(!e)throw new Error("Invalid parameters");const r=a(e,t);if(!r)throw new Error("Invalid profile url");const n=await fetch(r);if(!n.ok){const e=((e,t)=>`Profile request failed: ${t.statusText} (${t.status})`)(0,n);throw new Error(e)}return n.text()})(e,t);return{user:{id:c(r),screenName:e,fullName:d(r),favIconUrl:l(r)},post:{id:"",timestamp:"",text:""}}})(t,i).then((e=>{const i=e.user.id,s=((e,t)=>`${e}#channel:${t}`)(o,i),c=e.user.fullName;if(!c)return void n(o,"Invalid publisher name");const l=((e,t)=>e&&t?`${e}_${t}`:"")(o,t),d=e.user.favIconUrl,u=a(t,!1),m=r();m&&m.postMessage({type:"SavePublisherVisit",mediaType:o,data:{url:u,publisherKey:s,publisherName:c,mediaKey:l,favIconUrl:d}})}))})(e)};let m=!1,f="";const p=e=>{e&&(e.url||"complete"===e.status)&&location.href!==f&&(f=location.href,u())};var h;chrome.extension.inIncognitoContext||(h=e=>{e?(s()?u():document.addEventListener("readystatechange",(function(){s()&&u()})),document.addEventListener("visibilitychange",(function(){"visible"===document.visibilityState&&u()})),((e,t)=>{if(!e||m)return;m=!0;const n=r();n&&(n.postMessage({type:"RegisterOnUpdatedTab",mediaType:e}),n.onMessage.addListener((function(e){e.data&&"OnUpdatedTab"===e.type&&t(e.data.changeInfo)})))})(o,p)):console.error("Failed to initialize communications port")},t?h(!0):(chrome.runtime.sendMessage(e,{type:"SupportsGreaselion"},(function(r){!chrome.runtime.lastError&&r&&r.supported&&(t=chrome.runtime.connect(e,{name:"Greaselion"}),h(!0))})),setTimeout((()=>{t||(t=chrome.runtime.connect("jidkidbbcafjabdphckchenhfomhnfma",{name:"Greaselion"}),h(!0))}),100)),console.info("Greaselion script loaded: redditBase.ts"))})(); |