support OBS auto streamer mode via an arrpc patch
This commit is contained in:
		
							parent
							
								
									af9ed58eef
								
							
						
					
					
						commit
						b7d40b3556
					
				
					 5 changed files with 86 additions and 7 deletions
				
			
		|  | @ -1,14 +1,58 @@ | ||||||
| diff --git a/src/process/index.js b/src/process/index.js
 | diff --git a/src/process/index.js b/src/process/index.js
 | ||||||
| index 97ea6514b54dd9c5df588c78f0397d31ab5f882a..c2bdbd6aaa5611bc6ff1d993beeb380b1f5ec575 100644
 | index 97ea651..28f0eb5 100644
 | ||||||
| --- a/src/process/index.js
 | --- a/src/process/index.js
 | ||||||
| +++ b/src/process/index.js
 | +++ b/src/process/index.js
 | ||||||
| @@ -5,8 +5,7 @@ import fs from 'node:fs';
 | @@ -1,12 +1,7 @@
 | ||||||
|  import { dirname, join } from 'path'; |  const rgb = (r, g, b, msg) => `\x1b[38;2;${r};${g};${b}m${msg}\x1b[0m`; | ||||||
|  import { fileURLToPath } from 'url'; |  const log = (...args) => console.log(`[${rgb(88, 101, 242, 'arRPC')} > ${rgb(237, 66, 69, 'process')}]`, ...args); | ||||||
|   |   | ||||||
|  | -import fs from 'node:fs';
 | ||||||
|  | -import { dirname, join } from 'path';
 | ||||||
|  | -import { fileURLToPath } from 'url';
 | ||||||
|  | -
 | ||||||
| -const __dirname = dirname(fileURLToPath(import.meta.url));
 | -const __dirname = dirname(fileURLToPath(import.meta.url));
 | ||||||
| -const DetectableDB = JSON.parse(fs.readFileSync(join(__dirname, 'detectable.json'), 'utf8'));
 | -const DetectableDB = JSON.parse(fs.readFileSync(join(__dirname, 'detectable.json'), 'utf8'));
 | ||||||
| +const DetectableDB = require('./detectable.json');
 | +const DetectableDB = require('./detectable.json');
 | ||||||
|   |   | ||||||
|  import * as Natives from './native/index.js'; |  import * as Natives from './native/index.js'; | ||||||
|  const Native = Natives[process.platform]; |  const Native = Natives[process.platform]; | ||||||
|  | @@ -38,7 +33,7 @@ export default class ProcessServer {
 | ||||||
|  |        const path = _path.toLowerCase().replaceAll('\\', '/'); | ||||||
|  |        const toCompare = []; | ||||||
|  |        const splitPath = path.split('/'); | ||||||
|  | -      for (let i = 1; i < splitPath.length; i++) {
 | ||||||
|  | +      for (let i = 0; i < splitPath.length; i++) {
 | ||||||
|  |          toCompare.push(splitPath.slice(-i).join('/')); | ||||||
|  |        } | ||||||
|  |   | ||||||
|  | diff --git a/update_db.js b/update_db.js
 | ||||||
|  | index ed94923..3170685 100644
 | ||||||
|  | --- a/update_db.js
 | ||||||
|  | +++ b/update_db.js
 | ||||||
|  | @@ -1,5 +1,5 @@
 | ||||||
|  |  #!/usr/bin/env node | ||||||
|  | -import { createWriteStream, readFileSync } from 'fs';
 | ||||||
|  | +import { createWriteStream, readFileSync, writeFileSync} from 'fs';
 | ||||||
|  |  import { get } from 'https'; | ||||||
|  |   | ||||||
|  |  import { dirname, join } from 'path'; | ||||||
|  | @@ -25,5 +25,21 @@ get('https://discord.com/api/v9/applications/detectable', res => {
 | ||||||
|  |      const oldNames = current.map(x => x.name); | ||||||
|  |      const newNames = updated.map(x => x.name); | ||||||
|  |      console.log(newNames.filter(x => !oldNames.includes(x))); | ||||||
|  | +
 | ||||||
|  | +    // append obs for auto streammode
 | ||||||
|  | +    updated.push({
 | ||||||
|  | +      aliases: ["Obs"],
 | ||||||
|  | +      executables: [
 | ||||||
|  | +        { is_launcher: false, name: "obs", os: "linux" },
 | ||||||
|  | +        { is_launcher: false, name: "obs.exe", os: "win32" },
 | ||||||
|  | +        { is_launcher: false, name: "obs.app", os: "darwin" }
 | ||||||
|  | +      ],
 | ||||||
|  | +      hook: true,
 | ||||||
|  | +      id: "STREAMERMODE",
 | ||||||
|  | +      name: "OBS"
 | ||||||
|  | +    });
 | ||||||
|  | +    writeFileSync(path, JSON.stringify(updated), 'utf8');
 | ||||||
|  |    }) | ||||||
|  |  }); | ||||||
|  |  | ||||||
|  | @ -4,6 +4,7 @@ | ||||||
|  * Copyright (c) 2023 Vendicated and Vencord contributors |  * Copyright (c) 2023 Vendicated and Vencord contributors | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | import { execSync } from "child_process"; | ||||||
| import { BuildContext, BuildOptions, context } from "esbuild"; | import { BuildContext, BuildOptions, context } from "esbuild"; | ||||||
| import { copyFile } from "fs/promises"; | import { copyFile } from "fs/promises"; | ||||||
| 
 | 
 | ||||||
|  | @ -49,8 +50,15 @@ async function copyVenmic() { | ||||||
|     ]).catch(() => console.warn("Failed to copy venmic. Building without venmic support")); |     ]).catch(() => console.warn("Failed to copy venmic. Building without venmic support")); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | async function updateArrpcDb() { | ||||||
|  |     return Promise.all([execSync("node node_modules/arrpc/update_db.js")]).catch(() => | ||||||
|  |         console.warn("Error running update_db.js Auto streamermode will not work.") | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| await Promise.all([ | await Promise.all([ | ||||||
|     copyVenmic(), |     copyVenmic(), | ||||||
|  |     updateArrpcDb(), | ||||||
|     createContext({ |     createContext({ | ||||||
|         ...NodeCommonOpts, |         ...NodeCommonOpts, | ||||||
|         entryPoints: ["src/main/index.ts"], |         entryPoints: ["src/main/index.ts"], | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ import "./themedSplash"; | ||||||
| console.log("read if cute :3"); | console.log("read if cute :3"); | ||||||
| 
 | 
 | ||||||
| export * as Components from "./components"; | export * as Components from "./components"; | ||||||
| import { findByPropsLazy, onceReady } from "@vencord/types/webpack"; | import { findByPropsLazy, findStore, onceReady } from "@vencord/types/webpack"; | ||||||
| import { Alerts, FluxDispatcher } from "@vencord/types/webpack/common"; | import { Alerts, FluxDispatcher } from "@vencord/types/webpack/common"; | ||||||
| 
 | 
 | ||||||
| import SettingsUi from "./components/settings/Settings"; | import SettingsUi from "./components/settings/Settings"; | ||||||
|  | @ -56,8 +56,14 @@ VesktopNative.arrpc.onActivity(async data => { | ||||||
|     if (!Settings.store.arRPC) return; |     if (!Settings.store.arRPC) return; | ||||||
| 
 | 
 | ||||||
|     await onceReady; |     await onceReady; | ||||||
| 
 |     const StreamerModeStore = findStore("StreamerModeStore"); | ||||||
|     arRPC.handleEvent(new MessageEvent("message", { data })); |     if (JSON.parse(data).socketId === "STREAMERMODE" && StreamerModeStore.autoToggle) { | ||||||
|  |         FluxDispatcher.dispatch({ | ||||||
|  |             type: "STREAMER_MODE_UPDATE", | ||||||
|  |             key: "enabled", | ||||||
|  |             value: JSON.parse(data).activity?.application_id === "STREAMERMODE" | ||||||
|  |         }); | ||||||
|  |     } else arRPC.handleEvent(new MessageEvent("message", { data })); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| // TODO: remove soon
 | // TODO: remove soon
 | ||||||
|  |  | ||||||
|  | @ -12,3 +12,4 @@ import "./hideVenmicInput"; | ||||||
| import "./screenShareFixes"; | import "./screenShareFixes"; | ||||||
| import "./spellCheck"; | import "./spellCheck"; | ||||||
| import "./windowsTitleBar"; | import "./windowsTitleBar"; | ||||||
|  | import "./streamerMode"; | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								src/renderer/patches/streamerMode.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/renderer/patches/streamerMode.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | /* | ||||||
|  |  * SPDX-License-Identifier: GPL-3.0 | ||||||
|  |  * Vesktop, a desktop app aiming to give you a snappier Discord Experience | ||||||
|  |  * Copyright (c) 2023 Vendicated and Vencord contributors | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | import { addPatch } from "./shared"; | ||||||
|  | 
 | ||||||
|  | addPatch({ | ||||||
|  |     patches: [ | ||||||
|  |         { | ||||||
|  |             find: ".STREAMER_MODE_ENABLE,", | ||||||
|  |             replacement: { | ||||||
|  |                 // eslint-disable-next-line no-useless-escape
 | ||||||
|  |                 match: /\i\.isPlatformEmbedded/g, | ||||||
|  |                 replace: "true" | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     ] | ||||||
|  | }); | ||||||
		Loading…
	
		Reference in a new issue
	
	 Kylie C
						Kylie C