chore(wake_on_lan): refactor wake on LAN integration

[skip ci]
This commit is contained in:
Jagandeep Brar
2022-09-07 23:44:07 -04:00
parent 6f9e0e87ce
commit 3c9d705f80
7 changed files with 6 additions and 10 deletions

View File

@@ -0,0 +1,5 @@
import 'package:lunasea/api/wake_on_lan/wake_on_lan.dart';
bool isPlatformSupported() => false;
LunaWakeOnLAN getWakeOnLAN() =>
throw UnsupportedError('LunaWakeOnLAN unsupported');

View File

@@ -0,0 +1,36 @@
import 'package:lunasea/api/wake_on_lan/wake_on_lan.dart';
import 'package:lunasea/database/models/profile.dart';
import 'package:lunasea/vendor.dart';
import 'package:lunasea/widgets/ui.dart';
import 'package:lunasea/system/logger.dart';
import 'package:wake_on_lan/wake_on_lan.dart';
bool isPlatformSupported() => true;
LunaWakeOnLAN getWakeOnLAN() => IO();
class IO implements LunaWakeOnLAN {
@override
Future<void> wake() async {
LunaProfile profile = LunaProfile.current;
try {
final ip = IPv4Address(profile.wakeOnLANBroadcastAddress);
final mac = MACAddress(profile.wakeOnLANMACAddress);
return WakeOnLAN(ip, mac).wake().then((_) {
showLunaSuccessSnackBar(
title: 'wake_on_lan.MagicPacketSent'.tr(),
message: 'wake_on_lan.MagicPacketSentMessage'.tr(),
);
});
} catch (error, stack) {
LunaLogger().error(
'Failed to send wake on LAN magic packet',
error,
stack,
);
showLunaErrorSnackBar(
title: 'wake_on_lan.MagicPacketFailedToSend'.tr(),
error: error,
);
}
}
}

View File

@@ -0,0 +1,5 @@
import 'package:lunasea/api/wake_on_lan/wake_on_lan.dart';
bool isPlatformSupported() => false;
LunaWakeOnLAN getWakeOnLAN() =>
throw UnsupportedError('LunaWakeOnLAN unsupported');

View File

@@ -0,0 +1,11 @@
// ignore: always_use_package_imports
import 'platform/wake_on_lan_stub.dart'
if (dart.library.io) 'platform/wake_on_lan_io.dart'
if (dart.library.html) 'platform/wake_on_lan_html.dart';
abstract class LunaWakeOnLAN {
static bool get isSupported => isPlatformSupported();
factory LunaWakeOnLAN() => getWakeOnLAN();
Future<void> wake();
}