Skip to content

Commit 95a42e0

Browse files
committed
Add: handle suspended session cast
1 parent c5162bf commit 95a42e0

3 files changed

Lines changed: 16 additions & 9 deletions

File tree

app/contexts/remote/provider.native.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ export const RemoteProvider = ({ children }) => {
6868
logger.error('RemoteProvider', 'Error transferring playback (same type):', error)
6969
prevSelectedDeviceRef.current = null
7070
setStatus(STATUS.Connected)
71+
Player.switchPlayer('local')
72+
Player.playSong(config, songDispatch, song.queue, song.index)
7173
setSelectedDevice(null)
7274
})
7375
} else {
@@ -77,7 +79,9 @@ export const RemoteProvider = ({ children }) => {
7779
logger.error('RemoteProvider', 'Error transferring playback:', error)
7880
prevSelectedDeviceRef.current = null
7981
setStatus(STATUS.Connected)
80-
setSelectedDevice(prevDevice)
82+
Player.switchPlayer('local')
83+
Player.playSong(config, songDispatch, song.queue, song.index)
84+
setSelectedDevice(null)
8185
})
8286
}
8387
}

app/utils/player/playerCast.native.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,23 @@ const useEvent = (_song, songDispatch, nextSong) => {
2222
const client = useRemoteMediaClient()
2323
const remote = useRemote()
2424

25+
React.useEffect(() => {
26+
if (!client) return
27+
const sessionManager = GoogleCast.getSessionManager()
28+
const event = sessionManager.onSessionSuspended(() => {
29+
logger.info('RemotePlayer', 'Session suspended')
30+
remote.selectDevice(null)
31+
})
32+
return () => event.remove()
33+
}, [client, remote])
34+
2535
React.useEffect(() => {
2636
const events = []
2737
if (!client) return
2838
const sessionManager = GoogleCast.getSessionManager()
2939

3040
events.push(sessionManager.onSessionEnded(() => {
3141
logger.info('RemotePlayer', 'Session ended')
32-
remote.selectDevice(null)
33-
}))
34-
35-
events.push(sessionManager.onSessionSuspended(() => {
36-
logger.info('RemotePlayer', 'Session suspended')
37-
songDispatch({ type: 'setPlaying', state: State.Stopped })
3842
}))
3943

4044
events.push(client.onMediaStatusUpdated((mediaStatus) => {
@@ -192,7 +196,7 @@ const connectAndWait = (deviceId) => {
192196
const timeoutId = setTimeout(() => {
193197
events.forEach((event) => event.remove())
194198
reject(new Error('Connection to device timed out'))
195-
}, 60 * 1000)
199+
}, 30 * 1000)
196200
events.push(sessionManager.onSessionStarted(() => {
197201
clearTimeout(timeoutId)
198202
events.forEach((event) => event.remove())

app/utils/remote/upnp.native.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ const STATE_VALUES = {
235235
}
236236

237237
const convertState = (upnpState) => {
238-
console.log('UPNP State:', upnpState)
239238
return STATE_VALUES[upnpState] || State.Stopped
240239
}
241240

0 commit comments

Comments
 (0)