diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-30 12:14:55 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-30 15:57:28 +0000 |
| commit | 153cd0e7893676afb04bd9b9dbf26933d812609f (patch) | |
| tree | 433510a8ea2cf03dd8081c9763f4a3ae11e915f2 /android/src | |
| parent | 327dcd712db22ef9551d3d22b6a2e0487fdd77fb (diff) | |
| download | mullvadvpn-153cd0e7893676afb04bd9b9dbf26933d812609f.tar.xz mullvadvpn-153cd0e7893676afb04bd9b9dbf26933d812609f.zip | |
Hide items in settings screen when logged out
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/SettingsFragment.kt | 44 | ||||
| -rw-r--r-- | android/src/main/res/layout/settings.xml | 2 |
2 files changed, 40 insertions, 6 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/SettingsFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/SettingsFragment.kt index a9ebe5d40f..6a02efbe3c 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/SettingsFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/SettingsFragment.kt @@ -17,23 +17,30 @@ import android.widget.Button import android.widget.ImageButton import android.widget.TextView +import net.mullvad.mullvadvpn.dataproxy.AccountCache import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache class SettingsFragment : Fragment() { private lateinit var parentActivity: MainActivity + + private lateinit var accountCache: AccountCache private lateinit var versionInfoCache: AppVersionInfoCache - private lateinit var remainingTimeLabel: RemainingTimeLabel + private lateinit var accountMenu: View private lateinit var appVersionWarning: View private lateinit var appVersionLabel: TextView private lateinit var appVersionFooter: View + private lateinit var remainingTimeLabel: RemainingTimeLabel + private lateinit var wireguardKeysMenu: View + private var updateLoggedInStatusJob: Job? = null private var updateVersionInfoJob: Job? = null override fun onAttach(context: Context) { super.onAttach(context) parentActivity = context as MainActivity + accountCache = parentActivity.accountCache versionInfoCache = parentActivity.appVersionInfoCache } @@ -52,12 +59,17 @@ class SettingsFragment : Fragment() { parentActivity.quit() } - view.findViewById<View>(R.id.account).setOnClickListener { - openSubFragment(AccountFragment()) + accountMenu = view.findViewById<View>(R.id.account).apply { + setOnClickListener { + openSubFragment(AccountFragment()) + } } - view.findViewById<View>(R.id.wireguard_keys).setOnClickListener { - openSubFragment(WireguardKeyFragment()) + wireguardKeysMenu = view.findViewById<View>(R.id.wireguard_keys).apply { + setOnClickListener { + openSubFragment(WireguardKeyFragment()) + } } + view.findViewById<View>(R.id.app_version).setOnClickListener { openLink(R.string.download_url) } @@ -65,17 +77,24 @@ class SettingsFragment : Fragment() { openSubFragment(ProblemReportFragment()) } - remainingTimeLabel = RemainingTimeLabel(parentActivity, view) appVersionWarning = view.findViewById(R.id.app_version_warning) appVersionLabel = view.findViewById<TextView>(R.id.app_version_label) appVersionFooter = view.findViewById(R.id.app_version_footer) + remainingTimeLabel = RemainingTimeLabel(parentActivity, view) return view } override fun onResume() { super.onResume() + remainingTimeLabel.onResume() + + accountCache.onAccountDataChange = { account, _expiry -> + updateLoggedInStatusJob?.cancel() + updateLoggedInStatusJob = updateLoggedInStatus(account != null) + } + versionInfoCache.onUpdate = { updateVersionInfoJob?.cancel() updateVersionInfoJob = updateVersionInfo() @@ -84,11 +103,13 @@ class SettingsFragment : Fragment() { override fun onPause() { versionInfoCache.onUpdate = null + accountCache.onAccountDataChange = null remainingTimeLabel.onPause() super.onPause() } override fun onDestroyView() { + updateLoggedInStatusJob?.cancel() updateVersionInfoJob?.cancel() super.onDestroyView() } @@ -113,6 +134,17 @@ class SettingsFragment : Fragment() { startActivity(intent) } + private fun updateLoggedInStatus(loggedIn: Boolean) = GlobalScope.launch(Dispatchers.Main) { + val visibility = if (loggedIn) { + View.VISIBLE + } else { + View.GONE + } + + accountMenu.visibility = visibility + wireguardKeysMenu.visibility = visibility + } + private fun updateVersionInfo() = GlobalScope.launch(Dispatchers.Main) { appVersionLabel.setText(versionInfoCache.version ?: "") diff --git a/android/src/main/res/layout/settings.xml b/android/src/main/res/layout/settings.xml index 7b4161406a..15606cf756 100644 --- a/android/src/main/res/layout/settings.xml +++ b/android/src/main/res/layout/settings.xml @@ -32,6 +32,7 @@ android:background="@drawable/cell_button_background" android:clickable="true" android:gravity="center" + android:visibility="gone" > <TextView android:layout_width="wrap_content" @@ -72,6 +73,7 @@ android:background="@drawable/cell_button_background" android:clickable="true" android:gravity="center" + android:visibility="gone" > <TextView android:layout_width="wrap_content" |
