Skip to content

Commit f404c86

Browse files
author
Chris Bellew
committed
Automatically resubscribe to a client on startup if the client was never unsubscribed from (in the event of a crash).
1 parent 8cb1790 commit f404c86

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

mobile/src/main/java/com/atomjack/vcfp/activities/VCFPActivity.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,19 @@ protected void onCreate(Bundle savedInstanceState) {
152152

153153
plexSubscription = VoiceControlForPlexApplication.getInstance().plexSubscription;
154154
castPlayerManager = VoiceControlForPlexApplication.getInstance().castPlayerManager;
155-
if(plexSubscription.isSubscribed()) {
156-
Logger.d("[VCFPActivity] setting client to %s", plexSubscription.mClient);
157-
mClient = plexSubscription.mClient;
158-
} else if(castPlayerManager.isSubscribed()) {
159-
Logger.d("[VCFPActivity] setting client to %s", castPlayerManager.mClient);
160-
mClient = castPlayerManager.mClient;
161-
} else {
155+
156+
if(gsonRead.fromJson(VoiceControlForPlexApplication.getInstance().prefs.get(Preferences.SUBSCRIBED_CLIENT, ""), PlexClient.class) != null) {
157+
mClient = gsonRead.fromJson(VoiceControlForPlexApplication.getInstance().prefs.get(Preferences.SUBSCRIBED_CLIENT, ""), PlexClient.class);
158+
if(mClient.isCastClient) {
159+
if(!castPlayerManager.isSubscribed()) {
160+
castPlayerManager.subscribe(mClient);
161+
}
162+
} else if(!plexSubscription.isSubscribed()) {
163+
plexSubscription.subscribe(mClient);
164+
}
165+
}
166+
167+
if(!plexSubscription.isSubscribed() && !castPlayerManager.isSubscribed()) {
162168
Logger.d("Not subscribed: %s", plexSubscription.mClient);
163169
// In case the notification is still up due to a crash
164170
VoiceControlForPlexApplication.getInstance().cancelNotification();
@@ -449,6 +455,8 @@ public void onSubscribed(PlexClient _client) {
449455
Logger.d("VCFPActivity: onSubscribed: %s", _client);
450456
mClient = _client;
451457

458+
VoiceControlForPlexApplication.getInstance().prefs.put(Preferences.SUBSCRIBED_CLIENT, gsonWrite.toJson(_client));
459+
452460
subscribing = false;
453461
try {
454462
setCastIconActive();
@@ -613,6 +621,7 @@ public void onUnsubscribed() {
613621
setCastIconInactive();
614622
nowPlayingMedia = null;
615623
VoiceControlForPlexApplication.getInstance().cancelNotification();
624+
VoiceControlForPlexApplication.getInstance().prefs.remove(Preferences.SUBSCRIBED_CLIENT);
616625
sendWearPlaybackChange();
617626
feedback.m(R.string.disconnected);
618627
}

shared/src/main/java/com/atomjack/shared/Preferences.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class Preferences {
2626
public final static String NUM_CINEMA_TRAILERS = "pref.num_cinema_trailers";
2727
public final static String CHROMECAST_VIDEO_QUALITY_LOCAL = "pref.chromecast_video_quality_local";
2828
public final static String CHROMECAST_VIDEO_QUALITY_REMOTE = "pref.chromecast_video_quality_remote";
29+
public final static String SUBSCRIBED_CLIENT = "pref.subscribed_client";
2930

3031
public Preferences(Context context) {
3132
mPrefs = context.getSharedPreferences(PREFS, context.MODE_PRIVATE);

0 commit comments

Comments
 (0)