diff --git a/src/backend/integrations/builtin/obs/effects/transform-obs-source.ts b/src/backend/integrations/builtin/obs/effects/transform-obs-source.ts index dc74ec7c2..873437604 100644 --- a/src/backend/integrations/builtin/obs/effects/transform-obs-source.ts +++ b/src/backend/integrations/builtin/obs/effects/transform-obs-source.ts @@ -22,6 +22,13 @@ export const TransformSourceEffectType: EffectType<{ categories: ["common"] }, optionsTemplate: ` + +
+

+ Error: Due to a previous bug with duplicating Preset Effect Lists, you will need to set the Scene Item again, this shouldn't be necessary again in the future. +

+
+
@@ -101,10 +108,12 @@ export const TransformSourceEffectType: EffectType<{
@@ -129,12 +138,12 @@ export const TransformSourceEffectType: EffectType<{
@@ -162,6 +171,7 @@ export const TransformSourceEffectType: EffectType<{ `, optionsController: ($scope: any, backendCommunicator: any) => { $scope.isObsConfigured = false; + $scope.isUsingInvalidItemId = false; $scope.scenes = []; $scope.sceneItems = []; @@ -177,6 +187,17 @@ export const TransformSourceEffectType: EffectType<{ [10]: "Bottom Right" }); + // If legacy property sceneItem.id exists, we need to fix it + if (!!$scope.effect.sceneItem?.id) { + if (typeof ($scope.effect.sceneItem.id) !== "number") { + $scope.isUsingInvalidItemId = true; + delete $scope.effect.sceneItem; + } else { + $scope.effect.sceneItem.itemId = $scope.effect.sceneItem.id; + delete $scope.effect.sceneItem.id; + } + } + $scope.selectScene = (sceneName: string) => { $scope.effect.sceneItem = undefined; $scope.getSources(sceneName); @@ -184,6 +205,7 @@ export const TransformSourceEffectType: EffectType<{ $scope.selectSceneItem = (sceneItem: OBSSceneItem) => { $scope.effect.sceneItem = sceneItem; + $scope.isUsingInvalidItemId = false; }; $scope.getScenes = () => { @@ -259,7 +281,7 @@ export const TransformSourceEffectType: EffectType<{ await transformSceneItem( effect.sceneItem.groupName ?? effect.sceneName, - effect.sceneItem.id, + effect.sceneItem.id ?? effect.sceneItem.itemId, Number(effect.duration) * 1000, parsedStart, parsedEnd, diff --git a/src/backend/integrations/builtin/obs/obs-remote.ts b/src/backend/integrations/builtin/obs/obs-remote.ts index 187a1549f..85b33e762 100644 --- a/src/backend/integrations/builtin/obs/obs-remote.ts +++ b/src/backend/integrations/builtin/obs/obs-remote.ts @@ -798,7 +798,8 @@ export type OBSSource = { }; export type OBSSceneItem = { - id: number; + id?: number; // this is for legacy support, swapped to itemId to avoid breaking on duplicating Preset Effect Lists + itemId: number; name: string; groupName?: string; }; @@ -890,7 +891,7 @@ export async function getAllSceneItemsInGroup(groupName: string): Promise ({ - id: item.sceneItemId as number, + itemId: item.sceneItemId as number, name: item.sourceName as string, groupName })); @@ -907,7 +908,7 @@ export async function getAllSceneItemsInScene(sceneName: string): Promise