setRefresh method

Future<void> setRefresh()

Setups the Google Earth in slave screens to refresh every 2 seconds.

Implementation

Future<void> setRefresh() async {
  final pw = _sshData.passwordOrKey;

  const search = '<href>##LG_PHPIFACE##kml\\/slave_{{slave}}.kml<\\/href>';
  const replace =
      '<href>##LG_PHPIFACE##kml\\/slave_{{slave}}.kml<\\/href><refreshMode>onInterval<\\/refreshMode><refreshInterval>2<\\/refreshInterval>';
  final command =
      'echo $pw | sudo -S sed -i "s/$search/$replace/" ~/earth/kml/slave/myplaces.kml';

  final clear =
      'echo $pw | sudo -S sed -i "s/$replace/$search/" ~/earth/kml/slave/myplaces.kml';

  for (var i = 2; i <= screenAmount; i++) {
    final clearCmd = clear.replaceAll('{{slave}}', i.toString());
    final cmd = command.replaceAll('{{slave}}', i.toString());
    String query = 'sshpass -p $pw ssh -t lg$i \'{{cmd}}\'';

    try {
      await _sshData.execute(query.replaceAll('{{cmd}}', clearCmd));
      await _sshData.execute(query.replaceAll('{{cmd}}', cmd));
    } catch (e) {
      // ignore: avoid_print
      print(e);
    }
  }

  await reboot();
}