Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile
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
Commits
c92e1976
Commit
c92e1976
authored
Aug 04, 2025
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix 删除卡组时因路径为空引起的异常
parent
c89c6179
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
51 deletions
+52
-51
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/DeckSquareApiUtil.java
...ymb/ygomobile/ui/cards/deck_square/DeckSquareApiUtil.java
+52
-51
No files found.
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/deck_square/DeckSquareApiUtil.java
View file @
c92e1976
...
@@ -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
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