Fix update full config when settings change
Now daemon process does not reference the node list at all and only depend on a couple of settings like PREF_CURR_CONFIG..
This commit is contained in:
@@ -4,6 +4,7 @@ import android.os.Bundle
|
|||||||
import android.support.v7.app.AlertDialog
|
import android.support.v7.app.AlertDialog
|
||||||
import android.text.Editable
|
import android.text.Editable
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
|
import android.util.Log
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
@@ -100,6 +101,11 @@ class Server2Activity : BaseActivity() {
|
|||||||
if (saveSuccess) {
|
if (saveSuccess) {
|
||||||
//update config
|
//update config
|
||||||
defaultDPreference.setPrefString(AppConfig.ANG_CONFIG + edit_guid, tv_content.text.toString())
|
defaultDPreference.setPrefString(AppConfig.ANG_CONFIG + edit_guid, tv_content.text.toString())
|
||||||
|
if (edit_index == configs.index) {
|
||||||
|
if (!AngConfigManager.genStoreV2rayConfig(edit_index)) {
|
||||||
|
Log.d(AppConfig.ANG_PACKAGE, "update custom config $edit_index but generate full configuration failed!")
|
||||||
|
}
|
||||||
|
}
|
||||||
finish()
|
finish()
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.v2ray.ang.ui
|
package com.v2ray.ang.ui
|
||||||
|
|
||||||
|
import android.arch.lifecycle.ViewModelProviders
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v7.preference.*
|
import android.support.v7.preference.*
|
||||||
@@ -9,6 +10,7 @@ import com.v2ray.ang.AppConfig
|
|||||||
import com.v2ray.ang.extension.toast
|
import com.v2ray.ang.extension.toast
|
||||||
import com.v2ray.ang.util.AngConfigManager
|
import com.v2ray.ang.util.AngConfigManager
|
||||||
import com.v2ray.ang.util.Utils
|
import com.v2ray.ang.util.Utils
|
||||||
|
import com.v2ray.ang.viewmodel.SettingsViewModel
|
||||||
|
|
||||||
class SettingsActivity : BaseActivity() {
|
class SettingsActivity : BaseActivity() {
|
||||||
companion object {
|
companion object {
|
||||||
@@ -37,6 +39,8 @@ class SettingsActivity : BaseActivity() {
|
|||||||
const val PREF_FORWARD_IPV6 = "pref_forward_ipv6"
|
const val PREF_FORWARD_IPV6 = "pref_forward_ipv6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val settingsViewModel by lazy { ViewModelProviders.of(this).get(SettingsViewModel::class.java) }
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_settings)
|
setContentView(R.layout.activity_settings)
|
||||||
@@ -44,6 +48,8 @@ class SettingsActivity : BaseActivity() {
|
|||||||
title = getString(R.string.title_settings)
|
title = getString(R.string.title_settings)
|
||||||
|
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
|
||||||
|
settingsViewModel.startListenPreferenceChange()
|
||||||
}
|
}
|
||||||
|
|
||||||
class SettingsFragment : PreferenceFragmentCompat() {
|
class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.v2ray.ang.viewmodel
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import android.arch.lifecycle.AndroidViewModel
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.support.v7.preference.PreferenceManager
|
||||||
|
import android.util.Log
|
||||||
|
import com.v2ray.ang.AppConfig
|
||||||
|
import com.v2ray.ang.ui.SettingsActivity.Companion
|
||||||
|
import com.v2ray.ang.util.AngConfigManager
|
||||||
|
import kotlinx.coroutines.GlobalScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
class SettingsViewModel(application: Application) : AndroidViewModel(application), SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
fun startListenPreferenceChange() {
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(getApplication()).registerOnSharedPreferenceChangeListener(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCleared() {
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(getApplication()).unregisterOnSharedPreferenceChangeListener(this)
|
||||||
|
Log.i(AppConfig.ANG_PACKAGE, "Settings ViewModel is cleared")
|
||||||
|
super.onCleared()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
|
||||||
|
Log.d(AppConfig.ANG_PACKAGE, "Observe settings changed: $key")
|
||||||
|
when(key) {
|
||||||
|
Companion.PREF_SNIFFING_ENABLED,
|
||||||
|
Companion.PREF_PROXY_SHARING,
|
||||||
|
Companion.PREF_LOCAL_DNS_ENABLED,
|
||||||
|
Companion.PREF_REMOTE_DNS,
|
||||||
|
Companion.PREF_DOMESTIC_DNS,
|
||||||
|
Companion.PREF_ROUTING_DOMAIN_STRATEGY,
|
||||||
|
Companion.PREF_ROUTING_MODE,
|
||||||
|
AppConfig.PREF_V2RAY_ROUTING_AGENT,
|
||||||
|
AppConfig.PREF_V2RAY_ROUTING_BLOCKED,
|
||||||
|
AppConfig.PREF_V2RAY_ROUTING_DIRECT -> {
|
||||||
|
GlobalScope.launch {
|
||||||
|
if (!AngConfigManager.genStoreV2rayConfig(AngConfigManager.configs.index)) {
|
||||||
|
Log.d(AppConfig.ANG_PACKAGE, "$key changed but generate full configuration failed!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user