@@ -15,6 +15,8 @@ import android.view.MenuInflater
1515import android.view.View
1616import android.view.ViewGroup
1717import android.widget.Toast
18+ import androidx.activity.result.ActivityResult
19+ import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
1820import androidx.appcompat.app.AlertDialog
1921import androidx.lifecycle.ViewModelProvider
2022import androidx.localbroadcastmanager.content.LocalBroadcastManager
@@ -82,6 +84,11 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
8284 private lateinit var feedGroupsSortMenuItem: HeaderWithMenuItem
8385 private val subscriptionsSection = Section ()
8486
87+ private val requestExportLauncher =
88+ registerForActivityResult(StartActivityForResult (), this ::requestExportResult)
89+ private val requestImportLauncher =
90+ registerForActivityResult(StartActivityForResult (), this ::requestImportResult)
91+
8592 @State
8693 @JvmField
8794 var itemsListState: Parcelable ? = null
@@ -184,39 +191,39 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
184191 }
185192
186193 private fun onImportPreviousSelected () {
187- startActivityForResult (StoredFileHelper .getPicker(activity), REQUEST_IMPORT_CODE )
194+ requestImportLauncher.launch (StoredFileHelper .getPicker(activity))
188195 }
189196
190197 private fun onExportSelected () {
191198 val date = SimpleDateFormat (" yyyyMMddHHmm" , Locale .ENGLISH ).format(Date ())
192199 val exportName = " newpipe_subscriptions_$date .json"
193200
194- startActivityForResult(
195- StoredFileHelper .getNewPicker(activity, exportName, " application/json" , null ),
196- REQUEST_EXPORT_CODE
201+ requestExportLauncher.launch(
202+ StoredFileHelper .getNewPicker(activity, exportName, " application/json" , null )
197203 )
198204 }
199205
200206 private fun openReorderDialog () {
201207 FeedGroupReorderDialog ().show(parentFragmentManager, null )
202208 }
203209
204- override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
205- super .onActivityResult(requestCode, resultCode, data)
206- if (data != null && data.data != null && resultCode == Activity .RESULT_OK ) {
207- if (requestCode == REQUEST_EXPORT_CODE ) {
208- activity.startService(
209- Intent (activity, SubscriptionsExportService ::class .java)
210- .putExtra(SubscriptionsExportService .KEY_FILE_PATH , data.data)
211- )
212- } else if (requestCode == REQUEST_IMPORT_CODE ) {
213- ImportConfirmationDialog .show(
214- this ,
215- Intent (activity, SubscriptionsImportService ::class .java)
216- .putExtra(KEY_MODE , PREVIOUS_EXPORT_MODE )
217- .putExtra(KEY_VALUE , data.data)
218- )
219- }
210+ fun requestExportResult (result : ActivityResult ) {
211+ if (result.data != null && result.resultCode == Activity .RESULT_OK ) {
212+ activity.startService(
213+ Intent (activity, SubscriptionsExportService ::class .java)
214+ .putExtra(SubscriptionsExportService .KEY_FILE_PATH , result.data?.data)
215+ )
216+ }
217+ }
218+
219+ fun requestImportResult (result : ActivityResult ) {
220+ if (result.data != null && result.resultCode == Activity .RESULT_OK ) {
221+ ImportConfirmationDialog .show(
222+ this ,
223+ Intent (activity, SubscriptionsImportService ::class .java)
224+ .putExtra(KEY_MODE , PREVIOUS_EXPORT_MODE )
225+ .putExtra(KEY_VALUE , result.data?.data)
226+ )
220227 }
221228 }
222229
@@ -436,9 +443,4 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
436443 val minWidth = resources.getDimensionPixelSize(R .dimen.channel_item_grid_min_width)
437444 return max(1 , floor(resources.displayMetrics.widthPixels / minWidth.toDouble()).toInt())
438445 }
439-
440- companion object {
441- private const val REQUEST_EXPORT_CODE = 666
442- private const val REQUEST_IMPORT_CODE = 667
443- }
444446}
0 commit comments