1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- //
- // APAudioToRingVM.swift
- // AIPlayRingtones
- //
- // Created by mini on 2025/5/19.
- //
- import Combine
- import ObjectMapper
- class APAudioToRingVM {
- private var cancellables = Set<AnyCancellable>()
- //输入框内容
- @Published var promptText:String = ""
-
- @Published var ringFilePath:URL?
-
- //选择生成类类型
- var generateStyleIndex:Int = 0
- @Published var selectedGenerateModel:ASGenerateStyleModel?
- lazy var generateStyleModels: [ASGenerateStyleModel] = {
- var ptpStyleModels = [ASGenerateStyleModel]()
- if let dataArray = Mapper<ASGenerateStyleModel>().mapArray(JSONfile: "ring_rtr_style.json"){
- ptpStyleModels = dataArray
-
- if let model = dataArray.safeObj(At: generateStyleIndex) {
- selectedGenerateModel = model //加上默认的选择
- }
- }
-
- return ptpStyleModels
- }()
-
-
- @Published private(set) var isCanGennerate: Bool = false
- init(){
-
-
- // Publishers.CombineLatest3($promptText, $ringFilePath,$selectedGenerateModel)
- Publishers.CombineLatest($ringFilePath,$selectedGenerateModel)
- .map { ringFilePath,generateStyleModel in
- // 当两者长度都 > 0 时返回 true
- return ringFilePath != nil && generateStyleModel != nil
- }
- .assign(to: \.isCanGennerate, on: self)
- .store(in: &cancellables)
- }
-
- //用户生成图片的TSGenerateStyleModel
- var generateStyleModel:ASGenerateStyleModel{
- let generateStyleModel = selectedGenerateModel!
- generateStyleModel.inputText = promptText
- generateStyleModel.duration = 10
- generateStyleModel.upLoadFilePath = ringFilePath
- generateStyleModel.generateType = .ringToRing
- return generateStyleModel
- }
- }
|