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));
|
ref.watch(paletteProvider.select((s) => s?.dominantColor?.color));
|
||||||
final router = ref.watch(routerProvider);
|
final router = ref.watch(routerProvider);
|
||||||
|
|
||||||
ref.read(connectServerProvider);
|
ref.listen(connectServerProvider, (_, __) {});
|
||||||
ref.read(connectClientsProvider);
|
ref.listen(connectClientsProvider, (_, __) {});
|
||||||
|
|
||||||
useDisableBatteryOptimizations();
|
useDisableBatteryOptimizations();
|
||||||
useInitSysTray(ref);
|
useInitSysTray(ref);
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import 'package:bonsoir/bonsoir.dart';
|
import 'package:bonsoir/bonsoir.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
import 'package:spotube/services/device_info/device_info.dart';
|
||||||
|
|
||||||
class ConnectClientsState {
|
class ConnectClientsState {
|
||||||
final List<BonsoirService> services;
|
final List<BonsoirService> services;
|
||||||
@ -31,9 +32,15 @@ class ConnectClientsNotifier extends AsyncNotifier<ConnectClientsState> {
|
|||||||
@override
|
@override
|
||||||
build() async {
|
build() async {
|
||||||
final discovery = BonsoirDiscovery(type: '_spotube._tcp');
|
final discovery = BonsoirDiscovery(type: '_spotube._tcp');
|
||||||
|
final deviceId = await DeviceInfoService.instance.deviceId();
|
||||||
await discovery.ready;
|
await discovery.ready;
|
||||||
|
|
||||||
final subscription = discovery.eventStream?.listen((event) {
|
final subscription = discovery.eventStream?.listen((event) {
|
||||||
|
// ignore device itself
|
||||||
|
if (event.service?.attributes["deviceId"] == deviceId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case BonsoirDiscoveryEventType.discoveryServiceFound:
|
case BonsoirDiscoveryEventType.discoveryServiceFound:
|
||||||
state = AsyncData(state.value!.copyWith(
|
state = AsyncData(state.value!.copyWith(
|
||||||
|
|||||||
@ -239,6 +239,7 @@ final connectServerProvider = FutureProvider((ref) async {
|
|||||||
port: port,
|
port: port,
|
||||||
attributes: {
|
attributes: {
|
||||||
"id": PrimitiveUtils.uuid.v4(),
|
"id": PrimitiveUtils.uuid.v4(),
|
||||||
|
"deviceId": await DeviceInfoService.instance.deviceId(),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,19 @@ class DeviceInfoService {
|
|||||||
|
|
||||||
static final instance = 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 {
|
Future<String> computerName() async {
|
||||||
final info = await deviceInfo.deviceInfo;
|
final info = await deviceInfo.deviceInfo;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user