1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.settings.network 18 19 import android.app.Application 20 import android.telephony.SubscriptionManager 21 import androidx.lifecycle.AndroidViewModel 22 import androidx.lifecycle.viewModelScope 23 import com.android.settings.network.telephony.getSelectableSubscriptionInfoList 24 import com.android.settings.network.telephony.subscriptionsChangedFlow 25 import kotlinx.coroutines.Dispatchers 26 import kotlinx.coroutines.flow.SharingStarted 27 import kotlinx.coroutines.flow.map 28 import kotlinx.coroutines.flow.stateIn 29 import kotlinx.coroutines.plus 30 31 class SubscriptionInfoListViewModel(application: Application) : AndroidViewModel(application) { 32 private val subscriptionManager = 33 application.getSystemService(SubscriptionManager::class.java)!! 34 private val scope = viewModelScope + Dispatchers.Default 35 36 /** 37 * Getting the active Subscription list 38 */ 39 //ToDo: renaming the function name <lambda>null40 val subscriptionInfoListFlow = application.subscriptionsChangedFlow().map { 41 SubscriptionUtil.getActiveSubscriptions(subscriptionManager) 42 }.stateIn(scope, SharingStarted.Eagerly, initialValue = emptyList()) 43 44 /** 45 * Getting the Selectable SubscriptionInfo List from the SubscriptionRepository's 46 * getAvailableSubscriptionInfoList 47 */ <lambda>null48 val selectableSubscriptionInfoListFlow = application.subscriptionsChangedFlow().map { 49 application.getSelectableSubscriptionInfoList() 50 }.stateIn(scope, SharingStarted.Eagerly, initialValue = emptyList()) 51 } 52