kopia lustrzana https://github.com/TeamNewPipe/NewPipe
ServiceHelper: return Optional for non-fallback function & renames
There wase one place where `null` was not checked. We use the fallback function there. For the `name` function we make clear that `"<unknown>"` is returned iff the service is not known.pull/10741/head
rodzic
1d8850d1b2
commit
91826b2428
|
@ -134,7 +134,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
}
|
||||
|
||||
ThemeHelper.setDayNightMode(this);
|
||||
ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this));
|
||||
ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceIdOrFallback(this));
|
||||
|
||||
assureCorrectAppLanguage(this);
|
||||
super.onCreate(savedInstanceState);
|
||||
|
@ -195,7 +195,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
|
||||
@Override
|
||||
public void onDrawerOpened(final View drawerView) {
|
||||
lastService = ServiceHelper.getSelectedServiceId(MainActivity.this);
|
||||
lastService = ServiceHelper.getSelectedServiceIdOrFallback(MainActivity.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -203,7 +203,8 @@ public class MainActivity extends AppCompatActivity {
|
|||
if (servicesShown) {
|
||||
toggleServices();
|
||||
}
|
||||
if (lastService != ServiceHelper.getSelectedServiceId(MainActivity.this)) {
|
||||
if (lastService
|
||||
!= ServiceHelper.getSelectedServiceIdOrFallback(MainActivity.this)) {
|
||||
ActivityCompat.recreate(MainActivity.this);
|
||||
}
|
||||
}
|
||||
|
@ -220,7 +221,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
*/
|
||||
private void addDrawerMenuForCurrentService() throws ExtractionException {
|
||||
//Tabs
|
||||
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
|
||||
final int currentServiceId = ServiceHelper.getSelectedServiceIdOrFallback(this);
|
||||
final StreamingService service = NewPipe.getService(currentServiceId);
|
||||
|
||||
int kioskMenuItemId = 0;
|
||||
|
@ -284,11 +285,11 @@ public class MainActivity extends AppCompatActivity {
|
|||
|
||||
private void changeService(final MenuItem item) {
|
||||
drawerLayoutBinding.navigation.getMenu()
|
||||
.getItem(ServiceHelper.getSelectedServiceId(this))
|
||||
.getItem(ServiceHelper.getSelectedServiceIdOrFallback(this))
|
||||
.setChecked(false);
|
||||
ServiceHelper.setSelectedServiceId(this, item.getItemId());
|
||||
drawerLayoutBinding.navigation.getMenu()
|
||||
.getItem(ServiceHelper.getSelectedServiceId(this))
|
||||
.getItem(ServiceHelper.getSelectedServiceIdOrFallback(this))
|
||||
.setChecked(true);
|
||||
}
|
||||
|
||||
|
@ -310,7 +311,8 @@ public class MainActivity extends AppCompatActivity {
|
|||
NavigationHelper.openStatisticFragment(getSupportFragmentManager());
|
||||
break;
|
||||
default:
|
||||
final StreamingService currentService = ServiceHelper.getSelectedService(this);
|
||||
final StreamingService currentService =
|
||||
ServiceHelper.getSelectedServiceOrFallback(this);
|
||||
int kioskMenuItemId = 0;
|
||||
for (final String kioskId : currentService.getKioskList().getAvailableKiosks()) {
|
||||
if (kioskMenuItemId == item.getItemId()) {
|
||||
|
@ -389,7 +391,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
}
|
||||
}
|
||||
drawerLayoutBinding.navigation.getMenu()
|
||||
.getItem(ServiceHelper.getSelectedServiceId(this))
|
||||
.getItem(ServiceHelper.getSelectedServiceIdOrFallback(this))
|
||||
.setChecked(true);
|
||||
}
|
||||
|
||||
|
@ -460,7 +462,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
// so it looks like the drawer isn't open when the user returns to MainActivity
|
||||
mainBinding.getRoot().closeDrawer(GravityCompat.START, false);
|
||||
try {
|
||||
final int selectedServiceId = ServiceHelper.getSelectedServiceId(this);
|
||||
final int selectedServiceId = ServiceHelper.getSelectedServiceIdOrFallback(this);
|
||||
final String selectedServiceName = NewPipe.getService(selectedServiceId)
|
||||
.getServiceInfo().getName();
|
||||
drawerHeaderBinding.drawerHeaderServiceView.setText(selectedServiceName);
|
||||
|
|
|
@ -62,7 +62,7 @@ class ErrorInfo(
|
|||
constructor(throwable: Throwable, userAction: UserAction, request: String) :
|
||||
this(throwable, userAction, SERVICE_NONE, request)
|
||||
constructor(throwable: Throwable, userAction: UserAction, request: String, serviceId: Int) :
|
||||
this(throwable, userAction, ServiceHelper.getNameOfServiceById(serviceId), request)
|
||||
this(throwable, userAction, ServiceHelper.getNameOfServiceByIdOrUnknown(serviceId), request)
|
||||
constructor(throwable: Throwable, userAction: UserAction, request: String, info: Info?) :
|
||||
this(throwable, userAction, getInfoServiceName(info), request)
|
||||
|
||||
|
@ -70,7 +70,7 @@ class ErrorInfo(
|
|||
constructor(throwable: List<Throwable>, userAction: UserAction, request: String) :
|
||||
this(throwable, userAction, SERVICE_NONE, request)
|
||||
constructor(throwable: List<Throwable>, userAction: UserAction, request: String, serviceId: Int) :
|
||||
this(throwable, userAction, ServiceHelper.getNameOfServiceById(serviceId), request)
|
||||
this(throwable, userAction, ServiceHelper.getNameOfServiceByIdOrUnknown(serviceId), request)
|
||||
constructor(throwable: List<Throwable>, userAction: UserAction, request: String, info: Info?) :
|
||||
this(throwable, userAction, getInfoServiceName(info), request)
|
||||
|
||||
|
@ -83,7 +83,7 @@ class ErrorInfo(
|
|||
throwableList.map { it.stackTraceToString() }.toTypedArray()
|
||||
|
||||
private fun getInfoServiceName(info: Info?) =
|
||||
if (info == null) SERVICE_NONE else ServiceHelper.getNameOfServiceById(info.serviceId)
|
||||
if (info == null) SERVICE_NONE else ServiceHelper.getNameOfServiceByIdOrUnknown(info.serviceId)
|
||||
|
||||
@StringRes
|
||||
private fun getMessageStringId(
|
||||
|
|
|
@ -109,7 +109,7 @@ class ErrorPanelHelper(
|
|||
if (!isNullOrEmpty((errorInfo.throwable as AccountTerminatedException).message)) {
|
||||
errorServiceInfoTextView.text = context.resources.getString(
|
||||
R.string.service_provides_reason,
|
||||
ServiceHelper.getSelectedService(context)?.serviceInfo?.name ?: "<unknown>"
|
||||
ServiceHelper.getSelectedServiceNameOrUnknown(context)
|
||||
)
|
||||
errorServiceInfoTextView.isVisible = true
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
|
|||
if (item.getItemId() == R.id.action_search) {
|
||||
try {
|
||||
NavigationHelper.openSearchFragment(getFM(),
|
||||
ServiceHelper.getSelectedServiceId(activity), "");
|
||||
ServiceHelper.getSelectedServiceIdOrFallback(activity), "");
|
||||
} catch (final Exception e) {
|
||||
ErrorUtil.showUiErrorSnackbar(this, "Opening search fragment", e);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ public class DefaultKioskFragment extends KioskFragment {
|
|||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if (serviceId != ServiceHelper.getSelectedServiceId(requireContext())) {
|
||||
if (serviceId != ServiceHelper.getSelectedServiceIdOrFallback(requireContext())) {
|
||||
if (currentWorker != null) {
|
||||
currentWorker.dispose();
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ public class DefaultKioskFragment extends KioskFragment {
|
|||
|
||||
private void updateSelectedDefaultKiosk() {
|
||||
try {
|
||||
serviceId = ServiceHelper.getSelectedServiceId(requireContext());
|
||||
serviceId = ServiceHelper.getSelectedServiceIdOrFallback(requireContext());
|
||||
|
||||
final KioskList kioskList = NewPipe.getService(serviceId).getKioskList();
|
||||
kioskId = kioskList.getDefaultKioskId();
|
||||
|
|
|
@ -60,7 +60,8 @@ public class LocalPlaylistStreamItemHolder extends LocalItemHolder {
|
|||
itemVideoTitleView.setText(item.getStreamEntity().getTitle());
|
||||
itemAdditionalDetailsView.setText(Localization
|
||||
.concatenateStrings(item.getStreamEntity().getUploader(),
|
||||
ServiceHelper.getNameOfServiceById(item.getStreamEntity().getServiceId())));
|
||||
ServiceHelper.getNameOfServiceByIdOrUnknown(
|
||||
item.getStreamEntity().getServiceId())));
|
||||
|
||||
if (item.getStreamEntity().getDuration() > 0) {
|
||||
itemDurationView.setText(Localization
|
||||
|
|
|
@ -76,7 +76,8 @@ public class LocalStatisticStreamItemHolder extends LocalItemHolder {
|
|||
Localization.shortViewCount(itemBuilder.getContext(), entry.getWatchCount()),
|
||||
dateTimeFormatter.format(entry.getLatestAccessDate()),
|
||||
// serviceName
|
||||
ServiceHelper.getNameOfServiceById(entry.getStreamEntity().getServiceId()));
|
||||
ServiceHelper.getNameOfServiceByIdOrUnknown(
|
||||
entry.getStreamEntity().getServiceId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -39,9 +39,10 @@ public class RemotePlaylistItemHolder extends PlaylistItemHolder {
|
|||
// Here is where the uploader name is set in the bookmarked playlists library
|
||||
if (!TextUtils.isEmpty(item.getUploader())) {
|
||||
itemUploaderView.setText(Localization.concatenateStrings(item.getUploader(),
|
||||
ServiceHelper.getNameOfServiceById(item.getServiceId())));
|
||||
ServiceHelper.getNameOfServiceByIdOrUnknown(item.getServiceId())));
|
||||
} else {
|
||||
itemUploaderView.setText(ServiceHelper.getNameOfServiceById(item.getServiceId()));
|
||||
itemUploaderView.setText(
|
||||
ServiceHelper.getNameOfServiceByIdOrUnknown(item.getServiceId()));
|
||||
}
|
||||
|
||||
PicassoHelper.loadPlaylistThumbnail(item.getThumbnailUrl()).into(itemThumbnailView);
|
||||
|
|
|
@ -89,7 +89,7 @@ public class SubscriptionsImportFragment extends BaseFragment {
|
|||
if (supportedSources.isEmpty() && currentServiceId != Constants.NO_SERVICE_ID) {
|
||||
ErrorUtil.showSnackbar(activity,
|
||||
new ErrorInfo(new String[]{}, UserAction.SUBSCRIPTION_IMPORT_EXPORT,
|
||||
ServiceHelper.getNameOfServiceById(currentServiceId),
|
||||
ServiceHelper.getNameOfServiceByIdOrUnknown(currentServiceId),
|
||||
"Service does not support importing subscriptions",
|
||||
R.string.general_error));
|
||||
activity.finish();
|
||||
|
|
|
@ -86,7 +86,7 @@ public final class PlayQueueActivity extends AppCompatActivity
|
|||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
assureCorrectAppLanguage(this);
|
||||
super.onCreate(savedInstanceState);
|
||||
ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this));
|
||||
ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceIdOrFallback(this));
|
||||
|
||||
queueControlBinding = ActivityPlayerQueueControlBinding.inflate(getLayoutInflater());
|
||||
setContentView(queueControlBinding.getRoot());
|
||||
|
|
|
@ -25,7 +25,7 @@ public class PlayQueueItemBuilder {
|
|||
holder.itemVideoTitleView.setText(item.getTitle());
|
||||
}
|
||||
holder.itemAdditionalDetailsView.setText(Localization.concatenateStrings(item.getUploader(),
|
||||
ServiceHelper.getNameOfServiceById(item.getServiceId())));
|
||||
ServiceHelper.getNameOfServiceByIdOrUnknown(item.getServiceId())));
|
||||
|
||||
if (item.getDuration() > 0) {
|
||||
holder.itemDurationView.setText(Localization.getDurationString(item.getDuration()));
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package org.schabi.newpipe.settings.tabs;
|
||||
|
||||
import static org.schabi.newpipe.settings.tabs.Tab.typeFrom;
|
||||
import static org.schabi.newpipe.util.ServiceHelper.getNameOfServiceById;
|
||||
import static org.schabi.newpipe.util.ServiceHelper.getNameOfServiceByIdOrUnknown;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Dialog;
|
||||
|
@ -385,16 +385,18 @@ public class ChooseTabsFragment extends Fragment {
|
|||
case DEFAULT_KIOSK:
|
||||
return getString(R.string.default_kiosk_page_summary);
|
||||
case KIOSK:
|
||||
return getNameOfServiceById(((Tab.KioskTab) tab).getKioskServiceId())
|
||||
return getNameOfServiceByIdOrUnknown(
|
||||
((Tab.KioskTab) tab).getKioskServiceId())
|
||||
+ "/" + tab.getTabName(requireContext());
|
||||
case CHANNEL:
|
||||
return getNameOfServiceById(((Tab.ChannelTab) tab).getChannelServiceId())
|
||||
return getNameOfServiceByIdOrUnknown(
|
||||
((Tab.ChannelTab) tab).getChannelServiceId())
|
||||
+ "/" + tab.getTabName(requireContext());
|
||||
case PLAYLIST:
|
||||
final int serviceId = ((Tab.PlaylistTab) tab).getPlaylistServiceId();
|
||||
final String serviceName = serviceId == -1
|
||||
? getString(R.string.local)
|
||||
: getNameOfServiceById(serviceId);
|
||||
: getNameOfServiceByIdOrUnknown(serviceId);
|
||||
return serviceName + "/" + tab.getTabName(requireContext());
|
||||
default:
|
||||
return tab.getTabName(requireContext());
|
||||
|
|
|
@ -505,7 +505,7 @@ public abstract class Tab {
|
|||
}
|
||||
|
||||
private String getDefaultKioskId(final Context context) {
|
||||
final int kioskServiceId = ServiceHelper.getSelectedServiceId(context);
|
||||
final int kioskServiceId = ServiceHelper.getSelectedServiceIdOrFallback(context);
|
||||
|
||||
String kioskId = "";
|
||||
try {
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.content.SharedPreferences;
|
|||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
|
@ -115,27 +114,48 @@ public final class ServiceHelper {
|
|||
}
|
||||
}
|
||||
|
||||
public static int getSelectedServiceId(final Context context) {
|
||||
return Optional.ofNullable(getSelectedService(context))
|
||||
public static int getSelectedServiceIdOrFallback(final Context context) {
|
||||
return getSelectedService(context)
|
||||
.orElse(DEFAULT_FALLBACK_SERVICE)
|
||||
.getServiceId();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static StreamingService getSelectedService(final Context context) {
|
||||
public static StreamingService getSelectedServiceOrFallback(final Context context) {
|
||||
return getSelectedService(context)
|
||||
.orElse(DEFAULT_FALLBACK_SERVICE);
|
||||
}
|
||||
|
||||
public static Optional<StreamingService> getSelectedService(final Context context) {
|
||||
final String serviceName = PreferenceManager.getDefaultSharedPreferences(context)
|
||||
.getString(context.getString(R.string.current_service_key),
|
||||
context.getString(R.string.default_service_value));
|
||||
|
||||
try {
|
||||
return NewPipe.getService(serviceName);
|
||||
return Optional.of(NewPipe.getService(serviceName));
|
||||
} catch (final ExtractionException e) {
|
||||
return null;
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** Get the name of the selected service.
|
||||
*
|
||||
* @param context
|
||||
* @return The name of the service or {@literal "<unknown>"}
|
||||
*/
|
||||
@NonNull
|
||||
public static String getNameOfServiceById(final int serviceId) {
|
||||
public static String getSelectedServiceNameOrUnknown(final Context context) {
|
||||
return getSelectedService(context)
|
||||
.map(s -> s.getServiceInfo().getName())
|
||||
.orElse("<unknown>");
|
||||
}
|
||||
|
||||
/** Get the name of the service if it exists.
|
||||
*
|
||||
* @param serviceId
|
||||
* @return The name of the service or {@literal "<unknown>"}
|
||||
*/
|
||||
@NonNull
|
||||
public static String getNameOfServiceByIdOrUnknown(final int serviceId) {
|
||||
return ServiceList.all().stream()
|
||||
.filter(s -> s.getServiceId() == serviceId)
|
||||
.findFirst()
|
||||
|
|
Ładowanie…
Reference in New Issue