cloudroam
2025-02-26 b653b90d4598ee2a65bceffa793bb75353b6d186
app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
@@ -3,34 +3,66 @@
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.firstapp.core.Core
import com.example.firstapp.database.entity.Code
import com.example.firstapp.model.ExpressGroup
import com.example.firstapp.model.ExpressPackage
import kotlinx.coroutines.launch
class HomeViewModel : ViewModel() {
    private val _text = MutableLiveData<String>().apply {
        value = "短信主页面"
    }
    val text: LiveData<String> = _text
//    private val _text = MutableLiveData<String>().apply {
//        value = "短信主页面"
//    }
//    val text: LiveData<String> = _text
//
//    private val _codeList = MutableLiveData<List<Code>>()
//
//    val codeList: LiveData<List<Code>> get() = _codeList
    private val _codeList = MutableLiveData<List<Code>>()
    val codeList: LiveData<List<Code>> get() = _codeList
    private val _expressItems = MutableLiveData<List<ExpressGroup>>()
    val expressItems: LiveData<List<ExpressGroup>> = _expressItems
    init {
        // 初始化时加载数据
        loadData()
      //  loadData()
        loadExpressData()
    }
    // 加载数据的方法
    fun loadData() {
        // 获取数据,并更新 LiveData
        _codeList.value = Core.code.getAllDesc() // 假设这是获取最新的 data 的方法
    }
//    fun loadData() {
//        // 获取数据,并更新 LiveData
//        _codeList.value = Core.code.getAllDesc() // 假设这是获取最新的 data 的方法
//    }
//
//    // 如果需要手动更新数据,可以调用这个方法
//    fun updateData() {
//        _codeList.value = Core.code.getAllDesc() // 重新获取并更新数据
//    }
    // 如果需要手动更新数据,可以调用这个方法
    fun updateData() {
        _codeList.value = Core.code.getAllDesc() // 重新获取并更新数据
    fun loadExpressData() {
        viewModelScope.launch {
            // 1. 获取所有驿站类型的提醒设置
            val stations = Core.reminder.getByType("驿站")
            // 2. 按驿站分组获取包裹信息
            val groups = stations.map { station ->
                val packages = Core.code.getByKeyword(station.nickname).map { code ->
                    ExpressPackage(
                        company = code.name, //快递公司
                        trackingNumber = code.code, // 取件码
                        date = code.overtime  //时间
                    )
                }
                ExpressGroup(
                    stationName = station.nickname,
                    packages = packages
                )
            }
            _expressItems.postValue(groups)
        }
    }
}