Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile-Cn-Ko-En
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fallenstardust
YGOMobile-Cn-Ko-En
Commits
da003669
Commit
da003669
authored
Jul 15, 2025
by
Dark Zane
Committed by
GitHub
Jul 15, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fallenstardust:master' into YGOMOBILE-1
parents
748a873d
ec9c731a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
43 additions
and
37 deletions
+43
-37
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
...ava/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
+2
-1
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/DeckManageDialog.java
...rymb/ygomobile/ui/cards/deck_square/DeckManageDialog.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/DeckSquareApiUtil.java
...ymb/ygomobile/ui/cards/deck_square/DeckSquareApiUtil.java
+38
-33
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/api_response/PushMultiDeck.java
...bile/ui/cards/deck_square/api_response/PushMultiDeck.java
+1
-1
mobile/src/main/java/cn/garymb/ygomobile/utils/OkhttpUtil.java
...e/src/main/java/cn/garymb/ygomobile/utils/OkhttpUtil.java
+1
-1
No files found.
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
View file @
da003669
...
...
@@ -261,7 +261,8 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
return
0
;
}).
fail
((
e
)
->
{
YGOUtil
.
showTextToast
(
"Sync decks failed: "
+
e
);
LogUtil
.
e
(
TAG
,
"Sync decks failed: "
+
e
);
//YGOUtil.showTextToast("Sync decks failed: " + e);
}).
done
((
result
)
->
{
});
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/DeckManageDialog.java
View file @
da003669
...
...
@@ -51,7 +51,7 @@ public class DeckManageDialog extends DialogFragment implements YGODeckDialogUti
ViewPager2
viewPager
=
view
.
findViewById
(
R
.
id
.
deck_view_pager
);
TabLayout
tabLayout
=
view
.
findViewById
(
R
.
id
.
deck_manager_tab_layout
);
viewPager
.
setUserInputEnabled
(
false
);
// Setup adapter
ViewPagerAdapter
adapter
=
new
ViewPagerAdapter
(
this
,
mOnDeckMenuListener
,
this
);
viewPager
.
setAdapter
(
adapter
);
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/DeckSquareApiUtil.java
View file @
da003669
package
cn.garymb.ygomobile.ui.cards.deck_square
;
import
android.util.Log
;
import
android.widget.Toast
;
import
com.google.gson.Gson
;
...
...
@@ -9,6 +8,7 @@ import java.io.File;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -16,6 +16,7 @@ import cn.garymb.ygomobile.AppsSettings;
import
cn.garymb.ygomobile.Constants
;
import
cn.garymb.ygomobile.bean.DeckType
;
import
cn.garymb.ygomobile.bean.events.DeckFile
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerFragment
;
import
cn.garymb.ygomobile.ui.cards.deck_square.api_response.BasicResponse
;
import
cn.garymb.ygomobile.ui.cards.deck_square.api_response.DeckIdResponse
;
...
...
@@ -72,7 +73,7 @@ public class DeckSquareApiUtil {
Integer
serverUserId
=
SharedPreferenceUtil
.
getServerUserId
();
if
(
serverToken
==
null
||
serverUserId
==
-
1
)
{
YGOUtil
.
showTextToast
(
"Please login first!"
);
YGOUtil
.
showTextToast
(
R
.
string
.
login_mycard
);
return
null
;
}
return
new
LoginToken
(
serverUserId
,
serverToken
);
...
...
@@ -357,6 +358,7 @@ public class DeckSquareApiUtil {
String
deckContent
=
DeckSquareFileUtil
.
setDeckId
(
item
.
getDeckPath
(),
loginToken
.
getUserId
(),
item
.
getDeckId
());
data
.
setDeckYdk
(
deckContent
);
LogUtil
.
w
(
TAG
,
"seesee syncMyDecks*要上传的 本地卡组: "
+
data
.
getDeckName
()+
"//"
+
data
.
getDeckId
()+
"//"
+
data
.
getDeckCoverCard1
()+
"//"
+
data
.
getDeckYdk
());
dataList
.
add
(
data
);
}
return
pushMultiDecks
(
dataList
,
loginToken
);
...
...
@@ -692,52 +694,56 @@ public class DeckSquareApiUtil {
// 获取本地卡组列表
List
<
MyDeckItem
>
localDecks
=
DeckSquareFileUtil
.
getMyDeckItem
();
// 获取在线卡组列表
VUiKit
.
defer
().
when
(()
->
{
MyDeckResponse
result
=
DeckSquareApiUtil
.
getUserDecks
(
loginToken
);
//调用获取云备份卡组的接口方法
if
(
result
==
null
)
return
null
;
else
return
result
.
getData
();
}).
fail
((
e
)
->
{
LogUtil
.
e
(
TAG
,
"load mycard from server failed: "
+
e
);
}).
done
((
serverDecks
)
->
{
if
(
serverDecks
!=
null
)
{
//将服务端的卡组也放到OrignalData里,
DeckManagerFragment
.
getOriginalData
().
clear
();
DeckManagerFragment
.
getOriginalData
().
addAll
(
serverDecks
);
}
});
List
<
MyOnlineDeckDetail
>
onlineDecks
=
DeckManagerFragment
.
getOriginalData
();
MyDeckResponse
onlineDecksResponse
=
DeckSquareApiUtil
.
getUserDecks
(
loginToken
);
if
(
onlineDecksResponse
==
null
||
onlineDecksResponse
.
getData
()
==
null
)
{
LogUtil
.
e
(
TAG
,
"load my online decks failed!"
);
return
;
}
List
<
MyOnlineDeckDetail
>
onlineDecks
=
onlineDecksResponse
.
getData
();
//遍历本地卡组与云备份卡组,过滤出差异项
// 缓存原始在线卡组(使用副本避免后续修改影响缓存)
DeckManagerFragment
.
getOriginalData
().
clear
();
DeckManagerFragment
.
getOriginalData
().
addAll
(
new
ArrayList
<>(
onlineDecks
));
// 遍历本地卡组与云备份卡组,过滤差异项(使用迭代器避免ConcurrentModificationException)
List
<
MyDeckItem
>
syncUploadDecks
=
new
ArrayList
<>();
List
<
MyDeckItem
>
newPushDecks
=
new
ArrayList
<>();
List
<
MyOnlineDeckDetail
>
backupDownloadDecks
=
new
ArrayList
<>();
for
(
MyDeckItem
localDeck
:
localDecks
)
{
//预处理每个本地卡组
// 1. 使用本地卡组的迭代器遍历(支持安全删除)
Iterator
<
MyDeckItem
>
localIterator
=
localDecks
.
iterator
();
while
(
localIterator
.
hasNext
())
{
MyDeckItem
localDeck
=
localIterator
.
next
();
// 预处理本地卡组
String
localDeckName
=
localDeck
.
getDeckName
().
replace
(
Constants
.
YDK_FILE_EX
,
""
);
localDeck
.
setDeckName
(
localDeckName
);
localDeck
.
setDeckCoverCard1
(
DeckUtil
.
getFirstCardCode
(
localDeck
.
getDeckPath
()));
for
(
MyOnlineDeckDetail
onlineDeck
:
onlineDecks
)
{
boolean
isMatched
=
false
;
// 2. 使用在线卡组的迭代器遍历(支持安全删除)
Iterator
<
MyOnlineDeckDetail
>
onlineIterator
=
onlineDecks
.
iterator
();
while
(
onlineIterator
.
hasNext
())
{
MyOnlineDeckDetail
onlineDeck
=
onlineIterator
.
next
();
String
onLineDeckName
=
onlineDeck
.
getDeckName
().
replace
(
Constants
.
YDK_FILE_EX
,
""
);
if
(
localDeckName
.
equals
(
onLineDeckName
))
{
localDeck
.
setDeckId
(
onlineDeck
.
getDeckId
());
//为本地卡组添加同名云备份卡组的deckid
// 将每个本地卡组作为数组元素添加入syncUploadDecks
syncUploadDecks
.
add
(
localDeck
);
// 将匹配到的本地卡组放入待上传的list中
localDecks
.
remove
(
localDeck
);
// 移除云备份已存在的本地卡组,最后剩下的就是本地独有的卡组
onlineDecks
.
remove
(
onlineDeck
);
// 移除匹配到的云备份卡组,最后剩下的就是云备份独有的卡组
break
;
if
(
localDeckName
.
equals
(
onLineDeckName
))
{
// 匹配到同名卡组:加入同步上传列表,并从原始集合中删除(避免重复处理)
localDeck
.
setDeckId
(
onlineDeck
.
getDeckId
());
syncUploadDecks
.
add
(
localDeck
);
localIterator
.
remove
();
// 安全删除本地卡组(迭代器方法)
onlineIterator
.
remove
();
// 安全删除在线卡组(迭代器方法)
isMatched
=
true
;
break
;
// 匹配后跳出内部循环
}
}
// 若未匹配到在线卡组,该本地卡组会保留在localDecks中(后续作为新卡组上传)
}
newPushDecks
.
addAll
(
localDecks
);
// 将剩下的本地卡组传入待新上传的list,与syncUploadDecks并不执行相同的上传接口
backupDownloadDecks
.
addAll
(
onlineDecks
);
// 将剩下的在线卡组传入待新下载的list
// 剩余的本地卡组都是新卡组(本地独有,需要上传)
newPushDecks
.
addAll
(
localDecks
);
// 剩余的在线卡组都是新卡组(云端独有,需要下载)
backupDownloadDecks
.
addAll
(
onlineDecks
);
LogUtil
.
w
(
TAG
,
"seesee +要下载的 云备份卡组: "
+
backupDownloadDecks
);
for
(
MyOnlineDeckDetail
onlineDeck
:
backupDownloadDecks
)
{
...
...
@@ -762,7 +768,6 @@ public class DeckSquareApiUtil {
requestIdAndPushNewDecks
(
newPushDecks
,
loginToken
);
LogUtil
.
w
(
TAG
,
"seesee +要上传的 本地卡组: "
+
newPushDecks
);
}
}
private
static
SyncMutliDeckResult
.
DownloadResult
downloadMissingDeckToLocal
(
MyOnlineDeckDetail
onlineDeck
,
Long
onlineUpdateDate
)
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/api_response/PushMultiDeck.java
View file @
da003669
...
...
@@ -62,7 +62,7 @@ public class PushMultiDeck {
this
.
deckName
=
deckName
;
}
public
Integer
getDeckCoverCard1
(
Integer
firstCode
)
{
public
Integer
getDeckCoverCard1
()
{
return
deckCoverCard1
;
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/utils/OkhttpUtil.java
View file @
da003669
...
...
@@ -29,7 +29,7 @@ public class OkhttpUtil {
.
readTimeout
(
30
,
TimeUnit
.
SECONDS
)
.
writeTimeout
(
30
,
TimeUnit
.
SECONDS
)
// keep-alive and connection pool defaults
.
connectionPool
(
new
ConnectionPool
(
2
,
4
0
,
TimeUnit
.
SECONDS
))
.
connectionPool
(
new
ConnectionPool
(
2
,
2
0
,
TimeUnit
.
SECONDS
))
.
build
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment