Support sync replace mode

pull/137/head
FongMi 3 years ago
parent dde7cec4a5
commit 67d3a72c7e
  1. 2
      app/src/main/java/com/fongmi/android/tv/db/dao/KeepDao.java
  2. 11
      app/src/main/java/com/fongmi/android/tv/server/process/ActionRequestProcess.java
  3. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/DeviceAdapter.java
  4. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/CastDialog.java
  5. 14
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/SyncDialog.java

@ -31,6 +31,6 @@ public abstract class KeepDao extends BaseDao<Keep> {
@Query("DELETE FROM Keep WHERE type = 0 AND cid = :cid")
public abstract void delete(int cid);
@Query("DELETE FROM Keep")
@Query("DELETE FROM Keep WHERE type = 0")
public abstract void delete();
}

@ -74,10 +74,11 @@ public class ActionRequestProcess implements RequestProcess {
}
public void onSync(Map<String, String> params) {
boolean sync = params.get("mode").equals("0");
boolean keep = params.get("type").equals("keep");
boolean history = params.get("type").equals("history");
Device device = Device.objectFrom(params.get("device"));
if (params.get("device") != null) {
if (params.get("device") != null && sync) {
if (history) sendHistory(device, params);
else if (keep) sendKeep(device);
}
@ -94,7 +95,7 @@ public class ActionRequestProcess implements RequestProcess {
FormBody.Builder body = new FormBody.Builder();
body.add("url", url);
body.add("targets", App.gson().toJson(History.get(Config.find(url, 0).getId())));
OkHttp.newCall(OkHttp.client(Constant.TIMEOUT_SYNC), device.getIp().concat("/action?do=sync&type=history"), body.build()).execute();
OkHttp.newCall(OkHttp.client(Constant.TIMEOUT_SYNC), device.getIp().concat("/action?do=sync&mode=0&type=history"), body.build()).execute();
} catch (Exception e) {
App.post(() -> Notify.show(e.getMessage()));
}
@ -105,7 +106,7 @@ public class ActionRequestProcess implements RequestProcess {
FormBody.Builder body = new FormBody.Builder();
body.add("targets", App.gson().toJson(Keep.getVod()));
body.add("configs", App.gson().toJson(Config.findUrls()));
OkHttp.newCall(OkHttp.client(Constant.TIMEOUT_SYNC), device.getIp().concat("/action?do=sync&type=keep"), body.build()).execute();
OkHttp.newCall(OkHttp.client(Constant.TIMEOUT_SYNC), device.getIp().concat("/action?do=sync&mode=0&type=keep"), body.build()).execute();
} catch (Exception e) {
App.post(() -> Notify.show(e.getMessage()));
}
@ -115,8 +116,10 @@ public class ActionRequestProcess implements RequestProcess {
String url = params.get("url");
if (TextUtils.isEmpty(url)) return;
Config config = Config.find(url, 0);
boolean replace = params.get("mode").equals("1");
List<History> targets = History.arrayFrom(params.get("targets"));
if (ApiConfig.get().getConfig().equals(config)) {
if (replace) History.delete(config.getId());
History.sync(targets);
} else {
ApiConfig.load(config, getCallback(targets));
@ -142,9 +145,11 @@ public class ActionRequestProcess implements RequestProcess {
public void syncKeep(Map<String, String> params) {
List<Config> configs = Config.arrayFrom(params.get("configs"));
List<Keep> targets = Keep.arrayFrom(params.get("targets"));
boolean replace = params.get("mode").equals("1");
if (ApiConfig.getUrl() == null && configs.size() > 0) {
ApiConfig.load(Config.find(configs.get(0), 0), getCallback(configs, targets));
} else {
if (replace) Keep.deleteAll();
Keep.sync(configs, targets);
}
}

@ -26,6 +26,8 @@ public class DeviceAdapter extends RecyclerView.Adapter<DeviceAdapter.ViewHolder
public interface OnClickListener {
void onItemClick(Device item);
boolean onLongClick(Device item);
}
public void addAll(List<Device> items) {
@ -71,6 +73,7 @@ public class DeviceAdapter extends RecyclerView.Adapter<DeviceAdapter.ViewHolder
holder.binding.host.setText(item.getHost());
holder.binding.type.setImageResource(getIcon(item));
holder.binding.getRoot().setOnClickListener(v -> mListener.onItemClick(item));
holder.binding.getRoot().setOnLongClickListener(v -> mListener.onLongClick(item));
}
private int getIcon(Device item) {

@ -194,6 +194,11 @@ public class CastDialog extends BaseDialog implements DeviceAdapter.OnClickListe
});
}
@Override
public boolean onLongClick(Device item) {
return false;
}
@Override
public void onDestroyView() {
super.onDestroyView();

@ -134,7 +134,17 @@ public class SyncDialog extends BaseDialog implements DeviceAdapter.OnClickListe
@Override
public void onItemClick(Device item) {
OkHttp.newCall(client, item.getIp().concat("/action?do=sync&type=").concat(type), body.build()).enqueue(new Callback() {
OkHttp.newCall(client, item.getIp().concat("/action?do=sync&mode=0&type=").concat(type), body.build()).enqueue(getCallback());
}
@Override
public boolean onLongClick(Device item) {
OkHttp.newCall(client, item.getIp().concat("/action?do=sync&mode=1&type=").concat(type), body.build()).enqueue(getCallback());
return true;
}
private Callback getCallback() {
return new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) {
App.post(() -> onSuccess());
@ -144,7 +154,7 @@ public class SyncDialog extends BaseDialog implements DeviceAdapter.OnClickListe
public void onFailure(@NonNull Call call, @NonNull IOException e) {
App.post(() -> onError());
}
});
};
}
@Override

Loading…
Cancel
Save