33import static org .schabi .newpipe .util .Localization .assureCorrectAppLanguage ;
44
55import android .app .Dialog ;
6- import android .content .Intent ;
76import android .os .Bundle ;
87
98import androidx .annotation .NonNull ;
109import androidx .annotation .Nullable ;
1110import androidx .appcompat .app .AlertDialog ;
11+ import androidx .core .os .BundleCompat ;
1212import androidx .fragment .app .DialogFragment ;
1313import androidx .fragment .app .Fragment ;
14+ import androidx .work .Constraints ;
15+ import androidx .work .ExistingWorkPolicy ;
16+ import androidx .work .NetworkType ;
17+ import androidx .work .OneTimeWorkRequest ;
18+ import androidx .work .OutOfQuotaPolicy ;
19+ import androidx .work .WorkManager ;
1420
15- import com .evernote .android .state .State ;
1621import com .livefront .bridge .Bridge ;
1722
1823import org .schabi .newpipe .R ;
24+ import org .schabi .newpipe .local .subscription .workers .SubscriptionImportInput ;
25+ import org .schabi .newpipe .local .subscription .workers .SubscriptionImportWorker ;
1926
2027public class ImportConfirmationDialog extends DialogFragment {
21- @ State
22- protected Intent resultServiceIntent ;
28+ private static final String INPUT = "input" ;
2329
24- public static void show (@ NonNull final Fragment fragment ,
25- @ NonNull final Intent resultServiceIntent ) {
26- final ImportConfirmationDialog confirmationDialog = new ImportConfirmationDialog ();
27- confirmationDialog .setResultServiceIntent (resultServiceIntent );
30+ public static void show (@ NonNull final Fragment fragment , final SubscriptionImportInput input ) {
31+ final var confirmationDialog = new ImportConfirmationDialog ();
32+ final var arguments = new Bundle ();
33+ arguments .putParcelable (INPUT , input );
34+ confirmationDialog .setArguments (arguments );
2835 confirmationDialog .show (fragment .getParentFragmentManager (), null );
2936 }
3037
31- public void setResultServiceIntent (final Intent resultServiceIntent ) {
32- this .resultServiceIntent = resultServiceIntent ;
33- }
34-
3538 @ NonNull
3639 @ Override
3740 public Dialog onCreateDialog (@ Nullable final Bundle savedInstanceState ) {
38- assureCorrectAppLanguage (getContext ());
39- return new AlertDialog .Builder (requireContext ())
41+ final var context = requireContext ();
42+ assureCorrectAppLanguage (context );
43+ return new AlertDialog .Builder (context )
4044 .setMessage (R .string .import_network_expensive_warning )
4145 .setCancelable (true )
4246 .setNegativeButton (R .string .cancel , null )
4347 .setPositiveButton (R .string .ok , (dialogInterface , i ) -> {
44- if (resultServiceIntent != null && getContext () != null ) {
45- getContext ().startService (resultServiceIntent );
46- }
48+ final var constraints = new Constraints .Builder ()
49+ .setRequiredNetworkType (NetworkType .CONNECTED )
50+ .build ();
51+ final var input = BundleCompat .getParcelable (requireArguments (), INPUT ,
52+ SubscriptionImportInput .class );
53+
54+ final var req = new OneTimeWorkRequest .Builder (SubscriptionImportWorker .class )
55+ .setInputData (input .toData ())
56+ .setExpedited (OutOfQuotaPolicy .RUN_AS_NON_EXPEDITED_WORK_REQUEST )
57+ .setConstraints (constraints )
58+ .build ();
59+
60+ WorkManager .getInstance (context )
61+ .enqueueUniqueWork (SubscriptionImportWorker .WORK_NAME ,
62+ ExistingWorkPolicy .APPEND_OR_REPLACE , req );
63+
4764 dismiss ();
4865 })
4966 .create ();
@@ -53,10 +70,6 @@ public Dialog onCreateDialog(@Nullable final Bundle savedInstanceState) {
5370 public void onCreate (@ Nullable final Bundle savedInstanceState ) {
5471 super .onCreate (savedInstanceState );
5572
56- if (resultServiceIntent == null ) {
57- throw new IllegalStateException ("Result intent is null" );
58- }
59-
6073 Bridge .restoreInstanceState (this , savedInstanceState );
6174 }
6275
0 commit comments