| .. | .. |
|---|
| 3 | 3 | |
|---|
| 4 | 4 | import '../models/server_config.dart'; |
|---|
| 5 | 5 | import '../providers/providers.dart'; |
|---|
| 6 | | -import '../services/websocket_service.dart'; |
|---|
| 6 | +import '../services/websocket_service.dart' show ConnectionStatus; |
|---|
| 7 | 7 | import '../services/wol_service.dart'; |
|---|
| 8 | 8 | import '../theme/app_theme.dart'; |
|---|
| 9 | 9 | import '../widgets/status_dot.dart'; |
|---|
| .. | .. |
|---|
| 21 | 21 | late final TextEditingController _remoteHostController; |
|---|
| 22 | 22 | late final TextEditingController _portController; |
|---|
| 23 | 23 | late final TextEditingController _macController; |
|---|
| 24 | + late final TextEditingController _mqttTokenController; |
|---|
| 24 | 25 | bool _isWaking = false; |
|---|
| 25 | 26 | |
|---|
| 26 | 27 | @override |
|---|
| .. | .. |
|---|
| 35 | 36 | TextEditingController(text: '${config?.port ?? 8765}'); |
|---|
| 36 | 37 | _macController = |
|---|
| 37 | 38 | TextEditingController(text: config?.macAddress ?? ''); |
|---|
| 39 | + _mqttTokenController = |
|---|
| 40 | + TextEditingController(text: config?.mqttToken ?? ''); |
|---|
| 38 | 41 | } |
|---|
| 39 | 42 | |
|---|
| 40 | 43 | @override |
|---|
| .. | .. |
|---|
| 43 | 46 | _remoteHostController.dispose(); |
|---|
| 44 | 47 | _portController.dispose(); |
|---|
| 45 | 48 | _macController.dispose(); |
|---|
| 49 | + _mqttTokenController.dispose(); |
|---|
| 46 | 50 | super.dispose(); |
|---|
| 47 | 51 | } |
|---|
| 48 | 52 | |
|---|
| .. | .. |
|---|
| 58 | 62 | macAddress: _macController.text.trim().isEmpty |
|---|
| 59 | 63 | ? null |
|---|
| 60 | 64 | : _macController.text.trim(), |
|---|
| 65 | + mqttToken: _mqttTokenController.text.trim().isEmpty |
|---|
| 66 | + ? null |
|---|
| 67 | + : _mqttTokenController.text.trim(), |
|---|
| 61 | 68 | ); |
|---|
| 62 | 69 | |
|---|
| 63 | 70 | await ref.read(serverConfigProvider.notifier).save(config); |
|---|
| .. | .. |
|---|
| 183 | 190 | hintText: 'AA:BB:CC:DD:EE:FF', |
|---|
| 184 | 191 | ), |
|---|
| 185 | 192 | ), |
|---|
| 193 | + const SizedBox(height: 16), |
|---|
| 194 | + |
|---|
| 195 | + // MQTT Token |
|---|
| 196 | + Text('MQTT Token', |
|---|
| 197 | + style: Theme.of(context).textTheme.bodyMedium), |
|---|
| 198 | + const SizedBox(height: 4), |
|---|
| 199 | + TextFormField( |
|---|
| 200 | + controller: _mqttTokenController, |
|---|
| 201 | + decoration: const InputDecoration( |
|---|
| 202 | + hintText: 'Shared secret for MQTT auth', |
|---|
| 203 | + ), |
|---|
| 204 | + obscureText: true, |
|---|
| 205 | + ), |
|---|
| 186 | 206 | const SizedBox(height: 24), |
|---|
| 187 | 207 | |
|---|
| 188 | 208 | // Save button |
|---|