Commit 54a77913 authored by fallenstardust's avatar fallenstardust

优化同步和删除逻辑,避免远端响应延迟

parent 5889d920
package cn.garymb.ygomobile.deck_square;
import static cn.garymb.ygomobile.Constants.TAG;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
......@@ -17,6 +19,8 @@ import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.LogUtil;
import cn.garymb.ygomobile.utils.YGODeckDialogUtil;
public class DeckManageDialog extends DialogFragment implements YGODeckDialogUtil.OnDeckDialogListener {
......
......@@ -36,6 +36,7 @@ import cn.garymb.ygomobile.bean.DeckType;
import cn.garymb.ygomobile.bean.events.DeckFile;
import cn.garymb.ygomobile.deck_square.api_response.LoginToken;
import cn.garymb.ygomobile.deck_square.api_response.MyOnlineDeckDetail;
import cn.garymb.ygomobile.deck_square.api_response.PushDeckResponse;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.lite.databinding.FragmentDeckSelectBinding;
import cn.garymb.ygomobile.ui.adapters.DeckListAdapter;
......@@ -383,12 +384,13 @@ public class DeckSelectFragment extends Fragment {
if (onlineDeck.getDeckName().equals(deckFile.getName())) {
// 删除在线卡组(异步处理)
VUiKit.defer().when(() -> {
DeckSquareApiUtil.deleteDeck(onlineDeck.getDeckId(), loginToken);
return true;
PushDeckResponse deckResponse = DeckSquareApiUtil.deleteDeck(onlineDeck.getDeckId(), loginToken);
return deckResponse;
}).fail((deleteError) -> {
LogUtil.e(TAG, "Delete Online Deck failed: " + deleteError);
}).done((deleteSuccess) -> {
if (deleteSuccess) {
if (deleteSuccess.isData()) {
YGOUtil.showTextToast(getContext().getString(R.string.done));
LogUtil.i(TAG, "Online deck deleted successfully");
}
});
......@@ -398,7 +400,6 @@ public class DeckSelectFragment extends Fragment {
}
}
YGOUtil.showTextToast(getContext().getString(R.string.done));
dialogPlus.dismiss();
onDeckMenuListener.onDeckDel(selectDeckList);
clearDeckSelect();
......
......@@ -118,16 +118,6 @@ public class DeckSquareMyDeckFragment extends Fragment {
}
});
/** 自动同步 */
VUiKit.defer().when(() -> {
return DeckSquareApiUtil.synchronizeDecks();
}).fail((e) -> {
LogUtil.i(TAG, "Like deck fail" + e.getMessage());
}).done((result) -> {
});
return binding.getRoot();
}
......@@ -204,16 +194,9 @@ public class DeckSquareMyDeckFragment extends Fragment {
});
/** 自动同步 */
VUiKit.defer().when(() -> {
return DeckSquareApiUtil.synchronizeDecks();
}).fail((e) -> {
LogUtil.i(TAG, "Like deck fail" + e.getMessage());
}).done((result) -> {
});
VUiKit.defer().when(() -> {return DeckSquareApiUtil.synchronizeDecks();}).fail((e) -> {
LogUtil.i(TAG, "Sync deck fail" + e.getMessage());
}).done((result) -> {});
//DeckSquareApiUtil.synchronizeDecks();
}
}
......@@ -5,7 +5,6 @@ import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
......@@ -16,41 +15,33 @@ import com.chad.library.adapter.base.listener.OnItemClickListener;
import java.util.ArrayList;
import java.util.List;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.bean.Deck;
import cn.garymb.ygomobile.bean.DeckInfo;
import cn.garymb.ygomobile.bean.TextSelect;
import cn.garymb.ygomobile.bean.events.DeckFile;
import cn.garymb.ygomobile.deck_square.DeckSquareApiUtil;
import cn.garymb.ygomobile.deck_square.DeckSquareListAdapter;
import cn.garymb.ygomobile.deck_square.api_response.LoginToken;
import cn.garymb.ygomobile.deck_square.api_response.PushDeckResponse;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.DeckLoader;
import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.LogUtil;
import cn.garymb.ygomobile.utils.SharedPreferenceUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
import ocgcore.DataManager;
import ocgcore.data.LimitList;
public class DeckListAdapter<T extends TextSelect> extends BaseQuickAdapter<T, DeckViewHolder> {
private static final String TAG = DeckSquareListAdapter.class.getSimpleName();
private final ImageLoader imageLoader;
private final Context mContext;
private LimitList mLimitList;
private final CardLoader mCardLoader;
private final DeckLoader mDeckLoader;
private final boolean isSelect;
private final List<T> selectList;
private LimitList mLimitList;
private DeckInfo deckInfo;
private DeckFile deckFile;
private OnItemSelectListener onItemSelectListener;
private int selectPosition;
private final boolean isSelect;
private boolean isManySelect;//标志位,是否选中多个卡组
private final List<T> selectList;
private static final String TAG = DeckSquareListAdapter.class.getSimpleName();
public DeckListAdapter(Context context, List<T> data, int select) {
super(R.layout.item_deck_list_swipe, data);
......@@ -193,10 +184,6 @@ public class DeckListAdapter<T extends TextSelect> extends BaseQuickAdapter<T, D
}
}
public void setSelectPosition(int selectPosition) {
this.selectPosition = selectPosition;
}
public boolean isSelect() {
return isSelect;
}
......@@ -205,13 +192,6 @@ public class DeckListAdapter<T extends TextSelect> extends BaseQuickAdapter<T, D
return isManySelect;
}
public void addManySelect(T t) {
if (selectList.contains(t))
selectList.remove(t);
else
selectList.add(t);
}
/**
* 内部维护了selectList,用于存储当前选中的卡组
* DeckListAdapter支持多选,传入false清除已选中的卡组,并更新adapter。传入true将标志位置1
......@@ -226,6 +206,13 @@ public class DeckListAdapter<T extends TextSelect> extends BaseQuickAdapter<T, D
}
}
public void addManySelect(T t) {
if (selectList.contains(t))
selectList.remove(t);
else
selectList.add(t);
}
public List<T> getSelectList() {
return selectList;
}
......@@ -234,6 +221,10 @@ public class DeckListAdapter<T extends TextSelect> extends BaseQuickAdapter<T, D
return selectPosition;
}
public void setSelectPosition(int selectPosition) {
this.selectPosition = selectPosition;
}
public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) {
this.onItemSelectListener = onItemSelectListener;
}
......
......@@ -2,6 +2,7 @@ package cn.garymb.ygomobile.ui.cards;
import static android.content.Context.CLIPBOARD_SERVICE;
import static cn.garymb.ygomobile.Constants.ORI_DECK;
import static cn.garymb.ygomobile.Constants.TAG;
import static cn.garymb.ygomobile.Constants.YDK_FILE_EX;
import static cn.garymb.ygomobile.core.IrrlichtBridge.ACTION_SHARE_FILE;
......@@ -85,6 +86,7 @@ import cn.garymb.ygomobile.deck_square.api_response.DownloadDeckResponse;
import cn.garymb.ygomobile.deck_square.api_response.LoginToken;
import cn.garymb.ygomobile.deck_square.api_response.MyDeckResponse;
import cn.garymb.ygomobile.deck_square.api_response.MyOnlineDeckDetail;
import cn.garymb.ygomobile.deck_square.api_response.PushDeckResponse;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.CardSearchInfo;
......@@ -246,6 +248,13 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
});
// YGODeckDialogUtil.dialogDeckSelect(getActivity(), AppsSettings.get().getLastDeckPath(), this));
mContext = (BaseActivity) getActivity();
/** 自动同步 */
if (SharedPreferenceUtil.getServerToken() != null) {
VUiKit.defer().when(DeckSquareApiUtil::synchronizeDecks).fail((e) -> {
LogUtil.i(TAG, "sync deck fail" + e.getMessage());
}).done((result) -> {
});
}
}
......@@ -925,13 +934,14 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
if (onlineDeck.getDeckName().equals(mDeckAdapater.getYdkFile().getName())) {
// 删除在线卡组(异步处理)
VUiKit.defer().when(() -> {
DeckSquareApiUtil.deleteDeck(onlineDeck.getDeckId(), loginToken);
return true;
PushDeckResponse deckResponse = DeckSquareApiUtil.deleteDeck(onlineDeck.getDeckId(), loginToken);
return deckResponse;
}).fail((deleteError) -> {
LogUtil.e(TAG, "Delete Online Deck failed: " + deleteError);
}).done((deleteSuccess) -> {
if (deleteSuccess) {
if (deleteSuccess.isData()) {
LogUtil.i(TAG, "Online deck deleted successfully");
YGOUtil.showTextToast(getContext().getString(R.string.done));
}
});
}
......
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