mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2026-02-11 04:30:15 +00:00
Convert newpipe/util/PeertubeHelper to kotlin
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user