Merge pull request #3044 from B0pol/tubepeer
Description fix and some PeerTube fixes
This commit is contained in:
commit
07544cd198
3 changed files with 49 additions and 30 deletions
|
@ -53,6 +53,7 @@ ext {
|
||||||
okHttpLibVersion = '3.12.6'
|
okHttpLibVersion = '3.12.6'
|
||||||
icepickLibVersion = '3.2.0'
|
icepickLibVersion = '3.2.0'
|
||||||
stethoLibVersion = '1.5.0'
|
stethoLibVersion = '1.5.0'
|
||||||
|
markwonVersion = '4.2.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -62,7 +63,7 @@ dependencies {
|
||||||
exclude module: 'support-annotations'
|
exclude module: 'support-annotations'
|
||||||
})
|
})
|
||||||
|
|
||||||
implementation 'com.github.TeamNewPipe:NewPipeExtractor:ff61e284'
|
implementation 'com.github.TeamNewPipe:NewPipeExtractor:9112a10'
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
testImplementation 'org.mockito:mockito-core:2.23.0'
|
testImplementation 'org.mockito:mockito-core:2.23.0'
|
||||||
|
|
||||||
|
@ -108,4 +109,7 @@ dependencies {
|
||||||
|
|
||||||
implementation "com.squareup.okhttp3:okhttp:${okHttpLibVersion}"
|
implementation "com.squareup.okhttp3:okhttp:${okHttpLibVersion}"
|
||||||
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoLibVersion}"
|
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoLibVersion}"
|
||||||
|
|
||||||
|
implementation "io.noties.markwon:core:${markwonVersion}"
|
||||||
|
implementation "io.noties.markwon:linkify:${markwonVersion}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,18 +32,20 @@ public class AboutActivity extends AppCompatActivity {
|
||||||
* List of all software components
|
* List of all software components
|
||||||
*/
|
*/
|
||||||
private static final SoftwareComponent[] SOFTWARE_COMPONENTS = new SoftwareComponent[]{
|
private static final SoftwareComponent[] SOFTWARE_COMPONENTS = new SoftwareComponent[]{
|
||||||
new SoftwareComponent("Giga Get", "2014", "Peter Cai", "https://github.com/PaperAirplane-Dev-Team/GigaGet", StandardLicenses.GPL2),
|
new SoftwareComponent("Giga Get", "2014 - 2015", "Peter Cai", "https://github.com/PaperAirplane-Dev-Team/GigaGet", StandardLicenses.GPL2),
|
||||||
new SoftwareComponent("NewPipe Extractor", "2017", "Christian Schabesberger", "https://github.com/TeamNewPipe/NewPipeExtractor", StandardLicenses.GPL3),
|
new SoftwareComponent("NewPipe Extractor", "2017 - 2020", "Christian Schabesberger", "https://github.com/TeamNewPipe/NewPipeExtractor", StandardLicenses.GPL3),
|
||||||
new SoftwareComponent("Jsoup", "2017", "Jonathan Hedley", "https://github.com/jhy/jsoup", StandardLicenses.MIT),
|
new SoftwareComponent("Jsoup", "2017", "Jonathan Hedley", "https://github.com/jhy/jsoup", StandardLicenses.MIT),
|
||||||
new SoftwareComponent("Rhino", "2015", "Mozilla", "https://www.mozilla.org/rhino/", StandardLicenses.MPL2),
|
new SoftwareComponent("Rhino", "2015", "Mozilla", "https://www.mozilla.org/rhino/", StandardLicenses.MPL2),
|
||||||
new SoftwareComponent("ACRA", "2013", "Kevin Gaudin", "http://www.acra.ch", StandardLicenses.APACHE2),
|
new SoftwareComponent("ACRA", "2013", "Kevin Gaudin", "http://www.acra.ch", StandardLicenses.APACHE2),
|
||||||
new SoftwareComponent("Universal Image Loader", "2011 - 2015", "Sergey Tarasevich", "https://github.com/nostra13/Android-Universal-Image-Loader", StandardLicenses.APACHE2),
|
new SoftwareComponent("Universal Image Loader", "2011 - 2015", "Sergey Tarasevich", "https://github.com/nostra13/Android-Universal-Image-Loader", StandardLicenses.APACHE2),
|
||||||
new SoftwareComponent("CircleImageView", "2014 - 2017", "Henning Dodenhof", "https://github.com/hdodenhof/CircleImageView", StandardLicenses.APACHE2),
|
new SoftwareComponent("CircleImageView", "2014 - 2020", "Henning Dodenhof", "https://github.com/hdodenhof/CircleImageView", StandardLicenses.APACHE2),
|
||||||
new SoftwareComponent("NoNonsense-FilePicker", "2016", "Jonas Kalderstam", "https://github.com/spacecowboy/NoNonsense-FilePicker", StandardLicenses.MPL2),
|
new SoftwareComponent("NoNonsense-FilePicker", "2016", "Jonas Kalderstam", "https://github.com/spacecowboy/NoNonsense-FilePicker", StandardLicenses.MPL2),
|
||||||
new SoftwareComponent("ExoPlayer", "2014-2017", "Google Inc", "https://github.com/google/ExoPlayer", StandardLicenses.APACHE2),
|
new SoftwareComponent("ExoPlayer", "2014 - 2020", "Google Inc", "https://github.com/google/ExoPlayer", StandardLicenses.APACHE2),
|
||||||
new SoftwareComponent("RxAndroid", "2015", "The RxAndroid authors", "https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2),
|
new SoftwareComponent("RxAndroid", "2015 - 2018", "The RxAndroid authors", "https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2),
|
||||||
new SoftwareComponent("RxJava", "2016-present", "RxJava Contributors", "https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2),
|
new SoftwareComponent("RxJava", "2016 - 2020", "RxJava Contributors", "https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2),
|
||||||
new SoftwareComponent("RxBinding", "2015", "Jake Wharton", "https://github.com/JakeWharton/RxBinding", StandardLicenses.APACHE2)
|
new SoftwareComponent("RxBinding", "2015 - 2018", "Jake Wharton", "https://github.com/JakeWharton/RxBinding", StandardLicenses.APACHE2),
|
||||||
|
new SoftwareComponent("PrettyTime", "2012 - 2020", "Lincoln Baxter, III", "https://github.com/ocpsoft/prettytime", StandardLicenses.APACHE2),
|
||||||
|
new SoftwareComponent("Markwon", "2017 - 2020", "Noties", "https://github.com/noties/Markwon", StandardLicenses.APACHE2)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,7 +2,6 @@ package org.schabi.newpipe.fragments.detail;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
@ -18,7 +17,6 @@ import androidx.fragment.app.Fragment;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.viewpager.widget.ViewPager;
|
import androidx.viewpager.widget.ViewPager;
|
||||||
import androidx.appcompat.app.ActionBar;
|
import androidx.appcompat.app.ActionBar;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
|
@ -58,6 +56,7 @@ import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.AudioStream;
|
import org.schabi.newpipe.extractor.stream.AudioStream;
|
||||||
|
import org.schabi.newpipe.extractor.stream.Description;
|
||||||
import org.schabi.newpipe.extractor.stream.Stream;
|
import org.schabi.newpipe.extractor.stream.Stream;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
@ -96,6 +95,8 @@ import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import icepick.State;
|
import icepick.State;
|
||||||
|
import io.noties.markwon.Markwon;
|
||||||
|
import io.noties.markwon.linkify.LinkifyPlugin;
|
||||||
import io.reactivex.Single;
|
import io.reactivex.Single;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.CompositeDisposable;
|
import io.reactivex.disposables.CompositeDisposable;
|
||||||
|
@ -483,7 +484,6 @@ public class VideoDetailFragment
|
||||||
videoUploadDateView = rootView.findViewById(R.id.detail_upload_date_view);
|
videoUploadDateView = rootView.findViewById(R.id.detail_upload_date_view);
|
||||||
videoDescriptionView = rootView.findViewById(R.id.detail_description_view);
|
videoDescriptionView = rootView.findViewById(R.id.detail_description_view);
|
||||||
videoDescriptionView.setMovementMethod(LinkMovementMethod.getInstance());
|
videoDescriptionView.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
videoDescriptionView.setAutoLinkMask(Linkify.WEB_URLS);
|
|
||||||
|
|
||||||
thumbsUpTextView = rootView.findViewById(R.id.detail_thumbs_up_count_view);
|
thumbsUpTextView = rootView.findViewById(R.id.detail_thumbs_up_count_view);
|
||||||
thumbsUpImageView = rootView.findViewById(R.id.detail_thumbs_up_img_view);
|
thumbsUpImageView = rootView.findViewById(R.id.detail_thumbs_up_img_view);
|
||||||
|
@ -919,28 +919,41 @@ public class VideoDetailFragment
|
||||||
return sortedVideoStreams != null ? sortedVideoStreams.get(selectedVideoStreamIndex) : null;
|
return sortedVideoStreams != null ? sortedVideoStreams.get(selectedVideoStreamIndex) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareDescription(final String descriptionHtml) {
|
private void prepareDescription(Description description) {
|
||||||
if (TextUtils.isEmpty(descriptionHtml)) {
|
if (TextUtils.isEmpty(description.getContent()) || description == Description.emptyDescription) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
disposables.add(Single.just(descriptionHtml)
|
if (description.getType() == Description.HTML) {
|
||||||
.map((@io.reactivex.annotations.NonNull String description) -> {
|
disposables.add(Single.just(description.getContent())
|
||||||
Spanned parsedDescription;
|
.map((@io.reactivex.annotations.NonNull String descriptionText) -> {
|
||||||
if (Build.VERSION.SDK_INT >= 24) {
|
Spanned parsedDescription;
|
||||||
parsedDescription = Html.fromHtml(description, 0);
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
} else {
|
parsedDescription = Html.fromHtml(descriptionText, 0);
|
||||||
//noinspection deprecation
|
} else {
|
||||||
parsedDescription = Html.fromHtml(description);
|
//noinspection deprecation
|
||||||
}
|
parsedDescription = Html.fromHtml(descriptionText);
|
||||||
return parsedDescription;
|
}
|
||||||
})
|
return parsedDescription;
|
||||||
.subscribeOn(Schedulers.computation())
|
})
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.subscribeOn(Schedulers.computation())
|
||||||
.subscribe((@io.reactivex.annotations.NonNull Spanned spanned) -> {
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
videoDescriptionView.setText(spanned);
|
.subscribe((@io.reactivex.annotations.NonNull Spanned spanned) -> {
|
||||||
videoDescriptionView.setVisibility(View.VISIBLE);
|
videoDescriptionView.setText(spanned);
|
||||||
}));
|
videoDescriptionView.setVisibility(View.VISIBLE);
|
||||||
|
}));
|
||||||
|
} else if (description.getType() == Description.MARKDOWN) {
|
||||||
|
final Markwon markwon = Markwon.builder(getContext())
|
||||||
|
.usePlugin(LinkifyPlugin.create())
|
||||||
|
.build();
|
||||||
|
markwon.setMarkdown(videoDescriptionView, description.getContent());
|
||||||
|
videoDescriptionView.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
//== Description.PLAIN_TEXT
|
||||||
|
videoDescriptionView.setAutoLinkMask(Linkify.WEB_URLS);
|
||||||
|
videoDescriptionView.setText(description.getContent(), TextView.BufferType.SPANNABLE);
|
||||||
|
videoDescriptionView.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setHeightThumbnail() {
|
private void setHeightThumbnail() {
|
||||||
|
|
Loading…
Reference in a new issue