66 lines
2.0 KiB
Swift
66 lines
2.0 KiB
Swift
//
|
|
// LiveViewControllers.swift
|
|
// suixinkan
|
|
//
|
|
// Created by Codex on 2026/6/26.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
/// 直播管理页。
|
|
final class LiveManagementViewController: ModuleTableViewController {
|
|
private let viewModel = LiveManagementViewModel()
|
|
|
|
override func viewDidLoad() {
|
|
title = "直播管理"
|
|
super.viewDidLoad()
|
|
wireViewModel(viewModel) { }
|
|
}
|
|
|
|
override func tableRowCount() -> Int { viewModel.items.count }
|
|
|
|
override func configureCell(_ cell: TitleSubtitleTableViewCell, at indexPath: IndexPath) {
|
|
let item = viewModel.items[indexPath.row]
|
|
cell.configure(
|
|
title: item.title,
|
|
subtitle: item.statusLabel,
|
|
detail: String(item.startTime)
|
|
)
|
|
}
|
|
|
|
override func reloadContent() async {
|
|
await viewModel.reload(api: services.liveAPI, scenicId: services.currentScenicId)
|
|
}
|
|
|
|
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
|
|
guard indexPath.row >= viewModel.items.count - 2 else { return }
|
|
Task { await viewModel.loadMore(api: services.liveAPI, scenicId: services.currentScenicId) }
|
|
}
|
|
}
|
|
|
|
extension LiveManagementViewModel: ViewModelBindable {}
|
|
|
|
/// 直播相册页。
|
|
final class LiveAlbumViewController: ModuleTableViewController {
|
|
private let viewModel = LiveAlbumViewModel()
|
|
|
|
override func viewDidLoad() {
|
|
title = "直播相册"
|
|
super.viewDidLoad()
|
|
wireViewModel(viewModel) { }
|
|
}
|
|
|
|
override func tableRowCount() -> Int { viewModel.folders.count }
|
|
|
|
override func configureCell(_ cell: TitleSubtitleTableViewCell, at indexPath: IndexPath) {
|
|
let folder = viewModel.folders[indexPath.row]
|
|
cell.configure(title: folder.name, subtitle: folder.creator, detail: "\(folder.items.count) 张")
|
|
}
|
|
|
|
override func reloadContent() async {
|
|
await viewModel.reload(api: services.liveAPI, scenicId: services.currentScenicId)
|
|
}
|
|
}
|
|
|
|
extension LiveAlbumViewModel: ViewModelBindable {}
|