Skip to content

Commit 80c16e4

Browse files
author
Chris Bellew
committed
Update to newer version of Retrofit. Start using RxJava & lambdas. Fixed bug that caused crash after connecting to non-local client, disconnecting, then connecting to local device.
1 parent 587f122 commit 80c16e4

File tree

12 files changed

+465
-799
lines changed

12 files changed

+465
-799
lines changed

mobile/build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ android {
116116
dependencies {
117117
wearApp project(':wear')
118118
compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
119-
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
120-
compile('com.squareup.retrofit:converter-simplexml:2.0.0-beta1') {
119+
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
120+
compile('com.squareup.retrofit:converter-simplexml:2.0.0-beta2') {
121121
exclude group: 'xpp3', module: 'xpp3'
122122
exclude group: 'stax', module: 'stax-api'
123123
exclude group: 'stax', module: 'stax'
@@ -147,5 +147,7 @@ dependencies {
147147
compile ('com.github.worker8:tourguide:1.0.17-SNAPSHOT@aar'){
148148
transitive=true
149149
}
150+
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
150151
compile 'io.reactivex:rxjava:1.1.2'
152+
compile 'io.reactivex:rxandroid:0.23.+'
151153
}

mobile/src/main/java/com/atomjack/vcfp/PlexSubscription.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,10 @@ public void unsubscribe(final Runnable onFinish) {
387387
}
388388

389389
public void unsubscribe(final boolean notify, final Runnable onFinish) {
390-
if(mClient == null)
390+
if(mClient == null) {
391+
onUnsubscribed();
391392
return;
393+
}
392394
PlexHttpClient.unsubscribe(mClient, commandId, VoiceControlForPlexApplication.getInstance().prefs.getUUID(), VoiceControlForPlexApplication.getInstance().getString(R.string.app_name), new PlexHttpResponseHandler() {
393395
@Override
394396
public void onSuccess(PlexResponse response) {

mobile/src/main/java/com/atomjack/vcfp/VCFPHint.java

Lines changed: 66 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88

99
import com.atomjack.shared.Logger;
1010
import com.atomjack.shared.Preferences;
11-
import com.atomjack.vcfp.interfaces.PlexDirectoryHandler;
12-
import com.atomjack.vcfp.interfaces.PlexMediaHandler;
13-
import com.atomjack.vcfp.model.PlexDirectory;
14-
import com.atomjack.vcfp.model.PlexMedia;
1511
import com.atomjack.vcfp.model.PlexServer;
1612
import com.atomjack.vcfp.model.PlexTrack;
1713
import com.atomjack.vcfp.model.PlexVideo;
@@ -62,12 +58,7 @@ public void start() {
6258
handler.removeCallbacks(onFinishFailure);
6359
int delay = Utils.getRandomInt(10, 20);
6460
Logger.d("Delaying %d seconds for hint", delay);
65-
job = new Runnable() {
66-
@Override
67-
public void run() {
68-
doHint();
69-
}
70-
};
61+
job = () -> doHint();
7162
handler.postDelayed(job, delay*1000);
7263
}
7364

@@ -85,12 +76,9 @@ public void success() {
8576
server = VoiceControlForPlexApplication.gsonRead.fromJson(prefs.get(Preferences.SERVER, ""), PlexServer.class);
8677
final int delay = Utils.getRandomInt(5, 15);
8778
Logger.d("Finished doing hint, delaying %d before next hint", delay);
88-
handler.postDelayed(new Runnable() {
89-
@Override
90-
public void run() {
91-
hintTextView.startAnimation(out);
92-
handler.postDelayed(job, delay * 1000);
93-
}
79+
handler.postDelayed(() -> {
80+
hintTextView.startAnimation(out);
81+
handler.postDelayed(job, delay * 1000);
9482
}, 15 * 1000); // leave this hint up for 15 seconds, then delay for the random amount
9583
}
9684
}
@@ -103,19 +91,9 @@ public void failure() {
10391

10492
private HintRunnable onFinish = new HintRunnable();
10593

106-
private Runnable onFinishSuccess = new Runnable() {
107-
@Override
108-
public void run() {
109-
onFinish.success();
110-
}
111-
};
94+
private Runnable onFinishSuccess = () -> onFinish.success();
11295

113-
private Runnable onFinishFailure = new Runnable() {
114-
@Override
115-
public void run() {
116-
onFinish.failure();
117-
}
118-
};
96+
private Runnable onFinishFailure = () -> onFinish.failure();
11997

12098
public void doHint() {
12199
if(active) {
@@ -150,137 +128,111 @@ private void setText(String text) {
150128
// hint methods
151129

152130
private void hintWatchMovie() {
153-
PlexHttpClient.getRandomMovie(server, new PlexMediaHandler() {
154-
@Override
155-
public void onFinish(PlexMedia media) {
156-
if(media != null) {
157-
setText(String.format(context.getString(R.string.hint_watch_movie), media.getTitle()));
158-
handler.post(onFinishSuccess);
159-
} else {
160-
handler.post(onFinishFailure);
161-
}
131+
PlexHttpClient.getRandomMovie(server, media -> {
132+
if(media != null) {
133+
setText(String.format(context.getString(R.string.hint_watch_movie), media.getTitle()));
134+
handler.post(onFinishSuccess);
135+
} else {
136+
handler.post(onFinishFailure);
162137
}
163138
});
164139
}
165140

166141
private void hintWatchOnDeckEpisode() {
167-
PlexHttpClient.getRandomOnDeck(server, new PlexMediaHandler() {
168-
@Override
169-
public void onFinish(PlexMedia media) {
170-
if(media != null) {
171-
setText(String.format(context.getString(R.string.hint_watch_movie), media.getTitle()));
172-
handler.post(onFinishSuccess);
173-
} else {
174-
handler.post(onFinishFailure);
175-
}
142+
PlexHttpClient.getRandomOnDeck(server, media -> {
143+
if(media != null) {
144+
setText(String.format(context.getString(R.string.hint_watch_movie), media.getTitle()));
145+
handler.post(onFinishSuccess);
146+
} else {
147+
handler.post(onFinishFailure);
176148
}
177149
});
178150
}
179151

180152
// watch season x episode y of show
181153
private void hintWatchSeasonEpisode() {
182-
PlexHttpClient.getRandomEpisode(server, new PlexMediaHandler() {
183-
@Override
184-
public void onFinish(PlexMedia media) {
185-
if(media != null) {
186-
PlexVideo video = (PlexVideo) media;
187-
setText(String.format(context.getString(R.string.hint_watch_season_episode), video.parentIndex, video.index, video.getTitle()));
188-
handler.post(onFinishSuccess);
189-
} else {
190-
handler.post(onFinishFailure);
191-
}
154+
PlexHttpClient.getRandomEpisode(server, media -> {
155+
if(media != null) {
156+
PlexVideo video = (PlexVideo) media;
157+
setText(String.format(context.getString(R.string.hint_watch_season_episode), video.parentIndex, video.index, video.getTitle()));
158+
handler.post(onFinishSuccess);
159+
} else {
160+
handler.post(onFinishFailure);
192161
}
193162
});
194163
}
195164

196165
private void hintWatchSeasonEpisodeAlternate() {
197-
PlexHttpClient.getRandomEpisode(server, new PlexMediaHandler() {
198-
@Override
199-
public void onFinish(PlexMedia media) {
200-
if(media != null) {
201-
Logger.d("Got media: %s", media.getTitle());
202-
PlexVideo video = (PlexVideo) media;
203-
setText(String.format(context.getString(R.string.hint_watch_season_episode2), video.getTitle(), video.parentIndex, video.index));
204-
handler.post(onFinishSuccess);
205-
} else {
206-
handler.post(onFinishFailure);
207-
}
166+
PlexHttpClient.getRandomEpisode(server, media -> {
167+
if(media != null) {
168+
Logger.d("Got media: %s", media.getTitle());
169+
PlexVideo video = (PlexVideo) media;
170+
setText(String.format(context.getString(R.string.hint_watch_season_episode2), video.getTitle(), video.parentIndex, video.index));
171+
handler.post(onFinishSuccess);
172+
} else {
173+
handler.post(onFinishFailure);
208174
}
209175
});
210176
}
211177

212178
private void hintWatchEpisode() {
213-
PlexHttpClient.getRandomEpisode(server, new PlexMediaHandler() {
214-
@Override
215-
public void onFinish(PlexMedia media) {
216-
if(media != null) {
217-
PlexVideo video = (PlexVideo) media;
218-
setText(String.format(context.getString(R.string.hint_watch_episode), video.getEpisodeTitle(), video.getTitle()));
219-
handler.post(onFinishSuccess);
220-
} else {
221-
handler.post(onFinishFailure);
222-
}
179+
PlexHttpClient.getRandomEpisode(server, media -> {
180+
if(media != null) {
181+
PlexVideo video = (PlexVideo) media;
182+
Logger.d("[VCFPHint] video: %s %s", video.getEpisodeTitle(), video.getTitle());
183+
setText(String.format(context.getString(R.string.hint_watch_episode), video.getEpisodeTitle(), video.getTitle()));
184+
handler.post(onFinishSuccess);
185+
} else {
186+
handler.post(onFinishFailure);
223187
}
224188
});
225189
}
226190

227191
// listen to song by artist
228192
private void hintListenToSong() {
229-
PlexHttpClient.getRandomSong(server, new PlexMediaHandler() {
230-
@Override
231-
public void onFinish(PlexMedia media) {
232-
if(media != null) {
233-
PlexTrack track = (PlexTrack) media;
234-
setText(String.format(context.getString(R.string.hint_listen_to_song), track.title, track.grandparentTitle));
235-
handler.post(onFinishSuccess);
236-
} else {
237-
handler.post(onFinishFailure);
238-
}
193+
PlexHttpClient.getRandomSong(server, media -> {
194+
if(media != null) {
195+
PlexTrack track = (PlexTrack) media;
196+
setText(String.format(context.getString(R.string.hint_listen_to_song), track.title, track.grandparentTitle));
197+
handler.post(onFinishSuccess);
198+
} else {
199+
handler.post(onFinishFailure);
239200
}
240201
});
241202
}
242203

243204
// listen to album by artist
244205
private void hintListenToAlbumByArtist() {
245-
PlexHttpClient.getRandomAlbum(server, new PlexDirectoryHandler() {
246-
@Override
247-
public void onFinish(PlexDirectory directory) {
248-
if(directory != null) {
249-
setText(String.format(context.getString(R.string.hint_listen_to_album_by_artist), directory.title, directory.parentTitle));
250-
handler.post(onFinishSuccess);
251-
} else {
252-
handler.post(onFinishFailure);
253-
}
206+
PlexHttpClient.getRandomAlbum(server, directory -> {
207+
if(directory != null) {
208+
setText(String.format(context.getString(R.string.hint_listen_to_album_by_artist), directory.title, directory.parentTitle));
209+
handler.post(onFinishSuccess);
210+
} else {
211+
handler.post(onFinishFailure);
254212
}
255213
});
256214
}
257215

258216
// listen to album
259217
private void hintListenToAlbum() {
260-
PlexHttpClient.getRandomAlbum(server, new PlexDirectoryHandler() {
261-
@Override
262-
public void onFinish(PlexDirectory directory) {
263-
if(directory != null) {
264-
setText(String.format(context.getString(R.string.hint_listen_to_album), directory.title));
265-
handler.post(onFinishSuccess);
266-
} else {
267-
handler.post(onFinishFailure);
268-
}
218+
PlexHttpClient.getRandomAlbum(server, directory -> {
219+
if(directory != null) {
220+
setText(String.format(context.getString(R.string.hint_listen_to_album), directory.title));
221+
handler.post(onFinishSuccess);
222+
} else {
223+
handler.post(onFinishFailure);
269224
}
270225
});
271226
}
272227

273228
// listen to artist
274229
private void hintListenToArtist() {
275-
PlexHttpClient.getRandomArtist(server, new PlexDirectoryHandler() {
276-
@Override
277-
public void onFinish(PlexDirectory directory) {
278-
if(directory != null) {
279-
setText(String.format(context.getString(R.string.hint_listen_to_artist), directory.title));
280-
handler.post(onFinishSuccess);
281-
} else {
282-
handler.post(onFinishFailure);
283-
}
230+
PlexHttpClient.getRandomArtist(server, directory -> {
231+
if(directory != null) {
232+
setText(String.format(context.getString(R.string.hint_listen_to_artist), directory.title));
233+
handler.post(onFinishSuccess);
234+
} else {
235+
handler.post(onFinishFailure);
284236
}
285237
});
286238
}

mobile/src/main/java/com/atomjack/vcfp/VideoControllerView.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@
4242
import android.widget.SeekBar.OnSeekBarChangeListener;
4343
import android.widget.TextView;
4444

45-
import com.atomjack.shared.Logger;
46-
4745
import java.lang.ref.WeakReference;
4846
import java.util.ArrayList;
4947
import java.util.Formatter;

0 commit comments

Comments
 (0)