From 1179bc956372541d3a5d8bc46dea98da1b671104 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 19 May 2021 12:34:13 -0400 Subject: [PATCH] Fix crash caused by value class incompatibility --- .../be/mygod/vpnhotspot/client/ClientsFragment.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt index da335ede..e918ab73 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt @@ -46,12 +46,13 @@ import kotlinx.parcelize.Parcelize import java.text.NumberFormat class ClientsFragment : Fragment() { + // FIXME: value class does not work with Parcelize @Parcelize - data class NicknameArg(val mac: MacAddressCompat, val nickname: CharSequence) : Parcelable + data class NicknameArg(val mac: Long, val nickname: CharSequence) : Parcelable class NicknameDialogFragment : AlertDialogFragment() { override fun AlertDialog.Builder.prepare(listener: DialogInterface.OnClickListener) { setView(R.layout.dialog_nickname) - setTitle(getString(R.string.clients_nickname_title, arg.mac.toString())) + setTitle(getString(R.string.clients_nickname_title, MacAddressCompat(arg.mac))) setPositiveButton(android.R.string.ok, listener) setNegativeButton(android.R.string.cancel, null) setNeutralButton(emojize(getText(R.string.clients_nickname_set_to_vendor)), listener) @@ -63,15 +64,16 @@ class ClientsFragment : Fragment() { } override fun onClick(dialog: DialogInterface?, which: Int) { + val mac = MacAddressCompat(arg.mac) when (which) { DialogInterface.BUTTON_POSITIVE -> { val newNickname = this.dialog!!.findViewById(android.R.id.edit).text - MacLookup.abort(arg.mac) + MacLookup.abort(mac) GlobalScope.launch(Dispatchers.Unconfined) { - AppDatabase.instance.clientRecordDao.upsert(arg.mac) { nickname = newNickname } + AppDatabase.instance.clientRecordDao.upsert(mac) { nickname = newNickname } } } - DialogInterface.BUTTON_NEUTRAL -> MacLookup.perform(arg.mac, true) + DialogInterface.BUTTON_NEUTRAL -> MacLookup.perform(mac, true) } } } @@ -132,7 +134,7 @@ class ClientsFragment : Fragment() { R.id.nickname -> { val client = binding.client ?: return false NicknameDialogFragment().apply { - arg(NicknameArg(client.mac, client.nickname)) + arg(NicknameArg(client.mac.addr, client.nickname)) }.showAllowingStateLoss(parentFragmentManager) true }