Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import android.widget.RadioButton
import android.widget.Toast
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.net.toUri
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.NavHostFragment
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
Expand All @@ -28,6 +28,7 @@ class ConfigConnectionBottomSheet :
OrbotBottomSheetDialogFragment(), CompoundButton.OnCheckedChangeListener {

private lateinit var binding: ConfigConnectionBottomSheetBinding
private val viewModel: ConnectViewModel by activityViewModels()

private lateinit var radios: List<RadioButton>
private lateinit var radioSubtitleMap: Map<CompoundButton, View>
Expand Down Expand Up @@ -177,9 +178,7 @@ class ConfigConnectionBottomSheet :

private fun closeAndConnect() {
dismiss()
val navHostFragment = requireActivity().supportFragmentManager.fragments[0] as NavHostFragment
val connectFrag = navHostFragment.childFragmentManager.fragments.last() as ConnectFragment
connectFrag.startTorAndVpn()
viewModel.triggerStartTorAndVpn()
}

private fun selectRadioButtonFromPreference() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,15 @@ class ConnectFragment : Fragment(),
private val startTorResultLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == AppCompatActivity.RESULT_OK) {
startTorAndVpn()
viewModel.triggerStartTorAndVpn()
}
}

private val restartTorResultLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == AppCompatActivity.RESULT_OK) {
requireContext().sendIntentToService(OrbotConstants.ACTION_RESTART_VPN) // is this enough todo?
refreshMenuList(requireContext())
viewModel.triggerRefreshMenuList()
}
}

Expand All @@ -80,7 +80,6 @@ class ConnectFragment : Fragment(),
binding.progressBar.progress = it
}
}

is ConnectUiState.On -> doLayoutOn(requireContext())
is ConnectUiState.Stopping -> {}
}
Expand All @@ -93,6 +92,8 @@ class ConnectFragment : Fragment(),
when (event) {
is ConnectEvent.StartTorAndVpn -> startTorAndVpn()
is ConnectEvent.RefreshMenuList -> refreshMenuList(requireContext())
is ConnectEvent.StopTorAndVpn -> stopTorAndVpn()
is ConnectEvent.SendNewnymSignal -> sendNewnymSignal()
}
}
}
Expand All @@ -119,7 +120,6 @@ class ConnectFragment : Fragment(),

private fun stopTorAndVpn() {
requireContext().sendIntentToService(OrbotConstants.ACTION_STOP)
doLayoutOff()
}

private fun stopAnimations() {
Expand Down Expand Up @@ -178,8 +178,13 @@ class ConnectFragment : Fragment(),
"ExitNodeBottomSheet"
)
},
OrbotMenuAction(R.string.btn_refresh, R.drawable.ic_refresh) { sendNewnymSignal() },
OrbotMenuAction(R.string.btn_tor_off, R.drawable.ic_power) { stopTorAndVpn() })
OrbotMenuAction(R.string.btn_refresh, R.drawable.ic_refresh) {
viewModel.triggerSendNewnymSignal()
},
OrbotMenuAction(R.string.btn_tor_off, R.drawable.ic_power) {
viewModel.triggerStopTorAndVpn()
}
)
if (!Prefs.isPowerUserMode) listItems.add(
0,
OrbotMenuAction(R.string.btn_choose_apps, R.drawable.ic_choose_apps) {
Expand Down Expand Up @@ -223,7 +228,7 @@ class ConnectFragment : Fragment(),
binding.swSmartConnect.visibility = View.GONE
binding.tvConfigure.visibility = View.GONE

refreshMenuList(context)
viewModel.triggerRefreshMenuList()

binding.ivStatus.setOnClickListener {}
}
Expand All @@ -241,7 +246,7 @@ class ConnectFragment : Fragment(),
binding.swSmartConnect.isChecked = Prefs.smartConnect
binding.swSmartConnect.setOnCheckedChangeListener { _, value ->
Prefs.smartConnect = value
doLayoutOff()
viewModel.updateState(requireContext(), lastStatus)
}

binding.tvConfigure.visibility = View.VISIBLE
Expand Down Expand Up @@ -323,11 +328,13 @@ class ConnectFragment : Fragment(),
backgroundTintList = ColorStateList.valueOf(
ContextCompat.getColor(requireContext(), R.color.orbot_btn_enabled_purple)
)
setOnClickListener { startTorAndVpn() }
setOnClickListener {
viewModel.triggerStartTorAndVpn()
}
}

binding.ivStatus.setOnClickListener {
startTorAndVpn()
viewModel.triggerStartTorAndVpn()
}
}

Expand Down Expand Up @@ -361,7 +368,7 @@ class ConnectFragment : Fragment(),
)
)
setOnClickListener {
stopTorAndVpn()
viewModel.triggerStopTorAndVpn()
}
}

Expand All @@ -385,6 +392,6 @@ class ConnectFragment : Fragment(),
.setAction(OrbotConstants.CMD_SET_EXIT).putExtra("exit", countryCode)
)

refreshMenuList(requireContext())
viewModel.triggerRefreshMenuList()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,23 @@ class ConnectViewModel : ViewModel() {
_eventChannel.send(ConnectEvent.RefreshMenuList)
}
}

fun triggerStopTorAndVpn() {
viewModelScope.launch {
_eventChannel.send(ConnectEvent.StopTorAndVpn)
}
}

fun triggerSendNewnymSignal() {
viewModelScope.launch {
_eventChannel.send(ConnectEvent.SendNewnymSignal)
}
}
}

sealed class ConnectEvent {
object StartTorAndVpn : ConnectEvent()
object RefreshMenuList : ConnectEvent()
object StopTorAndVpn : ConnectEvent()
object SendNewnymSignal : ConnectEvent()
}