Implement UUID-based tracking for OBS groups to handle renames
Some checks failed
Lint and Build / build (pull_request) Failing after 1m43s
Some checks failed
Lint and Build / build (pull_request) Failing after 1m43s
- Add group_uuid column to teams table for reliable OBS scene tracking - Update createGroup API to store OBS scene UUID when creating groups - Enhance verifyGroups API with UUID-first matching and name fallback - Add comprehensive verification system to detect sync issues between database and OBS - Implement UI indicators for UUID linking, name mismatches, and invalid groups - Add "Clear Invalid" and "Update Name" actions for fixing synchronization problems - Create migration script for existing databases to add UUID column - Update Team type definition to include optional group_uuid field This resolves issues where manually renaming groups in OBS would break the synchronization between the database and OBS, providing a more robust group management system. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
92c05303bd
commit
cb1dd60bb8
9 changed files with 351 additions and 34 deletions
|
@ -124,17 +124,30 @@ async function createGroupIfNotExists(groupName) {
|
|||
try {
|
||||
const obsClient = await getOBSClient();
|
||||
|
||||
// Check if the group (scene) exists
|
||||
// Check if the group (scene) exists and get its UUID
|
||||
const { scenes } = await obsClient.call('GetSceneList');
|
||||
const groupExists = scenes.some((scene) => scene.sceneName === groupName);
|
||||
const existingScene = scenes.find((scene) => scene.sceneName === groupName);
|
||||
|
||||
if (!groupExists) {
|
||||
if (!existingScene) {
|
||||
console.log(`Creating group "${groupName}"`);
|
||||
await obsClient.call('CreateScene', { sceneName: groupName });
|
||||
return { created: true, message: `Group "${groupName}" created successfully` };
|
||||
const createResult = await obsClient.call('CreateScene', { sceneName: groupName });
|
||||
|
||||
// Get the scene UUID after creation
|
||||
const { scenes: updatedScenes } = await obsClient.call('GetSceneList');
|
||||
const newScene = updatedScenes.find((scene) => scene.sceneName === groupName);
|
||||
|
||||
return {
|
||||
created: true,
|
||||
message: `Group "${groupName}" created successfully`,
|
||||
sceneUuid: newScene?.sceneUuid || null
|
||||
};
|
||||
} else {
|
||||
console.log(`Group "${groupName}" already exists`);
|
||||
return { created: false, message: `Group "${groupName}" already exists` };
|
||||
return {
|
||||
created: false,
|
||||
message: `Group "${groupName}" already exists`,
|
||||
sceneUuid: existingScene.sceneUuid
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error creating group:', error.message);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue