🐛 Don't break references when updating a port
This commit is contained in:
@ -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
14
lib/utils.dart
Normal 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;
|
||||
}
|
Reference in New Issue
Block a user