Add scenic application flow aligned with Android.

Implement scenic apply models, API, upload, UI, and tests; wire entry from permission apply pages and include related permission/scenic selection UI fixes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-07 11:09:27 +08:00
parent 2bea05b1d9
commit 77fec21563
22 changed files with 2202 additions and 216 deletions

View File

@ -84,7 +84,11 @@ final class CooperationAcquirerViewController: BaseViewController, UITableViewDa
override func viewDidLoad() {
super.viewDidLoad()
Task { await viewModel.loadAcquirers(api: orderAPI, initial: true) }
Task {
showLoading()
defer { hideLoading() }
await viewModel.loadAcquirers(api: orderAPI, initial: true)
}
}
@objc private func startScanBind() {
@ -105,10 +109,7 @@ final class CooperationAcquirerViewController: BaseViewController, UITableViewDa
}
@objc private func refreshTriggered() {
Task {
await viewModel.refresh(api: orderAPI)
refreshControl.endRefreshing()
}
Task { await viewModel.refresh(api: orderAPI) }
}
private func presentScanner() {
@ -137,7 +138,12 @@ final class CooperationAcquirerViewController: BaseViewController, UITableViewDa
}
private func applyViewModel() {
emptyLabel.isHidden = !viewModel.acquirers.isEmpty
if viewModel.isRefreshing {
if !refreshControl.isRefreshing { refreshControl.beginRefreshing() }
} else {
refreshControl.endRefreshing()
}
emptyLabel.isHidden = !viewModel.acquirers.isEmpty || viewModel.isRefreshing
tableView.reloadData()
}