Commit 54a77913 authored by fallenstardust's avatar fallenstardust

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

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