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
63715915
Commit
63715915
authored
Jun 06, 2025
by
wangfugui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加卡组公开状态设置功能
parent
284ab46c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
198 additions
and
24 deletions
+198
-24
mobile/src/main/java/cn/garymb/ygomobile/deck_square/DeckSquareApiUtil.java
...va/cn/garymb/ygomobile/deck_square/DeckSquareApiUtil.java
+37
-2
mobile/src/main/java/cn/garymb/ygomobile/deck_square/MyDeckItem.java
...main/java/cn/garymb/ygomobile/deck_square/MyDeckItem.java
+25
-0
mobile/src/main/java/cn/garymb/ygomobile/deck_square/MyDeckListAdapter.java
...va/cn/garymb/ygomobile/deck_square/MyDeckListAdapter.java
+81
-6
mobile/src/main/java/cn/garymb/ygomobile/deck_square/api_response/BasicResponse.java
...ymb/ygomobile/deck_square/api_response/BasicResponse.java
+9
-0
mobile/src/main/java/cn/garymb/ygomobile/deck_square/api_response/MyOnlineDeckDetail.java
...gomobile/deck_square/api_response/MyOnlineDeckDetail.java
+12
-14
mobile/src/main/java/cn/garymb/ygomobile/deck_square/api_response/PushDeckPublicState.java
...omobile/deck_square/api_response/PushDeckPublicState.java
+32
-0
mobile/src/main/res/layout/item_my_deck.xml
mobile/src/main/res/layout/item_my_deck.xml
+2
-2
No files found.
mobile/src/main/java/cn/garymb/ygomobile/deck_square/DeckSquareApiUtil.java
View file @
63715915
...
...
@@ -17,6 +17,7 @@ import cn.garymb.ygomobile.deck_square.api_response.LoginResponse;
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.PushCardJson
;
import
cn.garymb.ygomobile.deck_square.api_response.PushDeckPublicState
;
import
cn.garymb.ygomobile.deck_square.api_response.PushDeckResponse
;
import
cn.garymb.ygomobile.deck_square.api_response.SquareDeckResponse
;
import
cn.garymb.ygomobile.utils.LogUtil
;
...
...
@@ -200,7 +201,7 @@ public class DeckSquareApiUtil {
* @return
* @throws IOException
*/
p
ublic
static
PushDeckResponse
pushDeck
(
String
deckPath
,
String
deckName
,
LoginToken
loginToken
,
String
deckId
)
throws
IOException
{
p
rivate
static
PushDeckResponse
pushDeck
(
String
deckPath
,
String
deckName
,
LoginToken
loginToken
,
String
deckId
)
throws
IOException
{
String
deckContent
=
DeckSquareFileUtil
.
setDeckId
(
deckPath
,
loginToken
.
getUserId
(),
deckId
);
PushDeckResponse
result
=
null
;
...
...
@@ -236,7 +237,7 @@ public class DeckSquareApiUtil {
}
/**
*
异步
方法,给卡组点赞
*
阻塞
方法,给卡组点赞
*
* @param deckId
*/
...
...
@@ -257,6 +258,40 @@ public class DeckSquareApiUtil {
return
result
;
}
/**
* 阻塞方法,给卡组点赞
*
* @param deckId
*/
public
static
BasicResponse
setDeckPublic
(
String
deckId
,
LoginToken
loginToken
,
boolean
publicState
)
throws
IOException
{
BasicResponse
result
=
null
;
String
url
=
"http://rarnu.xyz:38383/api/mdpro3/deck/public"
;
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"ReqSource"
,
"MDPro3"
);
headers
.
put
(
"token"
,
loginToken
.
getServerToken
());
Gson
gson
=
new
Gson
();
PushDeckPublicState
pushData
=
new
PushDeckPublicState
();
pushData
.
setPublic
(
publicState
);
pushData
.
setDeckId
(
deckId
);
pushData
.
setUserId
(
loginToken
.
getUserId
());
String
json
=
gson
.
toJson
(
pushData
);
Response
response
=
OkhttpUtil
.
postJson
(
url
,
json
,
headers
,
1000
);
String
responseBodyString
=
response
.
body
().
string
();
result
=
gson
.
fromJson
(
responseBodyString
,
BasicResponse
.
class
);
LogUtil
.
i
(
TAG
,
responseBodyString
);
return
result
;
}
public
static
LoginResponse
login
(
String
username
,
String
password
)
throws
IOException
{
...
...
mobile/src/main/java/cn/garymb/ygomobile/deck_square/MyDeckItem.java
View file @
63715915
...
...
@@ -17,6 +17,8 @@ public class MyDeckItem {
public
int
deckCoverCard1
;
public
Boolean
isPublic
;
public
int
getIdUploaded
()
{
return
idUploaded
;
}
...
...
@@ -81,4 +83,27 @@ public class MyDeckItem {
public
void
setDeckPath
(
String
deckPath
)
{
this
.
deckPath
=
deckPath
;
}
public
Boolean
getPublic
()
{
return
isPublic
;
}
public
void
setPublic
(
Boolean
aPublic
)
{
isPublic
=
aPublic
;
}
@Override
public
String
toString
()
{
return
"MyDeckItem{"
+
"idUploaded="
+
idUploaded
+
", userId="
+
userId
+
", deckName='"
+
deckName
+
'\''
+
", deckId='"
+
deckId
+
'\''
+
", updateDate='"
+
updateDate
+
'\''
+
", deckSouce="
+
deckSouce
+
", deckPath='"
+
deckPath
+
'\''
+
", deckCoverCard1="
+
deckCoverCard1
+
", isPublic="
+
isPublic
+
'}'
;
}
}
mobile/src/main/java/cn/garymb/ygomobile/deck_square/MyDeckListAdapter.java
View file @
63715915
...
...
@@ -11,6 +11,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import
java.util.ArrayList
;
import
java.util.List
;
import
cn.garymb.ygomobile.deck_square.api_response.BasicResponse
;
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
;
...
...
@@ -28,6 +29,7 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyDeckItem, BaseViewHold
private
ImageLoader
imageLoader
;
// 添加监听器变量
private
OnDeckDeleteListener
deleteListener
;
private
OnDeckManipulateListener
manipulateListener
;
public
MyDeckListAdapter
(
int
layoutResId
)
{
super
(
layoutResId
);
...
...
@@ -35,10 +37,20 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyDeckItem, BaseViewHold
imageLoader
=
new
ImageLoader
();
}
public
interface
OnDeckManipulateListener
{
void
onDeckHide
();
void
onDeckCancelHide
();
void
onDeckDeleteFinished
();
}
// 在MyDeckListAdapter中添加接口
public
interface
OnDeckDeleteListener
{
void
onDeckDeleteStarted
();
void
onDeckDeleteProgress
(
int
secondsRemaining
);
void
onDeckDeleteFinished
();
}
...
...
@@ -106,6 +118,7 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyDeckItem, BaseViewHold
item
.
setDeckId
(
detail
.
getDeckId
());
item
.
setUserId
(
detail
.
getUserId
());
item
.
setUpdateDate
(
detail
.
getDeckUpdateDate
());
item
.
setPublic
(
detail
.
isPublic
());
myOnlineDecks
.
add
(
item
);
}
}
...
...
@@ -126,17 +139,19 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyDeckItem, BaseViewHold
}
private
void
deleteMyDeckOnLine
(
MyDeckItem
item
)
{
if
(
deleteListener
!=
null
)
{
deleteListener
.
onDeckDeleteStarted
();
}
if
(
item
!=
null
)
{
item
.
getDeckId
();
LoginToken
loginToken
=
DeckSquareApiUtil
.
getLoginData
();
if
(
loginToken
==
null
)
{
return
;
}
//放在登录检查后面,否则:如果未通过登录检查,本函数return后将无法调用onDeckDeleteFinished()
if
(
deleteListener
!=
null
)
{
deleteListener
.
onDeckDeleteStarted
();
}
VUiKit
.
defer
().
when
(()
->
{
PushDeckResponse
result
=
DeckSquareApiUtil
.
deleteDeck
(
item
.
getDeckId
(),
loginToken
);
return
result
;
...
...
@@ -166,12 +181,65 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyDeckItem, BaseViewHold
}
}
/**
* 注意,更新卡组状态要过很久才生效(实测延迟偶尔达5s)
* @param item
*/
private
void
changeDeckPublicState
(
MyDeckItem
item
)
{
if
(
item
!=
null
)
{
LoginToken
loginToken
=
DeckSquareApiUtil
.
getLoginData
();
if
(
loginToken
==
null
)
{
return
;
}
//放在登录检查后面,否则:如果未通过登录检查,本函数return后将无法调用onDeckDeleteFinished()
if
(
deleteListener
!=
null
)
{
deleteListener
.
onDeckDeleteStarted
();
}
VUiKit
.
defer
().
when
(()
->
{
BasicResponse
result
=
DeckSquareApiUtil
.
setDeckPublic
(
item
.
getDeckId
(),
loginToken
,
!
item
.
getPublic
());
return
result
;
}).
fail
(
e
->
{
if
(
deleteListener
!=
null
)
{
deleteListener
.
onDeckDeleteFinished
();
}
LogUtil
.
i
(
TAG
,
"square deck detail fail"
+
e
.
getMessage
());
}).
done
(
data
->
{
if
(
data
.
isMessageTrue
())
{
/*
*服务器的api有问题:获取指定用户的卡组列表(无已删卡组)
*删除成功后,通过http://rarnu.xyz:38383/api/mdpro3/sync/795610/nodel接口查询用户卡组时
*要等待2~3秒api响应内容才会对应更新
*/
if
(
item
.
getPublic
())
{
//注意,item是修改前的值,因此item.isPublic为true代表修改前为公开卡组
YGOUtil
.
showTextToast
(
"已将卡组设为私有"
);
}
else
{
YGOUtil
.
showTextToast
(
"已将卡组公开"
);
}
startButtonCountdown
();
}
else
{
YGOUtil
.
showTextToast
(
"操作失败"
);
}
});
}
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
MyDeckItem
item
)
{
helper
.
setText
(
R
.
id
.
my_deck_name
,
item
.
getDeckName
());
helper
.
setText
(
R
.
id
.
deck_update_date
,
item
.
getUpdateDate
());
ImageView
cardImage
=
helper
.
getView
(
R
.
id
.
deck_info_image
);
long
code
=
item
.
getDeckCoverCard1
();
if
(
item
.
getPublic
())
{
helper
.
setText
(
R
.
id
.
change_show_or_hide
,
R
.
string
.
in_public
);
}
else
{
helper
.
setText
(
R
.
id
.
change_show_or_hide
,
R
.
string
.
in_personal_use
);
}
LogUtil
.
i
(
TAG
,
code
+
" "
+
item
.
getDeckName
());
if
(
code
!=
0
)
{
imageLoader
.
bindImage
(
cardImage
,
code
,
null
,
ImageLoader
.
Type
.
small
);
...
...
@@ -179,7 +247,14 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyDeckItem, BaseViewHold
imageLoader
.
bindImage
(
cardImage
,
-
1
,
null
,
ImageLoader
.
Type
.
small
);
}
helper
.
getView
(
R
.
id
.
delete_my_online_deck_btn
).
setOnClickListener
(
view
->
{
deleteMyDeckOnLine
(
item
);
});
helper
.
getView
(
R
.
id
.
delete_my_online_deck_btn
).
setOnClickListener
(
view
->
{
deleteMyDeckOnLine
(
item
);
});
helper
.
getView
(
R
.
id
.
ll_switch_show
).
setOnClickListener
(
view
->
{
LogUtil
.
i
(
TAG
,
"current "
+
item
.
toString
());
changeDeckPublicState
(
item
);
});
// else if (item.getDeckSouce() == 1) {
// helper.setText(R.id.my_deck_id, item.getDeckId());
// imageView.setImageResource(R.drawable.ic_server_download);
...
...
mobile/src/main/java/cn/garymb/ygomobile/deck_square/api_response/BasicResponse.java
View file @
63715915
...
...
@@ -20,4 +20,13 @@ public class BasicResponse {
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
/**
* 后端设计的有点怪,接口成功时,message的内容为“true”
* @return
*/
public
boolean
isMessageTrue
(){
return
message
.
equals
(
"true"
);
}
}
mobile/src/main/java/cn/garymb/ygomobile/deck_square/api_response/MyOnlineDeckDetail.java
View file @
63715915
...
...
@@ -23,8 +23,8 @@ public class MyOnlineDeckDetail implements Parcelable {
private
String
deckMainSerial
;
private
String
deckYdk
;
private
Integer
userId
;
private
String
isPublic
;
private
String
isDelete
;
private
boolean
isPublic
;
private
boolean
isDelete
;
protected
MyOnlineDeckDetail
(
Parcel
in
)
{
...
...
@@ -43,8 +43,8 @@ public class MyOnlineDeckDetail implements Parcelable {
deckMainSerial
=
in
.
readString
();
deckYdk
=
in
.
readString
();
userId
=
in
.
readInt
();
isPublic
=
in
.
readString
(
);
isDelete
=
in
.
readString
(
);
isPublic
=
(
in
.
readByte
()
!=
0
);
isDelete
=
(
in
.
readByte
()
!=
0
);
}
public
static
final
Creator
<
MyOnlineDeckDetail
>
CREATOR
=
new
Creator
<
MyOnlineDeckDetail
>()
{
...
...
@@ -81,8 +81,8 @@ public class MyOnlineDeckDetail implements Parcelable {
dest
.
writeString
(
deckMainSerial
);
dest
.
writeString
(
deckYdk
);
dest
.
writeInt
(
userId
);
dest
.
write
String
(
isPublic
);
dest
.
write
String
(
isDelete
);
dest
.
write
Byte
((
byte
)
(
isPublic
?
1
:
0
)
);
dest
.
write
Byte
((
byte
)
(
isDelete
?
1
:
0
)
);
}
...
...
@@ -206,21 +206,19 @@ public class MyOnlineDeckDetail implements Parcelable {
this
.
userId
=
userId
;
}
public
String
getI
sPublic
()
{
public
boolean
i
sPublic
()
{
return
isPublic
;
}
public
void
set
IsPublic
(
String
is
Public
)
{
this
.
isPublic
=
is
Public
;
public
void
set
Public
(
boolean
a
Public
)
{
isPublic
=
a
Public
;
}
public
String
getI
sDelete
()
{
public
boolean
i
sDelete
()
{
return
isDelete
;
}
public
void
set
IsDelete
(
String
isD
elete
)
{
this
.
isDelete
=
isD
elete
;
public
void
set
Delete
(
boolean
d
elete
)
{
isDelete
=
d
elete
;
}
}
\ No newline at end of file
mobile/src/main/java/cn/garymb/ygomobile/deck_square/api_response/PushDeckPublicState.java
0 → 100644
View file @
63715915
package
cn.garymb.ygomobile.deck_square.api_response
;
public
class
PushDeckPublicState
{
private
Integer
userId
;
private
String
deckId
;
private
boolean
isPublic
;
public
Integer
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
Integer
userId
)
{
this
.
userId
=
userId
;
}
public
String
getDeckId
()
{
return
deckId
;
}
public
void
setDeckId
(
String
deckId
)
{
this
.
deckId
=
deckId
;
}
public
boolean
isPublic
()
{
return
isPublic
;
}
public
void
setPublic
(
boolean
aPublic
)
{
isPublic
=
aPublic
;
}
}
mobile/src/main/res/layout/item_my_deck.xml
View file @
63715915
...
...
@@ -76,8 +76,8 @@
<ImageView
android:id=
"@+id/show_on_deck_square"
android:layout_width=
"
1
0dp"
android:layout_height=
"
1
0dp"
android:layout_width=
"
2
0dp"
android:layout_height=
"
2
0dp"
android:layout_marginLeft=
"5dp"
android:src=
"@drawable/baseline_remove_red_eye_24"
/>
...
...
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