diff options
author | Harsh Shandilya <me@msfjarvis.dev> | 2020-09-17 17:52:12 +0530 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-09-17 14:51:50 +0200 |
commit | e99ccf901312a0c4f995b2f286feb0fd87ad9c88 (patch) | |
tree | 934c09f74744d4072514418d917af454fdffa3fb /ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt | |
parent | activityx: use contracts more and refine (diff) | |
download | wireguard-android-e99ccf901312a0c4f995b2f286feb0fd87ad9c88.tar.xz wireguard-android-e99ccf901312a0c4f995b2f286feb0fd87ad9c88.zip |
ui: refactor AppListDialogFragment's selection communication
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt')
-rw-r--r-- | ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt b/ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt index 88701ec3..7a51a757 100644 --- a/ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt +++ b/ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt @@ -10,9 +10,10 @@ import android.os.Bundle import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AlertDialog +import androidx.core.os.bundleOf import androidx.databinding.Observable import androidx.fragment.app.DialogFragment -import androidx.fragment.app.Fragment +import androidx.fragment.app.setFragmentResult import androidx.lifecycle.lifecycleScope import com.google.android.material.tabs.TabLayout import com.wireguard.android.BR @@ -21,7 +22,6 @@ import com.wireguard.android.databinding.AppListDialogFragmentBinding import com.wireguard.android.databinding.ObservableKeyedArrayList import com.wireguard.android.model.ApplicationData import com.wireguard.android.util.ErrorMessages -import com.wireguard.android.util.requireTargetFragment import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -73,7 +73,6 @@ class AppListDialogFragment : DialogFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - require(requireTargetFragment() is AppSelectionListener) { "${requireTargetFragment()} must implement AppSelectionListener" } currentlySelectedApps = (arguments?.getStringArrayList(KEY_SELECTED_APPS) ?: emptyList()) initiallyExcluded = arguments?.getBoolean(KEY_IS_EXCLUDED) ?: true } @@ -130,23 +129,22 @@ class AppListDialogFragment : DialogFragment() { selectedApps.add(data.packageName) } } - (requireTargetFragment() as AppSelectionListener).onSelectedAppsSelected(selectedApps, tabs?.selectedTabPosition == 0) + setFragmentResult(REQUEST_SELECTION, bundleOf( + KEY_SELECTED_APPS to selectedApps.toTypedArray(), + KEY_IS_EXCLUDED to (tabs?.selectedTabPosition == 0) + )) dismiss() } - interface AppSelectionListener { - fun onSelectedAppsSelected(selectedApps: List<String>, isExcluded: Boolean) - } - companion object { - private const val KEY_SELECTED_APPS = "selected_apps" - private const val KEY_IS_EXCLUDED = "is_excluded" - fun <T> newInstance(selectedApps: ArrayList<String?>?, isExcluded: Boolean, target: T): AppListDialogFragment where T : Fragment?, T : AppSelectionListener? { + const val KEY_SELECTED_APPS = "selected_apps" + const val KEY_IS_EXCLUDED = "is_excluded" + const val REQUEST_SELECTION = "request_selection" + fun newInstance(selectedApps: ArrayList<String?>?, isExcluded: Boolean): AppListDialogFragment { val extras = Bundle() extras.putStringArrayList(KEY_SELECTED_APPS, selectedApps) extras.putBoolean(KEY_IS_EXCLUDED, isExcluded) val fragment = AppListDialogFragment() - fragment.setTargetFragment(target, 0) fragment.arguments = extras return fragment } |