Files
discord-decomp/_bundle/Module3961.js
T
2026-11-01 12:12:55 +02:00

137 lines
4.1 KiB
JavaScript

// Metro module 3961 (f3962).
import { useMemo, useRef } from "react";
import { ArtboardByName } from "./Module3950";
import { useDisposableMemo } from "./Module3954";
import { callDispose } from "./Module3942";
export function useViewModelInstance(a0, a1) {
let c13757_0 = a0;
let r12 = a1?.instanceName;
const name2 = a1?.name;
if (r12 == null) {
r12 = name2;
}
const name = r12;
const artboardName = a1?.artboardName;
const viewModelName = a1?.viewModelName;
let r6 = a1?.useNew;
if (r6 == null) {
r6 = false;
}
let c13757_4 = r6;
let r23 = a1?.required;
if (r23 == null) {
r23 = false;
}
const onInit = a1?.onInit;
const ref = useRef(onInit);
ref.current = onInit;
const disposableMemo = useDisposableMemo(() => {
let r3, r35, r60, instance;
L41: {
if (c13757_0) {
if (c13757_0 != null && "getViewModelInstance" in c13757_0) {
let instance3 = c13757_0.getViewModelInstance();
if (instance3 == null) {
instance3 = null;
}
r3 = {
instance: instance3,
needsDispose: false
};
} else if (c13757_0 != null && "defaultArtboardViewModel" in c13757_0) {
if (viewModelName) {
r35 = c13757_0.viewModelByName(viewModelName);
if (!r35) {
r3 = {
instance: null,
needsDispose: false,
error: `ViewModel '${viewModelName}' not found`
};
break L41;
}
} else {
r35 = c13757_0.defaultArtboardViewModel(artboardName ? ArtboardByName(artboardName) : void 0);
if (!r35) {
r3 = artboardName ? {
instance: null,
needsDispose: false,
error: `Artboard '${artboardName}' not found or has no ViewModel`
} : {
instance: null,
needsDispose: false
};
break L41;
}
}
let instance2 = name ? r35.createInstanceByName(name) : r35.createDefaultInstance();
if (!instance2 && name) {
r60 = {
instance: null,
needsDispose: false,
error: `ViewModel instance '${name}' not found`
};
} else {
if (instance2 == null) {
instance2 = null;
}
r60 = {
instance: instance2,
needsDispose: true
};
}
r3 = r60;
} else {
if (name) {
instance = c13757_0.createInstanceByName(name);
if (!instance) {
r3 = {
instance: null,
needsDispose: false,
error: `ViewModel instance '${name}' not found`
};
break L41;
}
} else {
instance = c13757_4 ? c13757_0.createInstance() : c13757_0.createDefaultInstance();
}
if (instance == null) {
instance = null;
}
r3 = {
instance,
needsDispose: true
};
}
} else {
r3 = {
instance: void 0,
needsDispose: false
};
}
}
if (r3.instance && ref.current) {
ref.current(r3.instance);
}
return r3;
}, (a0) => {
if (a0.needsDispose && a0.instance) {
callDispose(a0.instance);
}
}, [a0, name, artboardName, viewModelName, r6]);
const memo = useMemo(() => disposableMemo.error ? new Error(disposableMemo.error) : null, [disposableMemo.error]);
if (r23 && disposableMemo.instance === null) {
throw new Error(disposableMemo.error ? `useViewModelInstance: ${disposableMemo.error}` : "useViewModelInstance: Failed to get ViewModelInstance. Ensure the source has a valid ViewModel and instance available.");
}
const { instance, instance: instance2 } = disposableMemo;
return instance ? {
instance: instance2,
error: null
} : instance2 === void 0 ? {
instance: void 0,
error: null
} : {
instance: null,
error: memo
};
}