11package org .schabi .newpipe .util .services ;
22
33import android .content .Context ;
4+ import android .util .Log ;
45
56import androidx .annotation .StringRes ;
67import androidx .preference .PreferenceManager ;
1112import com .grack .nanojson .JsonStringWriter ;
1213import com .grack .nanojson .JsonWriter ;
1314
15+ import org .schabi .newpipe .MainActivity ;
1416import org .schabi .newpipe .extractor .InstanceBasedStreamingService ;
1517import org .schabi .newpipe .extractor .instance .Instance ;
1618
1921import java .util .stream .Collectors ;
2022
2123public abstract class AbstractInstanceManager <I extends Instance > implements InstanceManager <I > {
24+ private static final String TAG = "AbsInstanceManager" ;
25+
2226 protected abstract InstanceBasedStreamingService <I > getRelatedStreamingService ();
2327
2428 protected abstract I createInstanceFromPersistence (JsonObject jsonObject );
@@ -28,9 +32,8 @@ public abstract class AbstractInstanceManager<I extends Instance> implements Ins
2832 @ StringRes
2933 protected abstract int getListPersistenceKey ();
3034
31-
3235 @ Override
33- public List < I > saveInstanceList (final List <I > instances , final Context context ) {
36+ public void saveInstanceList (final List <I > instances , final Context context ) {
3437 final JsonStringWriter jsonWriter = JsonWriter .string ().object ().array ("instances" );
3538 for (final I instance : instances ) {
3639 jsonWriter .object ();
@@ -42,15 +45,14 @@ public List<I> saveInstanceList(final List<I> instances, final Context context)
4245 .edit ()
4346 .putString (context .getString (getListPersistenceKey ()), jsonToSave )
4447 .apply ();
45- return null ;
4648 }
4749
4850 @ Override
4951 public List <I > getInstanceList (final Context context ) {
5052 final String savedInstanceListKey = context .getString (getListPersistenceKey ());
5153 final String savedJson = PreferenceManager .getDefaultSharedPreferences (context )
5254 .getString (savedInstanceListKey , null );
53- if (null == savedJson ) {
55+ if (savedJson == null ) {
5456 return getDefaultInstanceList ();
5557 }
5658
@@ -90,6 +92,33 @@ public I saveCurrentInstance(final I instance, final Context context) {
9092 return instance ;
9193 }
9294
95+ @ Override
96+ public void reloadCurrentInstanceFromPersistence (final Context context ) {
97+ final String json = PreferenceManager .getDefaultSharedPreferences (context )
98+ .getString (context .getString (getSelectedInstancePersistenceKey ()), null );
99+ if (json == null ) {
100+ return ;
101+ }
102+
103+ final JsonObject jsonObject ;
104+ try {
105+ jsonObject = JsonParser .object ().from (json );
106+ } catch (final JsonParserException e ) {
107+ if (MainActivity .DEBUG ) {
108+ Log .w (TAG , "Failed to load instance from settings" , e );
109+ }
110+ return ;
111+ }
112+
113+ try {
114+ getRelatedStreamingService ().setInstance (createInstanceFromPersistence (jsonObject ));
115+ } catch (final Exception e ) {
116+ if (MainActivity .DEBUG ) {
117+ Log .w (TAG , "Failed to load instance from settings" , e );
118+ }
119+ }
120+ }
121+
93122 @ Override
94123 public I getCurrentInstance () {
95124 try {
0 commit comments