try to get style json on USO install page twice
also report errors fixes #195
This commit is contained in:
		
							parent
							
								
									4e9e4d24b1
								
							
						
					
					
						commit
						f1836f399f
					
				|  | @ -127,16 +127,11 @@ new MutationObserver((mutations, observer) => { | |||
|   we need to fix this URL using "stylish-update-url" meta key | ||||
| */ | ||||
| function getStyleURL() { | ||||
|   const url = getMeta('stylish-code-chrome'); | ||||
|   // TODO: remove when USO is fixed
 | ||||
|   const directUrl = getMeta('stylish-update-url'); | ||||
|   if (directUrl.includes('?') && !url.includes('?')) { | ||||
|     /* get custom settings from the update url */ | ||||
|     return Object.assign(new URL(url), { | ||||
|       search: (new URL(directUrl)).search | ||||
|     }).href; | ||||
|   } | ||||
|   return url; | ||||
|   const textUrl = getMeta('stylish-update-url') || ''; | ||||
|   const jsonUrl = getMeta('stylish-code-chrome') || | ||||
|     textUrl.replace(/styles\/(\d+)\/[^?]*/, 'styles/chrome/$1.json'); | ||||
|   const paramsMissing = !jsonUrl.includes('?') && textUrl.includes('?'); | ||||
|   return jsonUrl + (paramsMissing ? textUrl.replace(/^[^?]+/, '') : ''); | ||||
| } | ||||
| 
 | ||||
| function checkUpdatability([installedStyle]) { | ||||
|  | @ -154,9 +149,9 @@ function checkUpdatability([installedStyle]) { | |||
|       reportUpdatable(md5 !== installedStyle.originalMd5); | ||||
|     }); | ||||
|   } else { | ||||
|     getResource(getStyleURL()).then(code => { | ||||
|       reportUpdatable(code === null || | ||||
|         !styleSectionsEqual(JSON.parse(code), installedStyle)); | ||||
|     getStyleJson().then(json => { | ||||
|       reportUpdatable(!json || | ||||
|         !styleSectionsEqual(json, installedStyle)); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|  | @ -233,9 +228,14 @@ function saveStyleCode(message, name, addProps) { | |||
|       return; | ||||
|     } | ||||
|     enableUpdateButton(false); | ||||
|     getResource(getStyleURL()).then(code => { | ||||
|     getStyleJson().then(json => { | ||||
|       if (!json) { | ||||
|         prompt(chrome.i18n.getMessage('styleInstallFailed', ''), | ||||
|           'https://github.com/openstyles/stylus/issues/195'); | ||||
|         return; | ||||
|       } | ||||
|       chrome.runtime.sendMessage( | ||||
|         Object.assign(JSON.parse(code), addProps, { | ||||
|         Object.assign(json, addProps, { | ||||
|           method: 'saveStyle', | ||||
|           reason: 'update', | ||||
|         }), | ||||
|  | @ -278,6 +278,18 @@ function getResource(url) { | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| function getStyleJson() { | ||||
|   const url = getStyleURL(); | ||||
|   return getResource(url).then(code => { | ||||
|     try { | ||||
|       return JSON.parse(code); | ||||
|     } catch (e) { | ||||
|       return fetch(url).then(r => r.json()).catch(() => null); | ||||
|     } | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function styleSectionsEqual({sections: a}, {sections: b}) { | ||||
|   if (!a || !b) { | ||||
|     return undefined; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user