summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2023-08-04 10:23:35 +0200
committerAlbin <albin@mullvad.net>2023-08-04 11:24:45 +0200
commitbfe2a3d0d0b6ed4bbe19f580735d0cc6b3bfafd6 (patch)
tree4bbb505f1ee58ad7ae9a60dd79aeeff6430a8d1f /android
parentc27e788a81832e0add9fc4ee2362df97ded96323 (diff)
downloadmullvadvpn-bfe2a3d0d0b6ed4bbe19f580735d0cc6b3bfafd6.tar.xz
mullvadvpn-bfe2a3d0d0b6ed4bbe19f580735d0cc6b3bfafd6.zip
Apply updated ktfmt formatting
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ListItemData.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ViewIntent.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SelectLocationUiState.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SplitTunnelingUiState.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/GetItemResult.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/BlockingController.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/BaseFragment.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/PlainListItemView.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/TwoActionListItemView.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/WidgetViewController.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionAccountDataSource.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/ListenableScrollView.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/WidgetState.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModel.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt8
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt2
-rw-r--r--android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/Intermittent.kt1
-rw-r--r--android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Message.kt1
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt2
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt3
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt1
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt1
-rw-r--r--android/lib/talpid/src/main/kotlin/net/mullvad/talpid/ConnectivityListener.kt1
-rw-r--r--android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt1
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt1
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt2
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt21
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt2
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt3
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt1
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt4
39 files changed, 91 insertions, 0 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ListItemData.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ListItemData.kt
index c04b4637bb..613fe49e8f 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ListItemData.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ListItemData.kt
@@ -57,6 +57,7 @@ private constructor(
const val ACTION = 3
const val DOUBLE_ACTION = 4
const val APPLICATION = 5
+
fun build(identifier: String, setUp: Builder.() -> Unit): ListItemData =
Builder(identifier).also(setUp).build()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ViewIntent.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ViewIntent.kt
index 5db52ca295..4469bd00ef 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ViewIntent.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/applist/ViewIntent.kt
@@ -3,6 +3,8 @@ package net.mullvad.mullvadvpn.applist
sealed class ViewIntent {
// In future we will have search intent
data class ChangeApplicationGroup(val item: ListItemData) : ViewIntent()
+
object ViewIsReady : ViewIntent()
+
data class ShowSystemApps(internal val show: Boolean) : ViewIntent()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SelectLocationUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SelectLocationUiState.kt
index 61b3abffa2..9d230a98fe 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SelectLocationUiState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SelectLocationUiState.kt
@@ -5,6 +5,7 @@ import net.mullvad.mullvadvpn.relaylist.RelayItem
sealed interface SelectLocationUiState {
object Loading : SelectLocationUiState
+
data class ShowData(val countries: List<RelayCountry>, val selectedRelay: RelayItem?) :
SelectLocationUiState
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SplitTunnelingUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SplitTunnelingUiState.kt
index d63afac400..1ebb8fb379 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SplitTunnelingUiState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SplitTunnelingUiState.kt
@@ -4,6 +4,7 @@ import net.mullvad.mullvadvpn.applist.AppData
sealed interface SplitTunnelingUiState {
object Loading : SplitTunnelingUiState
+
data class ShowAppList(
val excludedApps: List<AppData> = emptyList(),
val includedApps: List<AppData> = emptyList(),
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
index fb09846b8b..7104deb686 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
@@ -16,8 +16,11 @@ const val PROBLEM_REPORT_FILE = "problem_report.txt"
class MullvadProblemReport {
private sealed class Command {
class Collect() : Command()
+
class Load(val logs: CompletableDeferred<String>) : Command()
+
class Send(val result: CompletableDeferred<Boolean>) : Command()
+
class Delete() : Command()
}
@@ -128,6 +131,7 @@ class MullvadProblemReport {
}
private external fun collectReport(logDirectory: String, reportPath: String): Boolean
+
private external fun sendProblemReport(
userEmail: String,
userMessage: String,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/GetItemResult.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/GetItemResult.kt
index d443d30cfe..edbaaf39d1 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/GetItemResult.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/GetItemResult.kt
@@ -2,5 +2,6 @@ package net.mullvad.mullvadvpn.relaylist
sealed class GetItemResult {
data class Item(val item: RelayItem) : GetItemResult()
+
data class Count(val count: Int) : GetItemResult()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/BlockingController.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/BlockingController.kt
index 9589c9474b..4dd53fa937 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/BlockingController.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/BlockingController.kt
@@ -34,5 +34,6 @@ class BlockingController(val blockableView: BlockableView) {
interface BlockableView {
fun setEnabled(enabled: Boolean)
+
fun onClick(): Job
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/BaseFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/BaseFragment.kt
index 905cc889a9..bfbe4bdd25 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/BaseFragment.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/BaseFragment.kt
@@ -12,6 +12,7 @@ import net.mullvad.mullvadvpn.util.transitionFinished
abstract class BaseFragment : Fragment {
constructor() : super()
+
constructor(@LayoutRes contentLayoutId: Int) : super(contentLayoutId)
protected var transitionFinishedFlow: Flow<Unit> = emptyFlow()
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/PlainListItemView.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/PlainListItemView.kt
index f472c444df..b0553619f9 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/PlainListItemView.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/PlainListItemView.kt
@@ -9,6 +9,7 @@ class PlainListItemView(context: Context) :
ListItemView(ContextThemeWrapper(context, R.style.ListItem_PlainText)) {
override val layoutRes: Int
get() = R.layout.list_item_plain_text
+
override val heightRes: Int? = null
private val plainText: TextView = findViewById(R.id.plain_text)
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/TwoActionListItemView.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/TwoActionListItemView.kt
index 8f349c0548..ffe6d0ae89 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/TwoActionListItemView.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/TwoActionListItemView.kt
@@ -9,6 +9,7 @@ class TwoActionListItemView(context: Context) :
ActionListItemView(ContextThemeWrapper(context, R.style.ListItem_Action_Double)) {
override val layoutRes: Int
get() = R.layout.list_item_two_action
+
private val container: ViewGroup = findViewById(R.id.container_without_widget)
init {
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/WidgetViewController.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/WidgetViewController.kt
index 07463e1920..62325b4e1d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/WidgetViewController.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/listitemview/WidgetViewController.kt
@@ -21,7 +21,9 @@ sealed class WidgetViewController<T : WidgetState>(val parent: ViewGroup) {
WidgetViewController<WidgetState.ImageState>(parent) {
override val layoutRes: Int
get() = R.layout.list_item_widget_image
+
private val imageView: ImageView = parent.findViewById(R.id.widgetImage)
+
override fun updateState(state: WidgetState.ImageState) =
imageView.setImageResource(state.imageRes)
}
@@ -30,7 +32,9 @@ sealed class WidgetViewController<T : WidgetState>(val parent: ViewGroup) {
WidgetViewController<WidgetState.SwitchState>(parent) {
override val layoutRes: Int
get() = R.layout.list_item_widget_switch
+
private val switch: SwitchCompat = parent.findViewById(R.id.widgetSwitch)
+
override fun updateState(state: WidgetState.SwitchState) {
switch.isChecked = state.isChecked
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt
index 9ee7a02698..ddba8656eb 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/notification/InAppNotification.kt
@@ -27,6 +27,7 @@ abstract class InAppNotification {
protected set
open fun onResume() {}
+
open fun onPause() {}
open fun onDestroy() {
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt
index 7470fc0712..d51bad461d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt
@@ -24,6 +24,7 @@ class ConnectionProxy(private val connection: Messenger, eventDispatcher: EventD
var state by onStateChange.notifiable()
private set
+
var uiState by onUiStateChange.notifiable()
private set
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionAccountDataSource.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionAccountDataSource.kt
index b8e6bc2ff9..d383035102 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionAccountDataSource.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionAccountDataSource.kt
@@ -45,9 +45,14 @@ class ServiceConnectionAccountDataSource(
}
fun createAccount() = connection.send(Request.CreateAccount.message)
+
fun login(accountToken: String) = connection.send(Request.Login(accountToken).message)
+
fun logout() = connection.send(Request.Logout.message)
+
fun fetchAccountExpiry() = connection.send(Request.FetchAccountExpiry.message)
+
fun fetchAccountHistory() = connection.send(Request.FetchAccountHistory.message)
+
fun clearAccountHistory() = connection.send(Request.ClearAccountHistory.message)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/ListenableScrollView.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/ListenableScrollView.kt
index 683341686f..0b65325f42 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/ListenableScrollView.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/ListenableScrollView.kt
@@ -8,6 +8,7 @@ import net.mullvad.mullvadvpn.util.ListenableScrollableView
class ListenableScrollView : ScrollView, ListenableScrollableView {
override val horizontalScrollOffset
get() = scrollX
+
override val verticalScrollOffset
get() = scrollY
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt
index 48cd07f5c2..42f3f16122 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NotificationBanner.kt
@@ -25,6 +25,7 @@ class NotificationBanner : FrameLayout {
private val animationListener =
object : AnimatorListener {
override fun onAnimationCancel(animation: Animator) {}
+
override fun onAnimationRepeat(animation: Animator) {}
override fun onAnimationStart(animation: Animator) {
@@ -78,6 +79,7 @@ class NotificationBanner : FrameLayout {
}
constructor(context: Context) : super(context)
+
constructor(context: Context, attributes: AttributeSet) : super(context, attributes)
constructor(
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/WidgetState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/WidgetState.kt
index 484f0262c1..e92265b2df 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/WidgetState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/WidgetState.kt
@@ -4,5 +4,6 @@ import androidx.annotation.DrawableRes
sealed class WidgetState {
data class ImageState(@DrawableRes val imageRes: Int) : WidgetState()
+
data class SwitchState(val isChecked: Boolean) : WidgetState()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
index 6418652728..e4cdc95070 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
@@ -17,6 +17,7 @@ fun Animation.transitionFinished(): Flow<Unit> =
val transitionAnimationListener =
object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {}
+
override fun onAnimationEnd(animation: Animation?) {
safeOffer(Unit)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt
index 308298443a..a1b50c6efb 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt
@@ -5,5 +5,6 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder
sealed class HeaderOrHolder<H : ViewHolder>(itemView: View) : ViewHolder(itemView) {
class Header<H : ViewHolder>(headerView: View) : HeaderOrHolder<H>(headerView)
+
class Holder<H : ViewHolder>(val holder: H) : HeaderOrHolder<H>(holder.itemView)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt
index 79d7ae5428..30c1464a91 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt
@@ -55,6 +55,7 @@ class AccountViewModel(
)
}
}
+
fun onLogoutClick() {
accountRepository.logout()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModel.kt
index a8255f5675..bbfac3e024 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ChangelogViewModel.kt
@@ -39,5 +39,6 @@ class ChangelogViewModel(
sealed class ChangelogDialogUiState {
data class Show(val changes: List<String>) : ChangelogDialogUiState()
+
object Hide : ChangelogDialogUiState()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
index 37aa06a7c9..0798bc50af 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
@@ -130,12 +130,15 @@ class ConnectViewModel(private val serviceConnectionManager: ServiceConnectionMa
fun onDisconnectClick() {
serviceConnectionManager.connectionProxy()?.disconnect()
}
+
fun onReconnectClick() {
serviceConnectionManager.connectionProxy()?.reconnect()
}
+
fun onConnectClick() {
serviceConnectionManager.connectionProxy()?.connect()
}
+
fun onCancelClick() {
serviceConnectionManager.connectionProxy()?.disconnect()
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt
index 2f59bcb347..6fb00b1922 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt
@@ -27,15 +27,23 @@ class LoginViewModel(
sealed class LoginUiState {
object Default : LoginUiState()
+
object Loading : LoginUiState()
+
data class Success(val isOutOfTime: Boolean) : LoginUiState()
object CreatingAccount : LoginUiState()
+
object AccountCreated : LoginUiState()
+
object UnableToCreateAccountError : LoginUiState()
+
object InvalidAccountError : LoginUiState()
+
data class TooManyDevicesError(val accountToken: String) : LoginUiState()
+
object TooManyDevicesMissingListError : LoginUiState()
+
data class OtherError(val errorMessage: String) : LoginUiState()
fun isLoading(): Boolean {
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt
index ab749e02d9..fbcc60258a 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt
@@ -239,7 +239,9 @@ sealed interface StagedDns {
sealed class ValidationResult {
object Success : ValidationResult()
+
object InvalidAddress : ValidationResult()
+
object DuplicateAddress : ValidationResult()
}
diff --git a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/Intermittent.kt b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/Intermittent.kt
index 38b152b00a..448d96778f 100644
--- a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/Intermittent.kt
+++ b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/Intermittent.kt
@@ -39,6 +39,7 @@ class Intermittent<T> {
// resume execution. This allows performing any extra initialization before the value is made
// available for usage.
fun registerListener(id: Any, listener: (T?) -> Unit) = notifier.subscribe(id, listener)
+
fun unregisterListener(id: Any) = notifier.unsubscribe(id)
suspend fun await(): T {
diff --git a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Message.kt b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Message.kt
index dd5f9442e1..7cc293b373 100644
--- a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Message.kt
+++ b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Message.kt
@@ -6,6 +6,7 @@ import android.os.Parcelable
sealed class Message(private val messageId: Int) : Parcelable {
abstract class EventMessage : Message(1)
+
abstract class RequestMessage : Message(2)
protected abstract val messageKey: String
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt
index de1acb0e23..afe5982ed5 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceList.kt
@@ -2,6 +2,8 @@ package net.mullvad.mullvadvpn.model
sealed class DeviceList {
object Unavailable : DeviceList()
+
data class Available(val devices: List<Device>) : DeviceList()
+
object Error : DeviceList()
}
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt
index cbed622df6..2e94266e2a 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt
@@ -2,7 +2,10 @@ package net.mullvad.mullvadvpn.model
sealed class GetAccountDataResult {
class Ok(val accountData: AccountData) : GetAccountDataResult()
+
object InvalidAccount : GetAccountDataResult()
+
object RpcError : GetAccountDataResult()
+
object OtherError : GetAccountDataResult()
}
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt
index de7dd4e99b..0c9d331e3b 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/LocationConstraint.kt
@@ -6,5 +6,6 @@ import kotlinx.parcelize.Parcelize
sealed class LocationConstraint : Parcelable {
@Parcelize
data class Location(val location: GeographicLocationConstraint) : LocationConstraint()
+
@Parcelize data class CustomList(val listId: String) : LocationConstraint()
}
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt
index 85f5de2a32..a7d4c0b03d 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt
@@ -2,5 +2,6 @@ package net.mullvad.mullvadvpn.model
sealed class RelaySettingsUpdate {
object CustomTunnelEndpoint : RelaySettingsUpdate()
+
data class Normal(var constraints: RelayConstraintsUpdate) : RelaySettingsUpdate()
}
diff --git a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/ConnectivityListener.kt b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/ConnectivityListener.kt
index de56ebb878..cdc16567e1 100644
--- a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/ConnectivityListener.kt
+++ b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/ConnectivityListener.kt
@@ -65,5 +65,6 @@ class ConnectivityListener {
}
private external fun notifyConnectivityChange(isConnected: Boolean, senderAddress: Long)
+
private external fun destroySender(senderAddress: Long)
}
diff --git a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
index a94bfac428..caa8f11447 100644
--- a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -146,5 +146,6 @@ open class TalpidVpnService : VpnService() {
}
private external fun defaultTunConfig(): TunConfig
+
private external fun waitForTunnelUp(tunFd: Int, isIpv6Enabled: Boolean)
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt
index 4e121bc693..236cdeb84a 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt
@@ -16,6 +16,7 @@ import net.mullvad.mullvadvpn.lib.endpoint.ApiEndpointConfiguration
class DaemonInstance(private val vpnService: MullvadVpnService) {
sealed class Command {
data class Start(val apiEndpointConfiguration: ApiEndpointConfiguration) : Command()
+
object Stop : Command()
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
index 36d640c719..eacd2d4bc9 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
@@ -23,7 +23,9 @@ class ForegroundNotificationManager(
) {
private sealed class UpdaterMessage {
class UpdateNotification : UpdaterMessage()
+
class UpdateAction : UpdaterMessage()
+
class NewTunnelState(val newState: TunnelState) : UpdaterMessage()
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
index 089e13ef31..6fa03978f7 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
@@ -204,36 +204,52 @@ class MullvadDaemon(
private external fun deinitialize()
private external fun connect(daemonInterfaceAddress: Long)
+
private external fun createNewAccount(daemonInterfaceAddress: Long): String?
+
private external fun disconnect(daemonInterfaceAddress: Long)
+
private external fun getAccountData(
daemonInterfaceAddress: Long,
accountToken: String
): GetAccountDataResult
private external fun getAccountHistory(daemonInterfaceAddress: Long): String?
+
private external fun getWwwAuthToken(daemonInterfaceAddress: Long): String?
+
private external fun getCurrentLocation(daemonInterfaceAddress: Long): GeoIpLocation?
+
private external fun getCurrentVersion(daemonInterfaceAddress: Long): String?
+
private external fun getRelayLocations(daemonInterfaceAddress: Long): RelayList?
+
private external fun getSettings(daemonInterfaceAddress: Long): Settings?
+
private external fun getState(daemonInterfaceAddress: Long): TunnelState?
+
private external fun getVersionInfo(daemonInterfaceAddress: Long): AppVersionInfo?
+
private external fun reconnect(daemonInterfaceAddress: Long)
+
private external fun clearAccountHistory(daemonInterfaceAddress: Long)
+
private external fun loginAccount(
daemonInterfaceAddress: Long,
accountToken: String?
): LoginResult
private external fun logoutAccount(daemonInterfaceAddress: Long)
+
private external fun listDevices(
daemonInterfaceAddress: Long,
accountToken: String?
): List<Device>?
private external fun getDevice(daemonInterfaceAddress: Long): DeviceState
+
private external fun updateDevice(daemonInterfaceAddress: Long)
+
private external fun removeDevice(
daemonInterfaceAddress: Long,
accountToken: String?,
@@ -241,10 +257,15 @@ class MullvadDaemon(
): RemoveDeviceResult
private external fun setAllowLan(daemonInterfaceAddress: Long, allowLan: Boolean)
+
private external fun setAutoConnect(daemonInterfaceAddress: Long, alwaysOn: Boolean)
+
private external fun setDnsOptions(daemonInterfaceAddress: Long, dnsOptions: DnsOptions)
+
private external fun setWireguardMtu(daemonInterfaceAddress: Long, wireguardMtu: Int?)
+
private external fun shutdown(daemonInterfaceAddress: Long)
+
private external fun submitVoucher(
daemonInterfaceAddress: Long,
voucher: String
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
index ad8b96f9a5..d6ba237f97 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
@@ -20,7 +20,9 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
companion object {
private sealed class Command {
object CreateAccount : Command()
+
data class Login(val account: String) : Command()
+
object Logout : Command()
}
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt
index fe8f55a66d..7ecfe02d58 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/CustomDns.kt
@@ -16,9 +16,12 @@ import net.mullvad.mullvadvpn.model.DnsState
class CustomDns(private val endpoint: ServiceEndpoint) {
private sealed class Command {
@Deprecated("Use SetDnsOptions") class AddDnsServer(val server: InetAddress) : Command()
+
@Deprecated("Use SetDnsOptions") class RemoveDnsServer(val server: InetAddress) : Command()
+
@Deprecated("Use SetDnsOptions")
class ReplaceDnsServer(val oldServer: InetAddress, val newServer: InetAddress) : Command()
+
@Deprecated("Use SetDnsOptions") class SetEnabled(val enabled: Boolean) : Command()
class SetDnsOptions(val dnsOptions: DnsOptions) : Command()
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
index 1d6cb9f9a7..e9aa8d4328 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
@@ -30,6 +30,7 @@ class ServiceEndpoint(
companion object {
sealed class Command {
data class RegisterListener(val listener: Messenger) : Command()
+
data class UnregisterListener(val listenerId: Int) : Command()
}
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt
index 2863594cb9..874b78cab3 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt
@@ -15,9 +15,13 @@ import net.mullvad.talpid.util.EventNotifier
class SettingsListener(endpoint: ServiceEndpoint) {
private sealed class Command {
class SetAllowLan(val allow: Boolean) : Command()
+
class SetAutoConnect(val autoConnect: Boolean) : Command()
+
class SetWireGuardMtu(val mtu: Int?) : Command()
+
class SetObfuscationSettings(val settings: ObfuscationSettings?) : Command()
+
class SetQuantumResistant(val quantumResistant: QuantumResistantState) : Command()
}