Skip to content

Commit ee67575

Browse files
author
Chris Bellew
committed
If a shortcut with a hard-coded client is used, and we're already subscribed to different client, unsubscribe from it before proceeding.
1 parent 9421d7e commit ee67575

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

mobile/src/main/java/com/atomjack/vcfp/services/PlexSearchService.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,20 @@ public void onApplicationDisconnected(int errorCode) {
252252
return Service.START_NOT_STICKY;
253253
}
254254

255+
if(castPlayerManager.isSubscribed()) {
256+
if(!client.machineIdentifier.equals(castPlayerManager.mClient.machineIdentifier)) {
257+
Logger.d("Subscribed to a chromecast but need to play on a different client.");
258+
castPlayerManager.unsubscribe();
259+
}
260+
} else if(plexSubscription.isSubscribed()) {
261+
// Chromecast clients don't have a machine identifier, so if the selected client doesn't have one, it's
262+
// a Chromecast, and we're already subscribed to a non-chromecast, so unsubscribe.
263+
if(client.machineIdentifier == null || !client.machineIdentifier.equals(plexSubscription.getClient().machineIdentifier)) {
264+
Logger.d("Subscribed to non-chromecast client but need to play on a different client.");
265+
plexSubscription.unsubscribe();
266+
}
267+
}
268+
255269
// if(client.isCastClient)
256270
// castPlayerManager.subscribe(client);
257271
if (queries.size() > 0) {
@@ -297,21 +311,21 @@ private void startup() {
297311

298312

299313
Logger.d("Starting up with query string: %s", queryText);
300-
tracks = new ArrayList<PlexTrack>();
301-
videos = new ArrayList<PlexVideo>();
302-
shows = new ArrayList<PlexDirectory>();
314+
tracks = new ArrayList<>();
315+
videos = new ArrayList<>();
316+
shows = new ArrayList<>();
303317

304318
final PlexServer defaultServer = VoiceControlForPlexApplication.gsonRead.fromJson(VoiceControlForPlexApplication.getInstance().prefs.get(Preferences.SERVER, ""), PlexServer.class);
305319
if(specifiedServer != null && client != null && !specifiedServer.name.equals(getResources().getString(R.string.scan_all))) {
306320
// got a specified server and mClient from a shortcut
307-
Logger.d("Got hardcoded server and mClient from shortcut with %d music sections", specifiedServer.musicSections.size());
308-
plexmediaServers = new ConcurrentHashMap<String, PlexServer>();
321+
Logger.d("Got hardcoded server and client from shortcut with %d music sections", specifiedServer.musicSections.size());
322+
plexmediaServers = new ConcurrentHashMap<>();
309323
plexmediaServers.put(specifiedServer.name, specifiedServer);
310324
setClient();
311325
} else if(specifiedServer == null && defaultServer != null && !defaultServer.name.equals(getResources().getString(R.string.scan_all))) {
312326
// Use the server specified in the main settings
313327
Logger.d("Using server and client specified in main settings");
314-
plexmediaServers = new ConcurrentHashMap<String, PlexServer>();
328+
plexmediaServers = new ConcurrentHashMap<>();
315329
plexmediaServers.put(defaultServer.name, defaultServer);
316330
setClient();
317331
} else {

0 commit comments

Comments
 (0)