89 lines
2.5 KiB
Swift
89 lines
2.5 KiB
Swift
//
|
||
// VPHomeViewModel.swift
|
||
// Veloria
|
||
//
|
||
// Created by Veloria on 2025/5/20.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
class VPHomeViewModel: VPModel {
|
||
|
||
|
||
///原始模版列表 不可直接使用,需要过滤
|
||
var oldModuleList: [VPHomeModuleItem]? {
|
||
didSet {
|
||
filterModuleData()
|
||
}
|
||
}
|
||
///筛选后的数据
|
||
private(set) lazy var newModuleList: [VPHomeModuleItem] = []
|
||
|
||
|
||
///需要更新分类数据
|
||
var needUpdateCategory = true
|
||
///分类列表
|
||
private(set) lazy var categoryList: [VPCategoryModel] = []
|
||
private(set) lazy var categoryTitleList: [String] = []
|
||
|
||
var rawCategoryList: [VPCategoryModel] = [] {
|
||
didSet {
|
||
let allCategory = VPCategoryModel()
|
||
allCategory.name = "All".localized
|
||
allCategory.id = "0"
|
||
|
||
categoryList.removeAll()
|
||
categoryTitleList.removeAll()
|
||
|
||
categoryList.append(allCategory)
|
||
categoryList += rawCategoryList
|
||
|
||
categoryList.forEach { model in
|
||
categoryTitleList.append(model.name ?? "")
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
///跑马灯数据
|
||
private(set) lazy var marqueeArr: [VPShortModel] = []
|
||
|
||
|
||
///筛选模版数据
|
||
private func filterModuleData() {
|
||
newModuleList.removeAll()
|
||
|
||
oldModuleList?.forEach({
|
||
if let key = $0.module_key {
|
||
if key == .banner {
|
||
newModuleList.insert($0, at: 0)
|
||
|
||
}
|
||
/* else if key == .category_navigation { //分类数据
|
||
if needUpdateCategory {
|
||
categoryList.removeAll()
|
||
categoryTitleList.removeAll()
|
||
|
||
let allCategory = VPCategoryModel()
|
||
allCategory.name = "All".localized
|
||
allCategory.id = "0"
|
||
categoryList.append(allCategory)
|
||
categoryList += ($0.categoryList ?? [])
|
||
|
||
categoryList.forEach { model in
|
||
categoryTitleList.append(model.name ?? "")
|
||
}
|
||
}
|
||
|
||
}*/
|
||
else if key == .marquee { //跑马灯数据
|
||
marqueeArr = $0.list ?? []
|
||
} else {
|
||
newModuleList.append($0)
|
||
}
|
||
}
|
||
})
|
||
}
|
||
|
||
}
|