11package org .schabi .newpipe .local .subscription ;
22
33import android .app .Dialog ;
4- import android .content .Intent ;
54import android .os .Bundle ;
65
76import androidx .annotation .NonNull ;
87import androidx .annotation .Nullable ;
98import androidx .appcompat .app .AlertDialog ;
9+ import androidx .core .os .BundleCompat ;
1010import androidx .fragment .app .DialogFragment ;
1111import androidx .fragment .app .Fragment ;
12+ import androidx .work .Constraints ;
13+ import androidx .work .ExistingWorkPolicy ;
14+ import androidx .work .NetworkType ;
15+ import androidx .work .OneTimeWorkRequest ;
16+ import androidx .work .OutOfQuotaPolicy ;
17+ import androidx .work .WorkManager ;
1218
1319import com .livefront .bridge .Bridge ;
1420
1521import org .schabi .newpipe .R ;
22+ import org .schabi .newpipe .local .subscription .workers .SubscriptionImportInput ;
23+ import org .schabi .newpipe .local .subscription .workers .SubscriptionImportWorker ;
1624
1725public class ImportConfirmationDialog extends DialogFragment {
18- protected Intent resultServiceIntent ;
19- private static final String EXTRA_RESULT_SERVICE_INTENT = "extra_result_service_intent" ;
20-
21- public static void show (@ NonNull final Fragment fragment ,
22- @ NonNull final Intent resultServiceIntent ) {
23- final ImportConfirmationDialog confirmationDialog = new ImportConfirmationDialog ();
24- final Bundle args = new Bundle ();
25- args .putParcelable (EXTRA_RESULT_SERVICE_INTENT , resultServiceIntent );
26- confirmationDialog .setArguments (args );
26+ private static final String INPUT = "input" ;
27+
28+ public static void show (@ NonNull final Fragment fragment , final SubscriptionImportInput input ) {
29+ final var confirmationDialog = new ImportConfirmationDialog ();
30+ final var arguments = new Bundle ();
31+ arguments .putParcelable (INPUT , input );
32+ confirmationDialog .setArguments (arguments );
2733 confirmationDialog .show (fragment .getParentFragmentManager (), null );
2834 }
2935
3036 @ NonNull
3137 @ Override
3238 public Dialog onCreateDialog (@ Nullable final Bundle savedInstanceState ) {
33- return new AlertDialog .Builder (requireContext ())
39+ final var context = requireContext ();
40+ return new AlertDialog .Builder (context )
3441 .setMessage (R .string .import_network_expensive_warning )
3542 .setCancelable (true )
3643 .setNegativeButton (R .string .cancel , null )
3744 .setPositiveButton (R .string .ok , (dialogInterface , i ) -> {
38- requireContext ().startService (resultServiceIntent );
45+ final var constraints = new Constraints .Builder ()
46+ .setRequiredNetworkType (NetworkType .CONNECTED )
47+ .build ();
48+ final var input = BundleCompat .getParcelable (requireArguments (), INPUT ,
49+ SubscriptionImportInput .class );
50+
51+ final var req = new OneTimeWorkRequest .Builder (SubscriptionImportWorker .class )
52+ .setInputData (input .toData ())
53+ .setExpedited (OutOfQuotaPolicy .RUN_AS_NON_EXPEDITED_WORK_REQUEST )
54+ .setConstraints (constraints )
55+ .build ();
56+
57+ WorkManager .getInstance (context )
58+ .enqueueUniqueWork (SubscriptionImportWorker .WORK_NAME ,
59+ ExistingWorkPolicy .APPEND_OR_REPLACE , req );
60+
3961 dismiss ();
4062 })
4163 .create ();
@@ -45,7 +67,7 @@ public Dialog onCreateDialog(@Nullable final Bundle savedInstanceState) {
4567 public void onCreate (@ Nullable final Bundle savedInstanceState ) {
4668 super .onCreate (savedInstanceState );
4769
48- resultServiceIntent = requireArguments (). getParcelable ( EXTRA_RESULT_SERVICE_INTENT );
70+ Bridge . restoreInstanceState ( this , savedInstanceState );
4971 }
5072
5173 @ Override
0 commit comments