123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- package com.vpn.fastestvpnservice.viewmodels
- import android.content.Context
- import android.content.pm.ActivityInfo
- import android.util.Log
- import androidx.lifecycle.LiveData
- import androidx.lifecycle.MutableLiveData
- import androidx.lifecycle.ViewModel
- import com.google.gson.Gson
- import com.google.gson.reflect.TypeToken
- import com.vpn.fastestvpnservice.beans.DataResponseServers
- import com.vpn.fastestvpnservice.beans.ServerData
- import com.vpn.fastestvpnservice.constants.AppEnum
- import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
- import com.vpn.fastestvpnservice.openVpnUtils.EncryptData
- import com.vpn.fastestvpnservice.retrofit.RetrofitNetworkHandling
- import com.vpn.fastestvpnservice.retrofit.WebServiceFactory
- import com.vpn.fastestvpnservice.screens.isServerModelInitialized
- import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
- import com.vpn.fastestvpnservice.utils.StaticMethods
- import retrofit2.Call
- import java.io.BufferedReader
- import java.io.InputStream
- import java.io.InputStreamReader
- class SplashViewModel constructor(context: Context): ViewModel() {
- var mutableLiveDataServerData = MutableLiveData<DataResponseServers<ArrayList<ServerData>>>()
- var liveDataServerData: LiveData<DataResponseServers<ArrayList<ServerData>>> = mutableLiveDataServerData
- var mutableLiveDataLanguageStatus = MutableLiveData<Boolean>(false)
- var liveDataLanguageStatus: LiveData<Boolean> = mutableLiveDataLanguageStatus
- var preferenceHelper: BasePreferenceHelper
- var context: Context
- init {
- this.context = context
- preferenceHelper = BasePreferenceHelper(context)
- val jsonAppDetails = getJsonAppDetails()
- val jsonFileDetails = getJsonFileDetails()
- jsonAppDetails?.let {
- val En = EncryptData()
- preferenceHelper.saveAppDetails(En.encrypt(it))
- }
- jsonFileDetails?.let {
- val En = EncryptData()
- preferenceHelper.saveFileDetails(En.encrypt(it))
- }
- }
- fun serverDataApi() {
- Log.d("test_api_response_s", "serverDataApi called()")
- WebServiceFactory.getInstance().serverDataApi().enqueue(
- RetrofitNetworkHandling<Any>(object :
- RetrofitNetworkHandling.ResponseCallback<Any> {
- override fun onSuccess(call: Call<Any>?, response: Any?) {
- try {
- val gson = Gson()
- val jsonString = gson.toJson(response)
- val type = object : TypeToken<DataResponseServers<ArrayList<ServerData>>>() {}.type
- val data = gson.fromJson<DataResponseServers<ArrayList<ServerData>>>(jsonString, type)
- if (data?.status == true) {
- Log.d("test_api_response_s", "response true")
- mutableLiveDataServerData.value = data
- data.data?.let { preferenceHelper.saveServerData(it) }
- data.wireguard?.let {wg ->
- if (wg.ip?.isNotEmpty() == true && wg.key?.isNotEmpty() == true){
- Log.d("test_wg_data", "WG isNotEmpty")
- preferenceHelper.saveWireGuard(wg)
- } else {
- Log.d("test_wg_data", "WG isEmpty")
- }
- }
- data.product?.let {
- // Log.d("test_api_response", it.productName.toString())
- preferenceHelper.saveProduct(it)
- }
- data.available_protocols.let {
- preferenceHelper.saveAvailableProtocols(it)
- }
- data.enabled_protocols.let {
- preferenceHelper.saveEnabledProtocols(it)
- }
- if (isServerModelInitialized) {
- Log.d("test_api_response_s", "serverDataApi isServerModelInitialized")
- if (StaticMethods.isTV(context)) {
- Log.d("test_api_response_s", "serverDataApi TV")
- serverListViewModelSplash.setCountryDataTV()
- } else {
- Log.d("test_api_response_s", "serverDataApi Android")
- serverListViewModelSplash.setRecommendedSmartServers()
- serverListViewModelSplash.setCountryData()
- }
- }
- // Log.d("test_api_response", data.data.toString())
- // Log.d("test_api_response", data.enabled_protocols.toString())
- // Log.d("test_api_response", data.available_protocols.toString())
- }
- } catch (ex: Exception) {
- Log.d("test_api_response_s", "server catch")
- }
- }
- override fun onFail(call: Call<Any>?, response: Any?) {
- Log.d("test_api_response_s", "serverDataApi onFail")
- mutableLiveDataLanguageStatus.value = false
- }
- override fun onError(call: Call<Any>?, response: Any?) {
- Log.d("test_api_response_s", "serverDataApi onError")
- mutableLiveDataLanguageStatus.value = false
- }
- }
- )
- )
- }
- private fun getJsonFileDetails(): String? {
- val protocol = AppEnum.UDP_PROTOCOL.key
- var conf: InputStream? = null
- try {
- conf = if (protocol.equals(AppEnum.TCP_PROTOCOL.key, ignoreCase = true)) {
- context.assets.open("fileDetails/fileDetails.json")
- } else {
- context.assets.open("fileDetails/fileDetails.json")
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
- var bufferedReader: BufferedReader? = null
- var isr: InputStreamReader? = null
- try {
- isr = InputStreamReader(conf)
- } catch (e: Exception) {
- e.printStackTrace()
- }
- try {
- bufferedReader = BufferedReader(isr)
- val total = StringBuilder()
- var line: String?
- while (bufferedReader.readLine().also { line = it } != null) {
- total.append(line).append('\n')
- }
- return total.toString()
- } catch (e: Exception) {
- e.printStackTrace()
- }
- return ""
- }
- private fun getJsonAppDetails(): String? {
- var conf: InputStream? = null
- try {
- conf = context.assets.open("appDetails/appDetails.json")
- } catch (e: Exception) {
- e.printStackTrace()
- }
- var bufferedReader: BufferedReader? = null
- var isr: InputStreamReader? = null
- try {
- isr = InputStreamReader(conf)
- } catch (e: Exception) {
- e.printStackTrace()
- }
- try {
- bufferedReader = BufferedReader(isr)
- val total = StringBuilder()
- var line: String?
- while (bufferedReader.readLine().also { line = it } != null) {
- total.append(line).append('\n')
- }
- return total.toString()
- } catch (e: Exception) {
- e.printStackTrace()
- }
- return ""
- }
- }
|