From c1090e8057adddb28a942c9037150994223fd6df Mon Sep 17 00:00:00 2001 From: km2023 Date: Wed, 6 May 2026 10:47:41 +0800 Subject: [PATCH] feat(demo): add Single/Loop play-mode buttons gated by isActivated Co-Authored-By: Claude Sonnet 4.6 --- demo/Sources/WrapperTestView.swift | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/demo/Sources/WrapperTestView.swift b/demo/Sources/WrapperTestView.swift index de41608..bb79151 100644 --- a/demo/Sources/WrapperTestView.swift +++ b/demo/Sources/WrapperTestView.swift @@ -151,6 +151,22 @@ struct WrapperTestView: View { Button("unbind") { runUnbind() } .buttonStyle(.bordered) } + + HStack { + Text("PlayMode") + .font(.caption) + Spacer() + if let mode = viewModel.deviceInfo?.loop { + Text(mode == .loop ? "循环" : "单播") + .font(.caption) + .foregroundColor(.secondary) + } + Button("Single") { runSetPlayMode(.single) } + .buttonStyle(.bordered) + Button("Loop") { runSetPlayMode(.loop) } + .buttonStyle(.bordered) + } + .disabled(!viewModel.isActivated || isBusy) } } @@ -396,6 +412,22 @@ struct WrapperTestView: View { } } + private func runSetPlayMode(_ mode: PlayMode) { + isBusy = true + log("→ setPlayMode(\(mode == .loop ? "loop" : "single"), userId=\(userId))") + viewModel.sdk.setPlayMode(mode, userId: userId) { [self] result in + DispatchQueue.main.async { + self.isBusy = false + switch result { + case .success(let resp): + self.log("setPlayMode ✓ sn=\(resp.sn)", level: .success) + case .failure(let error): + self.log("setPlayMode ✗ \(error.localizedDescription)", level: .error) + } + } + } + } + private func runTransfer() { isBusy = true log("→ transferMedia(\(fileUrl))")