2019-11-24 16:38:06 +01:00
|
|
|
package org.schabi.newpipe.util;
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.SharedPreferences;
|
2020-08-27 22:55:57 +02:00
|
|
|
import androidx.preference.PreferenceManager;
|
2019-11-24 16:38:06 +01:00
|
|
|
|
|
|
|
import com.grack.nanojson.JsonArray;
|
|
|
|
import com.grack.nanojson.JsonObject;
|
|
|
|
import com.grack.nanojson.JsonParser;
|
|
|
|
import com.grack.nanojson.JsonParserException;
|
|
|
|
import com.grack.nanojson.JsonStringWriter;
|
|
|
|
import com.grack.nanojson.JsonWriter;
|
|
|
|
|
|
|
|
import org.schabi.newpipe.R;
|
|
|
|
import org.schabi.newpipe.extractor.ServiceList;
|
|
|
|
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.List;
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public final class PeertubeHelper {
|
|
|
|
private PeertubeHelper() { }
|
2019-11-24 16:38:06 +01:00
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public static List<PeertubeInstance> getInstanceList(final Context context) {
|
2020-08-16 10:24:58 +02:00
|
|
|
final SharedPreferences sharedPreferences = PreferenceManager
|
2020-03-31 19:20:15 +02:00
|
|
|
.getDefaultSharedPreferences(context);
|
2020-08-16 10:24:58 +02:00
|
|
|
final String savedInstanceListKey = context.getString(R.string.peertube_instance_list_key);
|
2019-11-24 16:38:06 +01:00
|
|
|
final String savedJson = sharedPreferences.getString(savedInstanceListKey, null);
|
|
|
|
if (null == savedJson) {
|
|
|
|
return Collections.singletonList(getCurrentInstance());
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
2020-08-16 10:24:58 +02:00
|
|
|
final JsonArray array = JsonParser.object().from(savedJson).getArray("instances");
|
|
|
|
final List<PeertubeInstance> result = new ArrayList<>();
|
|
|
|
for (final Object o : array) {
|
2019-11-24 16:38:06 +01:00
|
|
|
if (o instanceof JsonObject) {
|
2020-08-16 10:24:58 +02:00
|
|
|
final JsonObject instance = (JsonObject) o;
|
|
|
|
final String name = instance.getString("name");
|
|
|
|
final String url = instance.getString("url");
|
2019-11-24 16:38:06 +01:00
|
|
|
result.add(new PeertubeInstance(url, name));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
2020-08-16 10:24:58 +02:00
|
|
|
} catch (final JsonParserException e) {
|
2019-11-24 16:38:06 +01:00
|
|
|
return Collections.singletonList(getCurrentInstance());
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public static PeertubeInstance selectInstance(final PeertubeInstance instance,
|
|
|
|
final Context context) {
|
2020-08-16 10:24:58 +02:00
|
|
|
final SharedPreferences sharedPreferences = PreferenceManager
|
2020-03-31 19:20:15 +02:00
|
|
|
.getDefaultSharedPreferences(context);
|
2020-08-16 10:24:58 +02:00
|
|
|
final String selectedInstanceKey
|
|
|
|
= context.getString(R.string.peertube_selected_instance_key);
|
|
|
|
final JsonStringWriter jsonWriter = JsonWriter.string().object();
|
2019-11-24 16:38:06 +01:00
|
|
|
jsonWriter.value("name", instance.getName());
|
|
|
|
jsonWriter.value("url", instance.getUrl());
|
2020-08-16 10:24:58 +02:00
|
|
|
final String jsonToSave = jsonWriter.end().done();
|
2019-11-24 16:38:06 +01:00
|
|
|
sharedPreferences.edit().putString(selectedInstanceKey, jsonToSave).apply();
|
|
|
|
ServiceList.PeerTube.setInstance(instance);
|
|
|
|
return instance;
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public static PeertubeInstance getCurrentInstance() {
|
2019-11-24 16:38:06 +01:00
|
|
|
return ServiceList.PeerTube.getInstance();
|
|
|
|
}
|
|
|
|
}
|