Refresh Scene Data
@@ -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