release
FongMi 4 weeks ago
parent 2aec3871f5
commit 4269bd388d
  1. 12
      app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java
  2. 2
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  3. 9
      app/src/main/java/com/fongmi/android/tv/utils/Task.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));
}

@ -241,8 +241,6 @@ public class SiteViewModel extends ViewModel {
future.addCallback(Task.callback(
result -> {
if (searchEpoch.get() == epoch) search.postValue(result);
},
error -> {
}
), MoreExecutors.directExecutor());
});

@ -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 <T> FutureCallback<T> callback(Consumer<T> onSuccess, Consumer<Throwable> onFailure) {
public static <T> FutureCallback<T> callback(Consumer<T> onSuccess) {
return callback(onSuccess, null);
}
public static <T> FutureCallback<T> callback(Consumer<T> onSuccess, @Nullable Consumer<Throwable> 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);
}
};
}

Loading…
Cancel
Save