移除 MJRefresh 依赖,恢复 SwiftUI 系统下拉刷新。

同时收紧各 ViewModel 内部 isLoading 可见性,避免不必要的视图刷新。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-29 10:55:45 +08:00
parent 8997d1ba1c
commit 8e34a45d50
93 changed files with 661 additions and 6261 deletions

View File

@ -63,7 +63,7 @@ final class CloudStorageViewModel: ObservableObject {
@Published var searchText = ""
@Published var selectedFilter: CloudDriveFilter = .all
@Published var selectedSort: CloudDriveSort = .updatedDesc
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var isMutating = false
@Published var errorMessage: String?
@ -267,9 +267,9 @@ final class MediaLibraryViewModel: ObservableObject {
@Published var page = 1
@Published var keyword = ""
@Published var selectedAuditFilter: MediaLibraryAuditFilter = .all
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var isLoadingDetail = false
private var isLoadingDetail = false
@Published var errorMessage: String?
private let pageSize = 10
@ -614,7 +614,7 @@ final class AlbumListViewModel: ObservableObject {
@Published var searchText = ""
@Published var startTime = ""
@Published var endTime = ""
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var isMutating = false
@Published var errorMessage: String?
@ -718,7 +718,7 @@ final class AlbumDetailViewModel: ObservableObject {
@Published var selectedTab: AlbumFileTab = .image
@Published var total = 0
@Published var page = 1
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var isMutating = false
@Published var errorMessage: String?
@ -862,7 +862,7 @@ final class AlbumTrailerViewModel: ObservableObject {
@Published var selectedFolderId: Int?
@Published var localFiles: [AlbumLocalUploadFile] = []
@Published var uploadProgress = 0
@Published var isLoadingFolders = false
private var isLoadingFolders = false
@Published var isSubmitting = false
@Published var errorMessage: String?
@Published var didUploadSuccessfully = false

View File

@ -135,7 +135,7 @@ final class LocationReportHistoryViewModel: ObservableObject {
@Published var endDate: Date?
@Published var items: [LocationReportHistoryItem] = []
@Published var errorMessage: String?
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var total = 0

View File

@ -20,8 +20,8 @@ final class PaymentCollectionViewModel: ObservableObject {
@Published var remarkText = ""
@Published var currentPayUrl = ""
@Published var qrImage: UIImage?
@Published var isLoading = false
@Published var isPolling = false
private var isLoading = false
private var isPolling = false
@Published var errorMessage: String?
@Published var status: PaymentCollectionStatus = .idle
@ -193,7 +193,7 @@ private extension String {
/// ViewModel
final class PaymentCollectionRecordViewModel: ObservableObject {
@Published var groups: [PaymentCollectionRecordGroup] = []
@Published var isLoading = false
private var isLoading = false
@Published var errorMessage: String?
///

View File

@ -13,7 +13,7 @@ import Combine
final class ProfileViewModel: ObservableObject {
@Published var userInfo: UserInfoResponse?
@Published var realNameInfo: RealNameInfo?
@Published var isLoading = false
private var isLoading = false
@Published var isSaving = false
@Published var isEditingProfile = false
@Published var editingNickname = ""

View File

@ -15,7 +15,7 @@ final class PunchPointListViewModel: ObservableObject {
@Published var items: [PunchPointItem] = []
@Published var selectedDetail: PunchPointItem?
@Published var errorMessage: String?
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var total = 0

View File

@ -179,7 +179,7 @@ enum ScenicSettlementAmountValidation: Equatable {
final class ScenicSettlementReviewViewModel: ObservableObject {
@Published var scenicApplications: [ScenicApplicationPendingResponse] = []
@Published var roleApplications: [RoleApplyPendingResponse] = []
@Published var isLoading = false
private var isLoading = false
@Published var message: String?
@Published var loadFailedAll = false
@Published var scenicLoadFailed = false

View File

@ -39,7 +39,7 @@ final class TaskCloudFileSelectionViewModel: ObservableObject {
@Published var searchText = ""
@Published var selectedFilter: TaskCloudFileFilter = .all
@Published var selectedFiles: [CloudDriveFile] = []
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var errorMessage: String?

View File

@ -51,7 +51,7 @@ final class TaskCreateViewModel: ObservableObject {
@Published var availableOrders: [AvailableOrderResponse] = []
@Published var selectedCloudFiles: [TaskCloudSelectionItem] = []
@Published var selectedLocalFiles: [TaskLocalUploadItem] = []
@Published var isLoadingOrders = false
private(set) var isLoadingOrders = false
@Published var isSubmitting = false
@Published var errorMessage: String?
@Published var didSubmitSuccessfully = false

View File

@ -38,7 +38,7 @@ enum TaskStatusFilter: Int, CaseIterable, Identifiable {
/// ViewModel
@MainActor
final class TaskManagementViewModel: ObservableObject {
@Published var isLoading = false
private var isLoading = false
@Published var isLoadingMore = false
@Published var tasks: [PhotographerTaskItem] = []
@Published var total = 0
@ -146,7 +146,7 @@ final class TaskManagementViewModel: ObservableObject {
/// ViewModel
@MainActor
final class TaskDetailViewModel: ObservableObject {
@Published var isLoading = false
private var isLoading = false
@Published var detail: TaskDetailResponse?
@Published var errorMessage: String?

View File

@ -229,7 +229,7 @@ final class WithdrawApplyViewModel: ObservableObject {
@Published var info: WithdrawInfoResponse?
@Published var amountText = ""
@Published var smsCode = ""
@Published var isLoading = false
private var isLoading = false
@Published var isSubmitting = false
@Published var smsCountdown = 0
@Published var errorMessage: String?
@ -309,7 +309,7 @@ final class WithdrawalSettingsViewModel: ObservableObject {
@Published var frontImageURL = ""
@Published var backImageURL = ""
@Published var uploadProgress = 0
@Published var isLoading = false
private var isLoading = false
@Published var isSubmitting = false
@Published var smsCountdown = 0
@Published var errorMessage: String?
@ -442,7 +442,7 @@ final class PointsRedemptionViewModel: ObservableObject {
@Published var overview = PointOverviewResponse()
@Published var records: [PointWithdrawItem] = []
@Published var pointsText = ""
@Published var isLoading = false
private var isLoading = false
@Published var isSubmitting = false
@Published var errorMessage: String?