From 52b40b7d0c175da3e1033b1a621d18a04ac6b1fa Mon Sep 17 00:00:00 2001
From: AAGaming <aagaming@riseup.net>
Date: Sun, 28 Jul 2024 20:25:21 -0400
Subject: wait for SP to exist before loading plugins when booted in gamepadui
 mode

---
 frontend/src/plugin-loader.tsx | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

(limited to 'frontend/src/plugin-loader.tsx')

diff --git a/frontend/src/plugin-loader.tsx b/frontend/src/plugin-loader.tsx
index 74732ac7..28927f1e 100644
--- a/frontend/src/plugin-loader.tsx
+++ b/frontend/src/plugin-loader.tsx
@@ -5,6 +5,7 @@ import {
   PanelSection,
   PanelSectionRow,
   QuickAccessTab,
+  findSP,
   quickAccessMenuClasses,
   showModal,
   sleep,
@@ -29,7 +30,7 @@ import { HiddenPluginsService } from './hidden-plugins-service';
 import Logger from './logger';
 import { NotificationService } from './notification-service';
 import { InstallType, Plugin, PluginLoadType } from './plugin';
-import RouterHook from './router-hook';
+import RouterHook, { UIMode } from './router-hook';
 import { deinitSteamFixes, initSteamFixes } from './steamfixes';
 import { checkForPluginUpdates } from './store';
 import TabsHook from './tabs-hook';
@@ -166,7 +167,6 @@ class PluginLoader extends Logger {
     this.initPluginBackendAPI();
 
     Promise.all([this.getUserInfo(), this.updateVersion()])
-      .then(() => sleep(800))
       .then(() => this.loadPlugins())
       .then(() => this.checkPluginUpdates())
       .then(() => this.log('Initialized'));
@@ -178,6 +178,17 @@ class PluginLoader extends Logger {
   >('loader/get_plugins');
 
   private async loadPlugins() {
+    let registration: any;
+    const uiMode = await new Promise(r => registration = SteamClient.UI.RegisterForUIModeChanged((mode: UIMode) => {
+      r(mode);
+      registration.unregister()
+    }));
+    if (uiMode == UIMode.BigPicture) {
+      // wait for SP window to exist before loading plugins
+      while (!findSP()) {
+        await sleep(100);
+      }
+    }
     const plugins = await this.getPluginsFromBackend();
     const pluginLoadPromises = [];
     const loadStart = performance.now();
@@ -565,7 +576,6 @@ class PluginLoader extends Logger {
       method = request.method;
       delete req.method;
     }
-    // this is terrible but a. we're going to redo this entire method anyway and b. it was already terrible
     try {
       const ret = await DeckyBackend.call<
         [method: string, url: string, extra_opts?: any],
-- 
cgit v1.2.3

