fix: suspend OTG live transfer on exit

This commit is contained in:
2026-07-08 09:32:35 +08:00
parent 92fcad7ac9
commit e9f593643f
4 changed files with 94 additions and 38 deletions

View File

@ -197,6 +197,17 @@ final class WiredCameraTransferViewModelTests: XCTestCase {
XCTAssertEqual(driver.downloadedObjectIds, [])
XCTAssertTrue(viewModel.filteredPhotos().isEmpty)
}
func testStopSuspendsLiveTransferPolling() {
let context = makeOTGTestContext()
let manager = MockWiredCameraConnectionManager(driver: MockCameraDriver(objects: []))
let viewModel = makeWiredViewModel(context: context, manager: manager)
viewModel.start()
viewModel.stop()
XCTAssertEqual(manager.suspendLiveTransferCallCount, 1)
}
}
/// ViewModel
@ -437,6 +448,7 @@ private final class MockWiredCameraConnectionManager: WiredCameraConnectionManag
var state: ConnectionState
var currentDriver: CameraDriver?
var isContentCatalogReady: Bool
private(set) var suspendLiveTransferCallCount = 0
init(
state: ConnectionState = .connected(platform: .canon, deviceName: "Canon"),
@ -451,6 +463,9 @@ private final class MockWiredCameraConnectionManager: WiredCameraConnectionManag
func configureLiveTransfer(albumID: Int?) {}
func start() {}
func unbindDelegate() {}
func suspendLiveTransfer() {
suspendLiveTransferCallCount += 1
}
func disconnect() {
state = .disconnected
}