diff --git a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java index 6bd13c82e..86e22127d 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java @@ -82,14 +82,14 @@ public class LiveViewModel extends ViewModel { setTimeZone(item); verify(item); return item; - }, live::postValue, t -> { - if (t instanceof ExtractException) url.postValue(Result.error(t.getMessage())); + }, live::postValue, error -> { + if (error instanceof ExtractException) url.postValue(Result.error(error.getMessage())); else live.postValue(new Live()); }); } public void getXml(Live item) { - execute(TaskType.XML, () -> item.getEpgXml().stream().anyMatch(url -> parseXml(item, url)), xml::postValue, t -> xml.postValue(false)); + execute(TaskType.XML, () -> item.getEpgXml().stream().anyMatch(url -> parseXml(item, url)), xml::postValue, error -> xml.postValue(false)); } private boolean parseXml(Live item, String url) { @@ -106,14 +106,14 @@ public class LiveViewModel extends ViewModel { String today = holder.formatDate(0); execute(TaskType.EPG, () -> { for (int offset : new int[]{-1, 0, 1}) fetchEpgDay(item, holder, offset); - return item.getDataList().stream().filter(e -> e.equal(today)).findFirst().orElseGet(Epg::new).selected(); - }, epg::postValue, t -> epg.postValue(new Epg())); + return item.getDataList().stream().filter(epg -> epg.equal(today)).findFirst().orElseGet(Epg::new).selected(); + }, epg::postValue, error -> epg.postValue(new Epg())); } private void fetchEpgDay(Channel item, FormatHolder holder, int offset) { String date = holder.formatDate(offset); String url = item.getEpg().replace("{date}", date); - boolean need = url.startsWith("http") && item.getDataList().stream().noneMatch(e -> e.equal(date)); + boolean need = url.startsWith("http") && item.getDataList().stream().noneMatch(epg -> epg.equal(date)); if (need) item.setData(Epg.objectFrom(OkHttp.string(url), item.getTvgId(), holder.zoneId)); } diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index c46a230bc..27ae7b0e5 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -241,8 +241,6 @@ public class SiteViewModel extends ViewModel { future.addCallback(Task.callback( result -> { if (searchEpoch.get() == epoch) search.postValue(result); - }, - error -> { } ), MoreExecutors.directExecutor()); }); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Task.java b/app/src/main/java/com/fongmi/android/tv/utils/Task.java index 237680dbb..703b2e937 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Task.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Task.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.utils; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.ListeningExecutorService; @@ -46,7 +47,11 @@ public class Task { scheduler.schedule(task, delay, unit); } - public static FutureCallback callback(Consumer onSuccess, Consumer onFailure) { + public static FutureCallback callback(Consumer onSuccess) { + return callback(onSuccess, null); + } + + public static FutureCallback callback(Consumer onSuccess, @Nullable Consumer onFailure) { return new FutureCallback<>() { @Override public void onSuccess(T result) { @@ -55,7 +60,7 @@ public class Task { @Override public void onFailure(@NonNull Throwable error) { - onFailure.accept(error); + if (onFailure != null) onFailure.accept(error); } }; }