feat: 更新动态请求与详情视图以增强用户交互体验
- 修改LikeDynamicRequest结构体,调整queryParameters和bodyParameters的定义,确保请求参数正确传递。 - 在DetailFeature中新增当前用户ID的加载逻辑,提升动态详情的交互性。 - 更新FeedListFeature以支持点赞功能的状态管理,增强用户体验。 - 在DetailView中实现关闭回调,优化动态详情视图的用户交互。 - 改进OptimizedDynamicCardView以支持点赞按钮的交互逻辑,提升界面友好性。
This commit is contained in:
@@ -80,10 +80,12 @@ struct MomentCardView: View {
|
||||
let index: Int
|
||||
let onImageTap: ([String], Int) -> Void
|
||||
let onTap: () -> Void
|
||||
let onLikeTap: (Int, Int, Int, Int) -> Void
|
||||
let onLoadMore: () -> Void
|
||||
let isLastItem: Bool
|
||||
let hasMore: Bool
|
||||
let isLoadingMore: Bool
|
||||
let isLikeLoading: Bool
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 16) {
|
||||
@@ -92,7 +94,9 @@ struct MomentCardView: View {
|
||||
allMoments: allMoments,
|
||||
currentIndex: index,
|
||||
onImageTap: onImageTap,
|
||||
onLikeTap: { _, _,_,_ in }
|
||||
onLikeTap: onLikeTap,
|
||||
isLikeLoading: isLikeLoading,
|
||||
isDetailMode: false
|
||||
)
|
||||
.onTapGesture {
|
||||
onTap()
|
||||
@@ -117,7 +121,9 @@ struct MomentsListView: View {
|
||||
let isLoadingMore: Bool
|
||||
let onImageTap: ([String], Int) -> Void
|
||||
let onMomentTap: (MomentsInfo) -> Void
|
||||
let onLikeTap: (Int, Int, Int, Int) -> Void
|
||||
let onLoadMore: () -> Void
|
||||
let likeLoadingDynamicIds: Set<Int>
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
@@ -131,10 +137,12 @@ struct MomentsListView: View {
|
||||
onTap: {
|
||||
onMomentTap(moment)
|
||||
},
|
||||
onLikeTap: onLikeTap,
|
||||
onLoadMore: onLoadMore,
|
||||
isLastItem: index == moments.count - 1,
|
||||
hasMore: hasMore,
|
||||
isLoadingMore: isLoadingMore
|
||||
isLoadingMore: isLoadingMore,
|
||||
isLikeLoading: likeLoadingDynamicIds.contains(moment.dynamicId)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -182,9 +190,13 @@ struct FeedListContentView: View {
|
||||
onMomentTap: { moment in
|
||||
viewStore.send(.showDetail(moment))
|
||||
},
|
||||
onLikeTap: { dynamicId, uid, likedUid, worldId in
|
||||
viewStore.send(.likeDynamic(dynamicId, uid, likedUid, worldId))
|
||||
},
|
||||
onLoadMore: {
|
||||
viewStore.send(.loadMore)
|
||||
}
|
||||
},
|
||||
likeLoadingDynamicIds: viewStore.likeLoadingDynamicIds
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -263,12 +275,7 @@ struct FeedListView: View {
|
||||
// 新增:DetailView导航
|
||||
.navigationDestination(isPresented: viewStore.binding(
|
||||
get: \.showDetail,
|
||||
send: { isPresented in
|
||||
if !isPresented {
|
||||
return .detailDismissed
|
||||
}
|
||||
return .detailDismissed
|
||||
}
|
||||
send: { _ in .detailDismissed }
|
||||
)) {
|
||||
if let selectedMoment = viewStore.selectedMoment {
|
||||
DetailView(
|
||||
@@ -276,6 +283,9 @@ struct FeedListView: View {
|
||||
initialState: DetailFeature.State(moment: selectedMoment)
|
||||
) {
|
||||
DetailFeature()
|
||||
},
|
||||
onDismiss: {
|
||||
viewStore.send(.detailDismissed)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user