mirror of
				https://github.com/smartfrigde/armcord.git
				synced 2024-08-14 23:56:58 +00:00 
			
		
		
		
	Change mod loader to support multiple links. (#547)
This commit is contained in:
		
							parent
							
								
									41578787d5
								
							
						
					
					
						commit
						e61b99e735
					
				
					 1 changed files with 63 additions and 33 deletions
				
			
		
							
								
								
									
										62
									
								
								src/utils.ts
									
										
									
									
									
								
							
							
						
						
									
										62
									
								
								src/utils.ts
									
										
									
									
									
								
							|  | @ -395,31 +395,68 @@ async function updateModBundle(): Promise<void> { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export let modInstallState: string; | export let modInstallState: string; | ||||||
| export async function installModLoader(): Promise<void> { | export function updateModInstallState() { | ||||||
|  |     modInstallState = "modDownload"; | ||||||
|  | 
 | ||||||
|  |     updateModBundle(); | ||||||
|  |     import("./extensions/plugin"); | ||||||
|  | 
 | ||||||
|  |     modInstallState = "done"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export async function installModLoader(): Promise<void>  | ||||||
|  | { | ||||||
|     if ((await getConfig("mods")) == "none") { |     if ((await getConfig("mods")) == "none") { | ||||||
|         modInstallState = "none"; |         modInstallState = "none"; | ||||||
|         fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); |         fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); | ||||||
|  | 
 | ||||||
|         import("./extensions/plugin"); |         import("./extensions/plugin"); | ||||||
|         console.log("[Mod loader] Skipping"); |         console.log("[Mod loader] Skipping"); | ||||||
|     } else { | 
 | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     const pluginFolder = `${app.getPath("userData")}/plugins/`; |     const pluginFolder = `${app.getPath("userData")}/plugins/`; | ||||||
|         if (!fs.existsSync(`${pluginFolder}loader`) || !fs.existsSync(`${pluginFolder}loader/dist/bundle.css`)) { |     if (fs.existsSync(`${pluginFolder}loader`) && fs.existsSync(`${pluginFolder}loader/dist/bundle.css`)){ | ||||||
|  |         updateModInstallState(); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     try { |     try { | ||||||
|         fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); |         fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true}); | ||||||
|         modInstallState = "installing"; |         modInstallState = "installing"; | ||||||
|  | 
 | ||||||
|         let zipPath = `${app.getPath("temp")}/loader.zip`; |         let zipPath = `${app.getPath("temp")}/loader.zip`; | ||||||
|  | 
 | ||||||
|         if(!fs.existsSync(pluginFolder)) { |         if(!fs.existsSync(pluginFolder)) { | ||||||
|             fs.mkdirSync (pluginFolder); |             fs.mkdirSync (pluginFolder); | ||||||
|             console.log("[Mod loader] Created missing plugin folder"); |             console.log("[Mod loader] Created missing plugin folder"); | ||||||
|         } |         } | ||||||
|                 let loaderZip = await fetch("https://armcord.app/loader.zip"); | 
 | ||||||
|                 if (!loaderZip.ok) throw new Error(`unexpected response ${loaderZip.statusText}`); |         // Add more of these later if needed!
 | ||||||
|  |         let URLs = ['https://armcord.app/loader.zip', 'https://armcord.vercel.app/loader.zip', 'https://raw.githubusercontent.com/ArmCord/website/new/public/loader.zip']; | ||||||
|  |         let loaderZip: any; | ||||||
|  | 
 | ||||||
|  |         while (true){ | ||||||
|  |             if(URLs.length <= 0) | ||||||
|  |                 throw new Error(`unexpected response ${loaderZip.statusText}`); | ||||||
|  | 
 | ||||||
|  |             try { | ||||||
|  |                 loaderZip = await fetch(URLs[0]); | ||||||
|  |             } catch (err) { | ||||||
|  |                 console.log('[Mod loader] Failed to download. Links left to try: ' + (URLs.length - 1)); | ||||||
|  |                 URLs.splice(0, 1); | ||||||
|  | 
 | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         await streamPipeline(loaderZip.body, fs.createWriteStream(zipPath)); |         await streamPipeline(loaderZip.body, fs.createWriteStream(zipPath)); | ||||||
|         await extract(zipPath, {dir: path.join(app.getPath("userData"), "plugins")}); |         await extract(zipPath, {dir: path.join(app.getPath("userData"), "plugins")}); | ||||||
|                 modInstallState = "modDownload"; | 
 | ||||||
|                 updateModBundle(); |         updateModInstallState(); | ||||||
|                 import("./extensions/plugin"); |  | ||||||
|                 modInstallState = "done"; |  | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|         console.log("[Mod loader] Failed to install modloader"); |         console.log("[Mod loader] Failed to install modloader"); | ||||||
|         console.error(e); |         console.error(e); | ||||||
|  | @ -428,13 +465,6 @@ export async function installModLoader(): Promise<void> { | ||||||
|             "ArmCord couldn't install internal mod loader, please check if you have stable internet connection and restart the app. If this issue persists, report it on the support server/Github issues." |             "ArmCord couldn't install internal mod loader, please check if you have stable internet connection and restart the app. If this issue persists, report it on the support server/Github issues." | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|         } else { |  | ||||||
|             modInstallState = "modDownload"; |  | ||||||
|             updateModBundle(); |  | ||||||
|             import("./extensions/plugin"); |  | ||||||
|             modInstallState = "done"; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function registerGlobalKeybinds(): Promise<void> { | export async function registerGlobalKeybinds(): Promise<void> { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue