expose version for styles installed from greasyfork/sleazyfork
This commit is contained in:
		
							parent
							
								
									3d0b733e9a
								
							
						
					
					
						commit
						5501efb1be
					
				| 
						 | 
				
			
			@ -17,6 +17,21 @@ const contentScripts = (() => {
 | 
			
		|||
  }
 | 
			
		||||
  const busyTabs = new Set();
 | 
			
		||||
  let busyTabsTimer;
 | 
			
		||||
 | 
			
		||||
  // expose version on greasyfork/sleazyfork 1) info page and 2) code page
 | 
			
		||||
  const urlMatches = '/scripts/\\d+[^/]*(/code)?([?#].*)?$';
 | 
			
		||||
  chrome.webNavigation.onCommitted.addListener(({tabId}) => {
 | 
			
		||||
    chrome.tabs.executeScript(tabId, {
 | 
			
		||||
      file: '/content/install-hook-greasyfork.js',
 | 
			
		||||
      runAt: 'document_start',
 | 
			
		||||
    });
 | 
			
		||||
  }, {
 | 
			
		||||
    url: [
 | 
			
		||||
      {hostEquals: 'greasyfork.org', urlMatches},
 | 
			
		||||
      {hostEquals: 'sleazyfork.org', urlMatches},
 | 
			
		||||
    ]
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  return {injectToTab, injectToAllTabs};
 | 
			
		||||
 | 
			
		||||
  function injectToTab({url, tabId, frameId = null}) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								content/install-hook-greasyfork.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								content/install-hook-greasyfork.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
/* global API */
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
// onCommitted may fire twice
 | 
			
		||||
// Note, we're checking against a literal `1`, not just `if (truthy)`,
 | 
			
		||||
// because <html id="INJECTED"> is exposed per HTML spec as a global variable and `window.INJECTED`.
 | 
			
		||||
 | 
			
		||||
if (window.INJECTED_GREASYFORK !== 1) {
 | 
			
		||||
  window.INJECTED_GREASYFORK = 1;
 | 
			
		||||
  addEventListener('message', async function onMessage(e) {
 | 
			
		||||
    if (e.origin === location.origin &&
 | 
			
		||||
        e.data &&
 | 
			
		||||
        e.data.name &&
 | 
			
		||||
        e.data.type === 'style-version-query') {
 | 
			
		||||
      removeEventListener('message', onMessage);
 | 
			
		||||
      const style = await API.findUsercss(e.data) || {};
 | 
			
		||||
      const {version} = style.usercssData || {};
 | 
			
		||||
      postMessage({type: 'style-version', version}, '*');
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user