[bugfix] fix oculus launch by using sideloading

This commit is contained in:
MathieuG-P
2024-12-29 21:20:11 +01:00
parent d3ab80350e
commit e0a7d460be
30 changed files with 409 additions and 599 deletions
@@ -2,31 +2,26 @@ import { ModalComponent, ModalExitCode } from "renderer/services/modale.service"
import BeatConflict from "../../../../../assets/images/apngs/beat-conflict.png";
import { BsmButton } from "renderer/components/shared/bsm-button.component";
import { BsmImage } from "renderer/components/shared/bsm-image.component";
import { BsmCheckbox } from "renderer/components/shared/bsm-checkbox.component";
import { useState } from "react";
import { useTranslation } from "renderer/hooks/use-translation.hook";
import { useTranslationV2 } from "renderer/hooks/use-translation.hook";
export const OriginalOculusVersionBackupModal: ModalComponent<boolean, void> = ({ resolver }) => {
export const EnableOculusSideloadedApps: ModalComponent<void, void> = ({ resolver }) => {
const t = useTranslation();
const [dontShowAgain, setDontShowAgain] = useState(false);
const { text: t } = useTranslationV2();
const submit = () => {
resolver({ exitCode: ModalExitCode.COMPLETED, data: dontShowAgain });
resolver({ exitCode: ModalExitCode.COMPLETED });
}
return (
<form className="max-w-[450px] text-gray-800 dark:text-gray-200">
<h1 className="text-3xl uppercase tracking-wide w-full text-center text-gray-800 dark:text-gray-200">{t("modals.original-version-backup-oculus.title")}</h1>
<BsmImage className="mx-auto h-20" image={BeatConflict} />
<h1 className="text-3xl uppercase tracking-wide w-full text-center text-gray-800 dark:text-gray-200">{t("modals.enable-oculus-sideloaded-apps.title")}</h1>
<BsmImage className="mx-auto h-24" image={BeatConflict} />
<p className="text-sm italic mb-4 font-bold">{t("modals.original-version-backup-oculus.body.must-be-installed-once")}</p>
<p className="mb-4">{t("modals.original-version-backup-oculus.body.will-backup")}</p>
<p className="mb-4">{t("modals.enable-oculus-sideloaded-apps.info-1")}</p>
<p className="mb-4">{t("modals.enable-oculus-sideloaded-apps.info-2")}</p>
<p className="mb-4">{t("modals.enable-oculus-sideloaded-apps.info-3")}</p>
<div className="flex flex-row justify-start items-center gap-1.5 my-4" >
<BsmCheckbox className="relative z-[1] w-6 aspect-square" checked={dontShowAgain} onChange={setDontShowAgain} />
<span>{t("modals.original-version-backup-oculus.not-remind-me")}</span>
</div>
<a className="underline mb-5 block" href="https://github.com/Zagrios/bs-manager/wiki/Activate-Oculus-sideloading" target="_blank">{t("modals.enable-oculus-sideloaded-apps.i-want-to-do-it-myself")}</a>
<div className="grid grid-flow-col grid-cols-2 gap-4">
<BsmButton
@@ -43,7 +38,7 @@ export const OriginalOculusVersionBackupModal: ModalComponent<boolean, void> = (
className="rounded-md transition-all h-10 flex items-center justify-center"
onClick={submit}
withBar={false}
text="modals.original-version-backup-oculus.understood"
text="modals.enable-oculus-sideloaded-apps.understood"
/>
</div>
</form>
+18 -5
View File
@@ -7,7 +7,7 @@ import { ConfigurationService } from "./configuration.service";
import { ThemeService } from "./theme.service";
import { BsStore } from "shared/models/bs-store.enum";
import { ModalExitCode, ModalService } from "./modale.service";
import { OriginalOculusVersionBackupModal } from "renderer/components/modal/modal-types/original-oculus-version-backup.modal";
import { EnableOculusSideloadedApps } from "renderer/components/modal/modal-types/enable-oculus-sideloaded-apps";
import { CustomError } from "shared/models/exceptions/custom-error.class";
import { sToMs } from "shared/helpers/time.helpers";
import { NeedLaunchAdminModal } from "renderer/components/modal/modal-types/need-launch-admin-modal.component";
@@ -80,6 +80,20 @@ export class BSLauncherService {
return true;
}
private async enableSideloadedAppsIfNeeded(): Promise<void> {
if(window.electron.platform !== "win32"){ return; }
const isSideloadedAppsEnabled = await lastValueFrom(this.ipcService.sendV2("is-oculus-sideloaded-apps-enabled"));
if(isSideloadedAppsEnabled){ return; }
const modalRes = await this.modals.openModal(EnableOculusSideloadedApps);
if(modalRes.exitCode !== ModalExitCode.COMPLETED){
throw new Error("Enable sideloaded apps canceled");
}
await lastValueFrom(this.ipcService.sendV2("enable-oculus-sideloaded-apps"));
}
public doLaunch(launchOptions: LaunchOption): Observable<BSLaunchEventData>{
return this.ipcService.sendV2("bs-launch.launch", launchOptions);
}
@@ -89,10 +103,9 @@ export class BSLauncherService {
return new Observable<BSLaunchEventData>(obs => {
(async () => {
if(launchOptions.version.metadata?.store === BsStore.OCULUS && !this.notRewindBackupOculus()){
const { exitCode, data: notRewind } = await this.modals.openModal(OriginalOculusVersionBackupModal);
if(exitCode !== ModalExitCode.COMPLETED){ return; }
this.setNotRewindBackupOculus(notRewind);
// If downgraded from oculus and its not the official version
if(launchOptions.version.metadata?.store === BsStore.OCULUS && !launchOptions.version.oculus){
await this.enableSideloadedAppsIfNeeded();
}
if(launchOptions.version.metadata?.store !== BsStore.OCULUS){