mirror of
https://github.com/KRTirtho/spotube.git
synced 2026-05-08 16:24:36 +00:00
fix: ignore the device itself from broadcast list
This commit is contained in:
parent
a4854fca53
commit
6d4f7e9a85
@ -183,8 +183,8 @@ class SpotubeState extends ConsumerState<Spotube> {
|
||||
ref.watch(paletteProvider.select((s) => s?.dominantColor?.color));
|
||||
final router = ref.watch(routerProvider);
|
||||
|
||||
ref.read(connectServerProvider);
|
||||
ref.read(connectClientsProvider);
|
||||
ref.listen(connectServerProvider, (_, __) {});
|
||||
ref.listen(connectClientsProvider, (_, __) {});
|
||||
|
||||
useDisableBatteryOptimizations();
|
||||
useInitSysTray(ref);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import 'package:bonsoir/bonsoir.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:spotube/services/device_info/device_info.dart';
|
||||
|
||||
class ConnectClientsState {
|
||||
final List<BonsoirService> services;
|
||||
@ -31,9 +32,15 @@ class ConnectClientsNotifier extends AsyncNotifier<ConnectClientsState> {
|
||||
@override
|
||||
build() async {
|
||||
final discovery = BonsoirDiscovery(type: '_spotube._tcp');
|
||||
final deviceId = await DeviceInfoService.instance.deviceId();
|
||||
await discovery.ready;
|
||||
|
||||
final subscription = discovery.eventStream?.listen((event) {
|
||||
// ignore device itself
|
||||
if (event.service?.attributes["deviceId"] == deviceId) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.type) {
|
||||
case BonsoirDiscoveryEventType.discoveryServiceFound:
|
||||
state = AsyncData(state.value!.copyWith(
|
||||
|
||||
@ -239,6 +239,7 @@ final connectServerProvider = FutureProvider((ref) async {
|
||||
port: port,
|
||||
attributes: {
|
||||
"id": PrimitiveUtils.uuid.v4(),
|
||||
"deviceId": await DeviceInfoService.instance.deviceId(),
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@ -6,6 +6,19 @@ class DeviceInfoService {
|
||||
|
||||
static final instance = DeviceInfoService._();
|
||||
|
||||
Future<String> deviceId() async {
|
||||
final info = await deviceInfo.deviceInfo;
|
||||
|
||||
return switch (info) {
|
||||
AndroidDeviceInfo() => info.id,
|
||||
IosDeviceInfo() => info.identifierForVendor ?? info.model,
|
||||
MacOsDeviceInfo() => info.systemGUID ?? info.model,
|
||||
WindowsDeviceInfo() => info.deviceId,
|
||||
LinuxDeviceInfo() => info.machineId ?? info.id,
|
||||
_ => 'Unknown',
|
||||
};
|
||||
}
|
||||
|
||||
Future<String> computerName() async {
|
||||
final info = await deviceInfo.deviceInfo;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user