diff --git a/mobile/plugins/ente_cast_normal/lib/src/service.dart b/mobile/plugins/ente_cast_normal/lib/src/service.dart index eac98ae51..4c4624d8c 100644 --- a/mobile/plugins/ente_cast_normal/lib/src/service.dart +++ b/mobile/plugins/ente_cast_normal/lib/src/service.dart @@ -1,29 +1,49 @@ +import "dart:developer" as dev; + import "package:cast/cast.dart"; import "package:ente_cast/ente_cast.dart"; import "package:flutter/material.dart"; class CastServiceImpl extends CastService { + final String _appId = 'F5BCEC64'; + final String _pairRequestNamespace = 'urn:x-cast:pair-request'; + final Map sessionIDToDeviceID = {}; + @override Future connectDevice(BuildContext context, Object device) async { final CastDevice castDevice = device as CastDevice; final session = await CastSessionManager().startSession(castDevice); + session.messageStream.listen((message) { + if (message['type'] == "RECEIVER_STATUS") { + dev.log( + "got RECEIVER_STATUS, Send request to pair", + name: "CastServiceImpl", + ); + session.sendMessage(_pairRequestNamespace, {}); + } else { + print('receive message: $message'); + } + }); session.stateStream.listen((state) { if (state == CastSessionState.connected) { const snackBar = SnackBar(content: Text('Connected')); ScaffoldMessenger.of(context).showSnackBar(snackBar); - session.sendMessage('urn:x-cast:pair-request', {}); + sessionIDToDeviceID[session.sessionId] = castDevice; + debugPrint("Send request to pair"); + session.sendMessage(_pairRequestNamespace, {}); + } else if (state == CastSessionState.closed) { + dev.log('Session closed', name: 'CastServiceImpl'); + sessionIDToDeviceID.remove(session.sessionId); } }); - session.messageStream.listen((message) { - print('receive message: $message'); - }); + debugPrint("Send request to launch"); session.sendMessage(CastSession.kNamespaceReceiver, { 'type': 'LAUNCH', - 'appId': 'F5BCEC64', // set the appId of your app here + 'appId': _appId, // set the appId of your app here }); - session.sendMessage('urn:x-cast:pair-request', {}); + // session.sendMessage('urn:x-cast:pair-request', {}); } @override