mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-31 04:32:32 +00:00
chore(wake_on_lan): refactor wake on LAN integration
[skip ci]
This commit is contained in:
5
lib/api/wake_on_lan/platform/wake_on_lan_html.dart
Normal file
5
lib/api/wake_on_lan/platform/wake_on_lan_html.dart
Normal 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');
|
||||
36
lib/api/wake_on_lan/platform/wake_on_lan_io.dart
Normal file
36
lib/api/wake_on_lan/platform/wake_on_lan_io.dart
Normal 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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
5
lib/api/wake_on_lan/platform/wake_on_lan_stub.dart
Normal file
5
lib/api/wake_on_lan/platform/wake_on_lan_stub.dart
Normal 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');
|
||||
11
lib/api/wake_on_lan/wake_on_lan.dart
Normal file
11
lib/api/wake_on_lan/wake_on_lan.dart
Normal 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();
|
||||
}
|
||||
Reference in New Issue
Block a user