🐛 Don't break references when updating a port

This commit is contained in:
2024-08-28 23:04:57 +02:00
parent 3a96d07539
commit 0997e067d9
2 changed files with 22 additions and 9 deletions

View File

@ -9,6 +9,7 @@ import 'package:gomix_flutter/mixing_tab.dart';
import 'package:gomix_flutter/ports_tab.dart';
import 'package:gomix_flutter/settings_tab.dart';
import 'package:gomix_flutter/error_page.dart';
import 'package:gomix_flutter/utils.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
@ -97,17 +98,15 @@ class _GoMixHomeState extends State<GoMixHome> {
}
// Update a single port
if (data["type"] == "portChange") {
int index = mixerState.inputs.indexWhere(
(element) => element.uuid == data["responseData"]["UUID"]);
int index2 = mixerState.outputs.indexWhere(
(element) => element.uuid == data["responseData"]["UUID"]);
mixer.Port newPort = mixer.Port.fromJson(data["responseData"]);
setState(() {
if (index >= 0) {
mixerState.inputs[index] = newPort;
} else if (index2 >= 0) {
mixerState.outputs[index2] = newPort;
mixer.Port? affectedPort =
findPort(mixerState, data["responseData"]["UUID"]);
if (affectedPort != null) {
affectedPort.name = newPort.name;
affectedPort.state = newPort.state;
affectedPort.properties = newPort.properties;
affectedPort.route = newPort.route;
}
});
}

14
lib/utils.dart Normal file
View File

@ -0,0 +1,14 @@
import 'package:gomix_flutter/mixer_state.dart' as mixer;
mixer.Port? findPort(mixer.MixerState mixerState, String uuid) {
int index = mixerState.inputs.indexWhere((element) => element.uuid == uuid);
if (index >= 0) {
return mixerState.inputs[index];
}
index = mixerState.outputs.indexWhere((element) => element.uuid == uuid);
if (index >= 0) {
return mixerState.outputs[index];
}
return null;
}