feat: 更新iOS和Podfile的部署目标以支持新版本
- 将iOS平台版本更新至17,确保与最新的开发环境兼容。 - 更新Podfile中的iOS部署目标至17.0,确保依赖项与新版本兼容。 - 修改Podfile.lock以反映新的依赖项版本,确保项目一致性。 - 在多个视图中重构代码,优化状态管理和视图逻辑,提升用户体验。
This commit is contained in:
@@ -172,35 +172,35 @@ struct FeedListContentView: View {
|
||||
@Binding var previewCurrentIndex: Int
|
||||
|
||||
var body: some View {
|
||||
WithViewStore(self.store, observe: { $0 }) { viewStore in
|
||||
if viewStore.isLoading {
|
||||
WithPerceptionTracking {
|
||||
if store.isLoading {
|
||||
LoadingView()
|
||||
} else if let error = viewStore.error {
|
||||
} else if let error = store.error {
|
||||
ErrorView(error: error)
|
||||
} else if viewStore.moments.isEmpty {
|
||||
} else if store.moments.isEmpty {
|
||||
EmptyView()
|
||||
} else {
|
||||
MomentsListView(
|
||||
moments: viewStore.moments,
|
||||
hasMore: viewStore.hasMore,
|
||||
isLoadingMore: viewStore.isLoadingMore,
|
||||
moments: store.moments,
|
||||
hasMore: store.hasMore,
|
||||
isLoadingMore: store.isLoadingMore,
|
||||
onImageTap: { images, tappedIndex in
|
||||
previewCurrentIndex = tappedIndex
|
||||
previewItem = PreviewItem(images: images, index: tappedIndex)
|
||||
},
|
||||
onMomentTap: { moment in
|
||||
viewStore.send(.showDetail(moment))
|
||||
store.send(.showDetail(moment))
|
||||
},
|
||||
onLikeTap: { dynamicId, uid, likedUid, worldId in
|
||||
viewStore.send(.likeDynamic(dynamicId, uid, likedUid, worldId))
|
||||
store.send(.likeDynamic(dynamicId, uid, likedUid, worldId))
|
||||
},
|
||||
onLoadMore: {
|
||||
viewStore.send(.loadMore)
|
||||
store.send(.loadMore)
|
||||
},
|
||||
onRefresh: {
|
||||
viewStore.send(.reload)
|
||||
store.send(.reload)
|
||||
},
|
||||
likeLoadingDynamicIds: viewStore.likeLoadingDynamicIds
|
||||
likeLoadingDynamicIds: store.likeLoadingDynamicIds
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -214,59 +214,56 @@ struct FeedListView: View {
|
||||
@State private var previewCurrentIndex: Int = 0
|
||||
|
||||
var body: some View {
|
||||
WithViewStore(self.store, observe: { $0 }) { viewStore in
|
||||
WithPerceptionTracking {
|
||||
GeometryReader { geometry in
|
||||
ZStack {
|
||||
// 背景
|
||||
BackgroundView()
|
||||
|
||||
VStack(alignment: .center, spacing: 0) {
|
||||
// 顶部栏
|
||||
TopBarView {
|
||||
viewStore.send(.editFeedButtonTapped)
|
||||
}
|
||||
|
||||
// 其他内容
|
||||
Image("Volume")
|
||||
.frame(width: 56, height: 41)
|
||||
.padding(.top, 16)
|
||||
|
||||
Text(LocalizedString("feedList.slogan", comment: "The disease is like a cruel ruler,\nand time is our most precious treasure.\nEvery moment we live is a victory\nagainst the inevitable."))
|
||||
.font(.system(size: 16))
|
||||
.multilineTextAlignment(.leading)
|
||||
.foregroundColor(.white.opacity(0.9))
|
||||
.padding(.horizontal, 30)
|
||||
.padding(.bottom, 30)
|
||||
|
||||
// 动态内容列表
|
||||
FeedListContentView(
|
||||
store: store,
|
||||
previewItem: $previewItem,
|
||||
previewCurrentIndex: $previewCurrentIndex
|
||||
)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .top)
|
||||
}
|
||||
WithPerceptionTracking {
|
||||
GeometryReader { geometry in
|
||||
ZStack {
|
||||
// 背景
|
||||
BackgroundView()
|
||||
|
||||
// 添加API Loading和错误处理视图
|
||||
APILoadingEffectView()
|
||||
VStack(alignment: .center, spacing: 0) {
|
||||
// 顶部栏
|
||||
TopBarView {
|
||||
store.send(.editFeedButtonTapped)
|
||||
}
|
||||
|
||||
// 其他内容
|
||||
Image("Volume")
|
||||
.frame(width: 56, height: 41)
|
||||
.padding(.top, 16)
|
||||
|
||||
Text(LocalizedString("feedList.slogan", comment: "The disease is like a cruel ruler,\nand time is our most precious treasure.\nEvery moment we live is a victory\nagainst the inevitable."))
|
||||
.font(.system(size: 16))
|
||||
.multilineTextAlignment(.leading)
|
||||
.foregroundColor(.white.opacity(0.9))
|
||||
.padding(.horizontal, 30)
|
||||
.padding(.bottom, 30)
|
||||
|
||||
// 动态内容列表
|
||||
FeedListContentView(
|
||||
store: store,
|
||||
previewItem: $previewItem,
|
||||
previewCurrentIndex: $previewCurrentIndex
|
||||
)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
}
|
||||
.onAppear {
|
||||
viewStore.send(.onAppear)
|
||||
}
|
||||
.onReceive(NotificationCenter.default.publisher(for: Notification.Name("reloadFeedList"))) { _ in
|
||||
viewStore.send(.reload)
|
||||
}
|
||||
.sheet(isPresented: viewStore.binding(
|
||||
get: \.isEditFeedPresented,
|
||||
send: { $0 ? .editFeedButtonTapped : .editFeedDismissed }
|
||||
)) {
|
||||
}
|
||||
.onAppear {
|
||||
store.send(.onAppear)
|
||||
}
|
||||
.onRefresh {
|
||||
store.send(.reload)
|
||||
}
|
||||
// 新增:编辑动态页面
|
||||
.sheet(isPresented: store.binding(
|
||||
get: \.showEditFeed,
|
||||
send: { _ in .editFeedDismissed }
|
||||
)) {
|
||||
WithPerceptionTracking {
|
||||
EditFeedView(
|
||||
onDismiss: {
|
||||
viewStore.send(.editFeedDismissed)
|
||||
store.send(.editFeedDismissed)
|
||||
},
|
||||
store: Store(
|
||||
initialState: EditFeedFeature.State()
|
||||
@@ -275,32 +272,29 @@ struct FeedListView: View {
|
||||
}
|
||||
)
|
||||
}
|
||||
// 新增:图片预览弹窗
|
||||
.fullScreenCover(item: $previewItem) { item in
|
||||
ImagePreviewPager(
|
||||
images: item.images as [String],
|
||||
currentIndex: $previewCurrentIndex
|
||||
) {
|
||||
previewItem = nil
|
||||
}
|
||||
}
|
||||
// 新增:详情页导航
|
||||
.navigationDestination(isPresented: store.binding(
|
||||
get: \.showDetail,
|
||||
send: { _ in .detailDismissed }
|
||||
)) {
|
||||
if let selectedMoment = store.selectedMoment {
|
||||
DetailView(
|
||||
store: Store(
|
||||
initialState: DetailFeature.State(moment: selectedMoment)
|
||||
) {
|
||||
DetailFeature()
|
||||
},
|
||||
onDismiss: {
|
||||
store.send(.detailDismissed)
|
||||
}
|
||||
)
|
||||
}
|
||||
// 新增:DetailView导航
|
||||
.navigationDestination(isPresented: viewStore.binding(
|
||||
get: \.showDetail,
|
||||
send: { _ in .detailDismissed }
|
||||
)) {
|
||||
if let selectedMoment = viewStore.selectedMoment {
|
||||
DetailView(
|
||||
store: Store(
|
||||
initialState: DetailFeature.State(moment: selectedMoment)
|
||||
) {
|
||||
DetailFeature()
|
||||
},
|
||||
onDismiss: {
|
||||
viewStore.send(.detailDismissed)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
// 新增:图片预览弹窗
|
||||
.fullScreenCover(item: $previewItem) { item in
|
||||
ImagePreviewPager(images: item.images as [String], currentIndex: $previewCurrentIndex) {
|
||||
previewItem = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user