Commit c92e1976 authored by fallenstardust's avatar fallenstardust

fix 删除卡组时因路径为空引起的异常

parent c89c6179
...@@ -163,7 +163,7 @@ public class DeckSquareApiUtil { ...@@ -163,7 +163,7 @@ public class DeckSquareApiUtil {
Gson gson = new Gson(); Gson gson = new Gson();
// Convert JSON to Java object using Gson // Convert JSON to Java object using Gson
result = gson.fromJson(responseBodyString, DownloadDeckResponse.class); result = gson.fromJson(responseBodyString, DownloadDeckResponse.class);
LogUtil.i(TAG, responseBodyString); LogUtil.i(TAG, "getDeckById: " + responseBodyString);
return result; return result;
...@@ -245,52 +245,6 @@ public class DeckSquareApiUtil { ...@@ -245,52 +245,6 @@ public class DeckSquareApiUtil {
return pushDecks(deckDataList, loginToken, deckIdList); return pushDecks(deckDataList, loginToken, deckIdList);
} }
public static void deleteDecks(List<DeckFile> deckFileList) {
if (SharedPreferenceUtil.getServerToken() != null) {
LoginToken loginToken = new LoginToken(
SharedPreferenceUtil.getServerUserId(),
SharedPreferenceUtil.getServerToken()
);
// 创建局部变量持有引用
final List<DeckFile> deleteDeckList = new ArrayList<>(deckFileList);
List<MyOnlineDeckDetail> onlineDecks = new ArrayList<>();
// 使用VUiKit避开UI线程进行网络请求
VUiKit.defer().when(() -> {
// 先判断缓存表是否需要更新
if (DeckManagerFragment.getOriginalData().isEmpty()) {
// 同步获取在线卡组列表(在后台线程中可以安全执行网络操作)
MyDeckResponse result = DeckSquareApiUtil.getUserDecks(loginToken);
if (result != null && result.getData() != null) {
DeckManagerFragment.getOriginalData().addAll(result.getData());
}
}
onlineDecks.addAll(DeckManagerFragment.getOriginalData());
// 处理删除标记
for (DeckFile deleteDeckFile : deleteDeckList) {
for (MyOnlineDeckDetail onlineDeckDetail : onlineDecks) {
if (deleteDeckFile.getName().equals(onlineDeckDetail.getDeckName()) && deleteDeckFile.getTypeName().equals(onlineDeckDetail.getDeckType())) {
onlineDeckDetail.setDelete(true);
deleteDeckFile.setDeckId(onlineDeckDetail.getDeckId());
}
}
}
DeckManagerFragment.getOriginalData().clear();
DeckManagerFragment.getOriginalData().addAll(onlineDecks);
LogUtil.d(TAG,onlineDecks.toString());
// 执行同步操作(在UI线程不得不进行网络请求,须转在后台线程)
syncMyDecks(toDeckItemList(DeckManagerFragment.getOriginalData()), loginToken);//TODO 需要解决无法
return true;
}).fail((e) -> {
LogUtil.e(TAG, "删除卡组失败:" + e);
}).done((result) -> {
LogUtil.d(TAG, "卡组删除同步成功");
});
}
}
/** /**
* 批量上传已经在云上存在的卡组 * 批量上传已经在云上存在的卡组
* *
...@@ -306,18 +260,22 @@ public class DeckSquareApiUtil { ...@@ -306,18 +260,22 @@ public class DeckSquareApiUtil {
/* 构造json */ /* 构造json */
List<PushMultiDeck.DeckData> dataList = new ArrayList<>(); List<PushMultiDeck.DeckData> dataList = new ArrayList<>();
for (MyDeckItem item : deckItems) { for (MyDeckItem item : deckItems) {
LogUtil.v(TAG, "syncMyDecks item设定的删除状态?: "+item.isDelete());
PushMultiDeck.DeckData data = new PushMultiDeck.DeckData(); PushMultiDeck.DeckData data = new PushMultiDeck.DeckData();
data.setDeckId(item.getDeckId()); data.setDeckId(item.getDeckId());
data.setDeckName(item.getDeckName()); data.setDeckName(item.getDeckName());
data.setDeckType(item.getDeckType()); data.setDeckType(item.getDeckType());
data.setDeckCoverCard1(item.getDeckCoverCard1()); data.setDeckCoverCard1(item.getDeckCoverCard1());
data.setDeckUpdateTime(item.getUpdateTimestamp()); data.setDeckUpdateTime(item.getUpdateTimestamp());
data.setDelete(item.isDelete()); String deckContent = "";
if (item.getDeckPath() == null) {//防止获取不到文件路径而出现异常(多发生在删除卡组后的同步时)
String deckContent = DeckSquareFileUtil.setDeckId(item.getDeckPath(), loginToken.getUserId(), item.getDeckId()); data.setDelete(true);
} else {
deckContent = DeckSquareFileUtil.setDeckId(item.getDeckPath(), loginToken.getUserId(), item.getDeckId());
}
data.setDeckYdk(deckContent); data.setDeckYdk(deckContent);
LogUtil.w(TAG, "syncMyDecks *要上传的* 本地卡组: " + data.getDeckType() +"//" + data.getDeckName()+"//"+data.getDeckId()+"//"+data.getDeckCoverCard1()+"//"+data.getDeckUpdateTime()); LogUtil.w(TAG, "syncMyDecks *要上传的* 本地卡组: \n是否删除?: " + data.isDelete() + "\n卡组分类:"+data.getDeckType() +"\n卡组名称: " + data.getDeckName()+"\n封面id: "+data.getDeckCoverCard1()+"\n卡组内容: "+ data.getDeckYdk());
dataList.add(data); dataList.add(data);
} }
return pushMultiDecks(dataList, loginToken); return pushMultiDecks(dataList, loginToken);
...@@ -544,4 +502,47 @@ public class DeckSquareApiUtil { ...@@ -544,4 +502,47 @@ public class DeckSquareApiUtil {
LogUtil.w(TAG, "seesee +要上传的 本地卡组: " + newPushDecks); LogUtil.w(TAG, "seesee +要上传的 本地卡组: " + newPushDecks);
} }
} }
public static void deleteDecks(List<DeckFile> deckFileList) {
if (SharedPreferenceUtil.getServerToken() != null) {
LoginToken loginToken = new LoginToken(
SharedPreferenceUtil.getServerUserId(),
SharedPreferenceUtil.getServerToken()
);
// 创建局部变量持有引用
final List<DeckFile> deleteDeckList = new ArrayList<>(deckFileList);
// 使用VUiKit避开UI线程进行网络请求
VUiKit.defer().when(() -> {
// 先判断缓存表是否需要更新
if (DeckManagerFragment.getOriginalData().isEmpty()) {
// 同步获取在线卡组列表(在后台线程中可以安全执行网络操作)
MyDeckResponse result = DeckSquareApiUtil.getUserDecks(loginToken);
if (result != null && result.getData() != null) {
DeckManagerFragment.getOriginalData().addAll(result.getData());
}
}
// 处理删除标记
for (DeckFile deleteDeckFile : deleteDeckList) {
for (MyOnlineDeckDetail onlineDeckDetail : DeckManagerFragment.getOriginalData()) {
if (deleteDeckFile.getName().equals(onlineDeckDetail.getDeckName())
&& deleteDeckFile.getTypeName().equals(onlineDeckDetail.getDeckType())) {
onlineDeckDetail.setDelete(true);
deleteDeckFile.setDeckId(onlineDeckDetail.getDeckId());
}
}
}
LogUtil.v(TAG,"deleteDecks:查看onlineDecks:"+ DeckManagerFragment.getOriginalData().toString());
// 执行同步操作(在UI线程不得不进行网络请求,须转在后台线程)
syncMyDecks(toDeckItemList(DeckManagerFragment.getOriginalData()), loginToken);
return true;
}).fail((e) -> {
LogUtil.e(TAG, "删除卡组失败! 原因:" + e);
}).done((result) -> {
LogUtil.d(TAG, "卡组删除同步成功");
});
}
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment