Commit 2a9ff9ce authored by fallenstardust's avatar fallenstardust

调试重名卡组deckid分配问题

parent c92e1976
...@@ -1358,6 +1358,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte ...@@ -1358,6 +1358,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
return; return;
String currentDeckPath = deck.getAbsolutePath(); String currentDeckPath = deck.getAbsolutePath();
for (DeckFile deckFile : deckFileList) { for (DeckFile deckFile : deckFileList) {
LogUtil.w(TAG, "要删除的卡组:"+"\n卡组分类"+deckFile.getTypeName()+ "\n卡组名称:"+deckFile.getFileName()+"\n卡组id"+deckFile.getDeckId());
if (TextUtils.equals(deckFile.getPath(), currentDeckPath)) { if (TextUtils.equals(deckFile.getPath(), currentDeckPath)) {
List<File> files = getYdkFiles(); List<File> files = getYdkFiles();
File file = null; File file = null;
......
package cn.garymb.ygomobile.ui.cards.deck_square; package cn.garymb.ygomobile.ui.cards.deck_square;
import static cn.garymb.ygomobile.ui.cards.DeckManagerFragment.originalData;
import static cn.garymb.ygomobile.ui.cards.deck_square.DeckSquareFileUtil.toDeckItemList; import static cn.garymb.ygomobile.ui.cards.deck_square.DeckSquareFileUtil.toDeckItemList;
import android.widget.Toast; import android.widget.Toast;
...@@ -260,7 +261,6 @@ public class DeckSquareApiUtil { ...@@ -260,7 +261,6 @@ 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());
...@@ -275,7 +275,7 @@ public class DeckSquareApiUtil { ...@@ -275,7 +275,7 @@ public class DeckSquareApiUtil {
deckContent = DeckSquareFileUtil.setDeckId(item.getDeckPath(), loginToken.getUserId(), item.getDeckId()); deckContent = DeckSquareFileUtil.setDeckId(item.getDeckPath(), loginToken.getUserId(), item.getDeckId());
} }
data.setDeckYdk(deckContent); data.setDeckYdk(deckContent);
LogUtil.w(TAG, "syncMyDecks *要上传的* 本地卡组: \n是否删除?: " + data.isDelete() + "\n卡组分类:"+data.getDeckType() +"\n卡组名称: " + data.getDeckName()+"\n封面id: "+data.getDeckCoverCard1()+"\n卡组内容: "+ data.getDeckYdk()); LogUtil.w(TAG, "syncMyDecks *要上传的* 本地卡组: \n是否删除?: " + data.isDelete() + "\n卡组分类:"+data.getDeckType() +"\n卡组名称: " + data.getDeckName()+"\n封面id: "+data.getDeckCoverCard1()+"\n卡组id: "+ data.getDeckId());
dataList.add(data); dataList.add(data);
} }
return pushMultiDecks(dataList, loginToken); return pushMultiDecks(dataList, loginToken);
...@@ -440,7 +440,6 @@ public class DeckSquareApiUtil { ...@@ -440,7 +440,6 @@ public class DeckSquareApiUtil {
// 遍历本地卡组与云备份卡组,过滤差异项(使用迭代器避免ConcurrentModificationException) // 遍历本地卡组与云备份卡组,过滤差异项(使用迭代器避免ConcurrentModificationException)
List<MyDeckItem> syncUploadDecks = new ArrayList<>(); List<MyDeckItem> syncUploadDecks = new ArrayList<>();
List<MyDeckItem> newPushDecks = new ArrayList<>(); List<MyDeckItem> newPushDecks = new ArrayList<>();
List<MyOnlineDeckDetail> backupDownloadDecks = new ArrayList<>();
// 1. 使用本地卡组的迭代器遍历(支持安全删除) // 1. 使用本地卡组的迭代器遍历(支持安全删除)
Iterator<MyDeckItem> localIterator = localDecks.iterator(); Iterator<MyDeckItem> localIterator = localDecks.iterator();
...@@ -451,6 +450,7 @@ public class DeckSquareApiUtil { ...@@ -451,6 +450,7 @@ public class DeckSquareApiUtil {
localDeck.setDeckName(localDeckName); localDeck.setDeckName(localDeckName);
localDeck.setDeckCoverCard1(DeckUtil.getFirstCardCode(localDeck.getDeckPath())); localDeck.setDeckCoverCard1(DeckUtil.getFirstCardCode(localDeck.getDeckPath()));
localDeck.setDelete(false); localDeck.setDelete(false);
// 2. 使用在线卡组的迭代器遍历(支持安全删除) // 2. 使用在线卡组的迭代器遍历(支持安全删除)
Iterator<MyOnlineDeckDetail> onlineIterator = onlineDecks.iterator(); Iterator<MyOnlineDeckDetail> onlineIterator = onlineDecks.iterator();
while (onlineIterator.hasNext()) { while (onlineIterator.hasNext()) {
...@@ -469,13 +469,10 @@ public class DeckSquareApiUtil { ...@@ -469,13 +469,10 @@ public class DeckSquareApiUtil {
// 若未匹配到在线卡组,该本地卡组会保留在localDecks中(后续作为新卡组上传) // 若未匹配到在线卡组,该本地卡组会保留在localDecks中(后续作为新卡组上传)
} }
// 剩余的本地卡组都是新卡组(本地独有,需要上传)
newPushDecks.addAll(localDecks);
// 剩余的在线卡组都是新卡组(云端独有,需要下载) // 剩余的在线卡组都是新卡组(云端独有,需要下载)
backupDownloadDecks.addAll(onlineDecks); LogUtil.i(TAG,"看看剩余onlineDecks:"+onlineDecks);
for (MyOnlineDeckDetail onlineDeck : onlineDecks) {
for (MyOnlineDeckDetail onlineDeck : backupDownloadDecks) { LogUtil.d(TAG, "synchronizeDecks +要下载的 云备份卡组: \n卡组分类:" + onlineDeck.getDeckType() + "\n卡组名:" + onlineDeck.getDeckName() + "\n卡组id:" + onlineDeck.getDeckId());
LogUtil.w(TAG, "synchronizeDecks +要下载的 云备份卡组: " + onlineDeck.getDeckType() + "//" + onlineDeck.getDeckName() + "//" + onlineDeck.getDeckUpdateDate());
// 确保文件名包含.ydk扩展名 // 确保文件名包含.ydk扩展名
String fileName = onlineDeck.getDeckName(); String fileName = onlineDeck.getDeckName();
if (!fileName.toLowerCase().endsWith(Constants.YDK_FILE_EX)) { if (!fileName.toLowerCase().endsWith(Constants.YDK_FILE_EX)) {
...@@ -491,15 +488,19 @@ public class DeckSquareApiUtil { ...@@ -491,15 +488,19 @@ public class DeckSquareApiUtil {
if (!saved) { if (!saved) {
LogUtil.e(TAG, "synchronizeDecks 保存失败!的 云备份卡组: " + fileFullPath); LogUtil.e(TAG, "synchronizeDecks 保存失败!的 云备份卡组: " + fileFullPath);
} else { } else {
LogUtil.i(TAG, "synchronizeDecks 保存成功√的 云备份卡组: " + fileFullPath); LogUtil.d(TAG, "synchronizeDecks 保存成功√的 云备份卡组: " + fileFullPath);
} }
} }
// 上传本地卡组覆盖在线卡组 // 上传本地卡组覆盖在线卡组
syncMyDecks(syncUploadDecks, loginToken); syncMyDecks(syncUploadDecks, loginToken);
// 剩余的本地卡组都是新卡组(本地独有,需要上传)
newPushDecks.addAll(localDecks);
LogUtil.w(TAG, "+上传新增的 本地卡组newPushDecks: " + newPushDecks);
if (!newPushDecks.isEmpty()) { if (!newPushDecks.isEmpty()) {
requestIdAndPushNewDecks(newPushDecks, loginToken); PushMultiResponse result = requestIdAndPushNewDecks(newPushDecks, loginToken);
LogUtil.w(TAG, "seesee +要上传的 本地卡组: " + newPushDecks); LogUtil.w(TAG, "上传结果数:"+ result.getData());
} }
} }
...@@ -509,9 +510,6 @@ public class DeckSquareApiUtil { ...@@ -509,9 +510,6 @@ public class DeckSquareApiUtil {
SharedPreferenceUtil.getServerUserId(), SharedPreferenceUtil.getServerUserId(),
SharedPreferenceUtil.getServerToken() SharedPreferenceUtil.getServerToken()
); );
// 创建局部变量持有引用
final List<DeckFile> deleteDeckList = new ArrayList<>(deckFileList);
// 使用VUiKit避开UI线程进行网络请求 // 使用VUiKit避开UI线程进行网络请求
VUiKit.defer().when(() -> { VUiKit.defer().when(() -> {
// 先判断缓存表是否需要更新 // 先判断缓存表是否需要更新
...@@ -523,8 +521,8 @@ public class DeckSquareApiUtil { ...@@ -523,8 +521,8 @@ public class DeckSquareApiUtil {
} }
} }
// 处理删除标记 // 处理删除标记
for (DeckFile deleteDeckFile : deleteDeckList) { for (DeckFile deleteDeckFile : deckFileList) {
for (MyOnlineDeckDetail onlineDeckDetail : DeckManagerFragment.getOriginalData()) { for (MyOnlineDeckDetail onlineDeckDetail : originalData) {
if (deleteDeckFile.getName().equals(onlineDeckDetail.getDeckName()) if (deleteDeckFile.getName().equals(onlineDeckDetail.getDeckName())
&& deleteDeckFile.getTypeName().equals(onlineDeckDetail.getDeckType())) { && deleteDeckFile.getTypeName().equals(onlineDeckDetail.getDeckType())) {
...@@ -534,9 +532,8 @@ public class DeckSquareApiUtil { ...@@ -534,9 +532,8 @@ public class DeckSquareApiUtil {
} }
} }
} }
LogUtil.v(TAG,"deleteDecks:查看onlineDecks:"+ DeckManagerFragment.getOriginalData().toString());
// 执行同步操作(在UI线程不得不进行网络请求,须转在后台线程) // 执行同步操作(在UI线程不得不进行网络请求,须转在后台线程)
syncMyDecks(toDeckItemList(DeckManagerFragment.getOriginalData()), loginToken); syncMyDecks(toDeckItemList(originalData), loginToken);
return true; return true;
}).fail((e) -> { }).fail((e) -> {
LogUtil.e(TAG, "删除卡组失败! 原因:" + e); LogUtil.e(TAG, "删除卡组失败! 原因:" + e);
......
...@@ -6,7 +6,10 @@ import android.text.Spannable; ...@@ -6,7 +6,10 @@ import android.text.Spannable;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.util.Log; import android.util.Log;
import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
...@@ -205,47 +208,58 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyOnlineDeckDetail, Base ...@@ -205,47 +208,58 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyOnlineDeckDetail, Base
@Override @Override
protected void convert(BaseViewHolder helper, MyOnlineDeckDetail item) { protected void convert(BaseViewHolder helper, MyOnlineDeckDetail item) {
ImageView iv_box = helper.findView(R.id.iv_box); ImageView iv_box = helper.findView(R.id.iv_box);
ImageView deck_info_image = helper.findView(R.id.deck_info_image);
ImageView delete_my_online_deck_btn = helper.findView(R.id.delete_my_online_deck_btn);
LinearLayout ll_switch_show = helper.findView(R.id.ll_switch_show);
TextView change_show_or_hide = helper.findView(R.id.change_show_or_hide);
ImageView show_on_deck_square = helper.findView(R.id.show_on_deck_square);
long code = item.getDeckCoverCard1();
if (item.isDelete()) { if (item.isDelete()) {
deck_info_image.setColorFilter(YGOUtil.c(R.color.bottom_bg));
iv_box.setColorFilter(YGOUtil.c(R.color.bottom_bg)); iv_box.setColorFilter(YGOUtil.c(R.color.bottom_bg));
delete_my_online_deck_btn.setVisibility(View.GONE);
ll_switch_show.setVisibility(View.GONE);
} else { } else {
deck_info_image.clearColorFilter();
iv_box.clearColorFilter(); iv_box.clearColorFilter();
delete_my_online_deck_btn.setVisibility(View.VISIBLE);
ll_switch_show.setVisibility(View.VISIBLE);
} }
// 处理卡组类型高亮, 需要判断卡组分类的内容 // 处理卡组类型高亮, 需要判断卡组分类的内容
SpannableString highlightedType = getHighlightedText(item.getDeckType().equals("") ? "" : "-"+item.getDeckType()+"-", currentKeyword); helper.setText(R.id.my_online_deck_type, getHighlightedText(item.getDeckType().equals("") ? "" : "-"+item.getDeckType()+"-", currentKeyword));
helper.setText(R.id.my_online_deck_type, highlightedType);
// 处理卡组名称高亮 // 处理卡组名称高亮
SpannableString highlightedName = getHighlightedText(item.getDeckName(), currentKeyword); helper.setText(R.id.my_deck_name, getHighlightedText(item.getDeckName(), currentKeyword));
helper.setText(R.id.my_deck_name, highlightedName);
helper.setText(R.id.deck_update_date, convertToGMTDate(item.getDeckUpdateDate())); helper.setText(R.id.deck_update_date, convertToGMTDate(item.getDeckUpdateDate()));
ImageView cardImage = helper.getView(R.id.deck_info_image);
long code = item.getDeckCoverCard1();
if (item.isPublic()) { if (item.isPublic()) {
helper.setText(R.id.change_show_or_hide, R.string.in_public); change_show_or_hide.setText(R.string.in_public);
helper.getView(R.id.show_on_deck_square).setBackgroundResource(R.drawable.baseline_remove_red_eye_24); show_on_deck_square.setBackgroundResource(R.drawable.baseline_remove_red_eye_24);
helper.getView(R.id.ll_switch_show).setBackgroundResource(R.drawable.button_radius_red); ll_switch_show.setBackgroundResource(R.drawable.button_radius_red);
} else { } else {
helper.setText(R.id.change_show_or_hide, R.string.in_personal_use); change_show_or_hide.setText(R.string.in_personal_use);
helper.getView(R.id.show_on_deck_square).setBackgroundResource(R.drawable.closed_eyes_24); show_on_deck_square.setBackgroundResource(R.drawable.closed_eyes_24);
helper.getView(R.id.ll_switch_show).setBackgroundResource(R.drawable.button_radius_n); ll_switch_show.setBackgroundResource(R.drawable.button_radius_n);
} }
if (code != 0) { if (code != 0) {
imageLoader.bindImage(cardImage, code, null, ImageLoader.Type.small); imageLoader.bindImage(deck_info_image, code, null, ImageLoader.Type.small);
} else { } else {
imageLoader.bindImage(cardImage, -1, null, ImageLoader.Type.small); imageLoader.bindImage(deck_info_image, -1, null, ImageLoader.Type.small);
} }
helper.getView(R.id.delete_my_online_deck_btn).setOnClickListener(view -> { delete_my_online_deck_btn.setOnClickListener(view -> {
deleteMyDeckOnLine(item); deleteMyDeckOnLine(item);
}); });
helper.getView(R.id.ll_switch_show).setOnClickListener(view -> { helper.getView(R.id.ll_switch_show).setOnClickListener(view -> {
if (item.isPublic()) { if (item.isPublic()) {
helper.setText(R.id.change_show_or_hide, R.string.in_personal_use); change_show_or_hide.setText(R.string.in_personal_use);
helper.getView(R.id.show_on_deck_square).setBackgroundResource(R.drawable.closed_eyes_24); show_on_deck_square.setBackgroundResource(R.drawable.closed_eyes_24);
helper.getView(R.id.ll_switch_show).setBackgroundResource(R.drawable.button_radius_n); ll_switch_show.setBackgroundResource(R.drawable.button_radius_n);
item.setPublic(false); // 关闭公开状态 item.setPublic(false); // 关闭公开状态
} else { } else {
helper.setText(R.id.change_show_or_hide, R.string.in_public); change_show_or_hide.setText( R.string.in_public);
helper.getView(R.id.show_on_deck_square).setBackgroundResource(R.drawable.baseline_remove_red_eye_24); show_on_deck_square.setBackgroundResource(R.drawable.baseline_remove_red_eye_24);
helper.getView(R.id.ll_switch_show).setBackgroundResource(R.drawable.button_radius_red); ll_switch_show.setBackgroundResource(R.drawable.button_radius_red);
item.setPublic(true); // 开启公开状态 item.setPublic(true); // 开启公开状态
} }
LogUtil.i(TAG, "current " + item.toString()); LogUtil.i(TAG, "current " + item.toString());
......
...@@ -121,9 +121,7 @@ public class PushMultiDeck { ...@@ -121,9 +121,7 @@ public class PushMultiDeck {
this.timestamp = deckUpdateTime; this.timestamp = deckUpdateTime;
} }
public String getDeckYdk() { public String getDeckYdk() {return deckYdk;}
return deckYdk;
}
public void setDeckYdk(String deckYdk) { public void setDeckYdk(String deckYdk) {
this.deckYdk = deckYdk; this.deckYdk = deckYdk;
......
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