Convert newpipe/util/PeertubeHelper to kotlin
This commit is contained in:
parent
3102c65f8a
commit
80ba2c49fa
2 changed files with 53 additions and 69 deletions
|
|
@ -1,69 +0,0 @@
|
||||||
package org.schabi.newpipe.util;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
|
|
||||||
import androidx.preference.PreferenceManager;
|
|
||||||
|
|
||||||
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.List;
|
|
||||||
|
|
||||||
public final class PeertubeHelper {
|
|
||||||
private PeertubeHelper() { }
|
|
||||||
|
|
||||||
public static List<PeertubeInstance> getInstanceList(final Context context) {
|
|
||||||
final SharedPreferences sharedPreferences = PreferenceManager
|
|
||||||
.getDefaultSharedPreferences(context);
|
|
||||||
final String savedInstanceListKey = context.getString(R.string.peertube_instance_list_key);
|
|
||||||
final String savedJson = sharedPreferences.getString(savedInstanceListKey, null);
|
|
||||||
if (null == savedJson) {
|
|
||||||
return List.of(getCurrentInstance());
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
final JsonArray array = JsonParser.object().from(savedJson).getArray("instances");
|
|
||||||
final List<PeertubeInstance> result = new ArrayList<>();
|
|
||||||
for (final Object o : array) {
|
|
||||||
if (o instanceof JsonObject) {
|
|
||||||
final JsonObject instance = (JsonObject) o;
|
|
||||||
final String name = instance.getString("name");
|
|
||||||
final String url = instance.getString("url");
|
|
||||||
result.add(new PeertubeInstance(url, name));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
} catch (final JsonParserException e) {
|
|
||||||
return List.of(getCurrentInstance());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PeertubeInstance selectInstance(final PeertubeInstance instance,
|
|
||||||
final Context context) {
|
|
||||||
final SharedPreferences sharedPreferences = PreferenceManager
|
|
||||||
.getDefaultSharedPreferences(context);
|
|
||||||
final String selectedInstanceKey =
|
|
||||||
context.getString(R.string.peertube_selected_instance_key);
|
|
||||||
final JsonStringWriter jsonWriter = JsonWriter.string().object();
|
|
||||||
jsonWriter.value("name", instance.getName());
|
|
||||||
jsonWriter.value("url", instance.getUrl());
|
|
||||||
final String jsonToSave = jsonWriter.end().done();
|
|
||||||
sharedPreferences.edit().putString(selectedInstanceKey, jsonToSave).apply();
|
|
||||||
ServiceList.PeerTube.setInstance(instance);
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static PeertubeInstance getCurrentInstance() {
|
|
||||||
return ServiceList.PeerTube.getInstance();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
53
app/src/main/java/org/schabi/newpipe/util/PeertubeHelper.kt
Normal file
53
app/src/main/java/org/schabi/newpipe/util/PeertubeHelper.kt
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2019-2026 NewPipe contributors <https://newpipe.net>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.schabi.newpipe.util
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.core.content.edit
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
|
import com.grack.nanojson.JsonObject
|
||||||
|
import com.grack.nanojson.JsonParser
|
||||||
|
import com.grack.nanojson.JsonWriter
|
||||||
|
import org.schabi.newpipe.R
|
||||||
|
import org.schabi.newpipe.extractor.ServiceList
|
||||||
|
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance
|
||||||
|
|
||||||
|
object PeertubeHelper {
|
||||||
|
@JvmStatic
|
||||||
|
fun getInstanceList(context: Context): List<PeertubeInstance> {
|
||||||
|
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
val savedInstanceListKey = context.getString(R.string.peertube_instance_list_key)
|
||||||
|
val savedJson = sharedPreferences.getString(savedInstanceListKey, null)
|
||||||
|
if (savedJson == null) {
|
||||||
|
return listOf(currentInstance)
|
||||||
|
}
|
||||||
|
|
||||||
|
return runCatching {
|
||||||
|
JsonParser.`object`().from(savedJson).getArray("instances")
|
||||||
|
.filterIsInstance<JsonObject>()
|
||||||
|
.map { PeertubeInstance(it.getString("url"), it.getString("name")) }
|
||||||
|
}.getOrDefault(listOf(currentInstance))
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun selectInstance(instance: PeertubeInstance, context: Context): PeertubeInstance {
|
||||||
|
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
val selectedInstanceKey = context.getString(R.string.peertube_selected_instance_key)
|
||||||
|
|
||||||
|
val jsonWriter = JsonWriter.string().`object`()
|
||||||
|
jsonWriter.value("name", instance.name)
|
||||||
|
jsonWriter.value("url", instance.url)
|
||||||
|
val jsonToSave = jsonWriter.end().done()
|
||||||
|
|
||||||
|
sharedPreferences.edit { putString(selectedInstanceKey, jsonToSave) }
|
||||||
|
ServiceList.PeerTube.instance = instance
|
||||||
|
return instance
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
val currentInstance: PeertubeInstance
|
||||||
|
get() = ServiceList.PeerTube.instance
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue