This commit is contained in:
Thomas 2020-11-18 10:00:25 +01:00
parent 3351ef7d91
commit 91a1380fef
1 changed files with 25 additions and 5 deletions

View File

@ -504,11 +504,29 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
private void manageIntentUrl(Intent intent) { private void manageIntentUrl(Intent intent) {
if (intent.getData() != null) { //Comes from a link if (intent.getData() != null) { //Comes from a link
String url = intent.getData().toString(); String url = intent.getData().toString();
Pattern link = Pattern.compile("(https?://[\\da-z.-]+\\.[a-z.]{2,10})/videos/watch/(\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12})$"); Pattern link = Pattern.compile("(https?://[\\da-z.-]+\\.[a-z.]{2,10})/videos/watch/(\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12})(\\?start=(\\d+[hH])?(\\d+[mM])?(\\d+[sS])?)?$");
Matcher matcherLink = link.matcher(url); Matcher matcherLink = link.matcher(url);
if (matcherLink.find()) { if (matcherLink.find()) {
String instance = matcherLink.group(1); String instance = matcherLink.group(1);
String uuid = matcherLink.group(2); String uuid = matcherLink.group(2);
String hour = matcherLink.group(4);
String min = matcherLink.group(5);
String sec = matcherLink.group(6);
int hourInt, minInt, secInt;
int totalSeconds = 0;
if (hour != null) {
hourInt = Integer.parseInt(hour.replace("h", ""));
totalSeconds += 3600 * hourInt;
}
if (min != null) {
minInt = Integer.parseInt(min.replace("m", ""));
totalSeconds += 60 * minInt;
}
if (sec != null) {
secInt = Integer.parseInt(sec.replace("s", ""));
totalSeconds += secInt;
}
if (instance != null && uuid != null) { if (instance != null && uuid != null) {
peertubeInstance = instance.replace("https://", "").replace("http://", ""); peertubeInstance = instance.replace("https://", "").replace("http://", "");
sepiaSearch = true; // Sepia search flag is used because, at this time we don't know if the video is federated. sepiaSearch = true; // Sepia search flag is used because, at this time we don't know if the video is federated.
@ -516,6 +534,11 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
peertube = new VideoData.Video(); peertube = new VideoData.Video();
peertube.setUuid(uuid); peertube.setUuid(uuid);
peertube.setEmbedUrl(url); peertube.setEmbedUrl(url);
if (totalSeconds > 0) {
VideoData.UserHistory userHistory = new VideoData.UserHistory();
userHistory.setCurrentTime(totalSeconds * 1000);
peertube.setUserHistory(userHistory);
}
SearchVM viewModelSearch = new ViewModelProvider(PeertubeActivity.this).get(SearchVM.class); SearchVM viewModelSearch = new ViewModelProvider(PeertubeActivity.this).get(SearchVM.class);
viewModelSearch.getVideos("0", peertube.getEmbedUrl()).observe(PeertubeActivity.this, this::manageVIewVideos); viewModelSearch.getVideos("0", peertube.getEmbedUrl()).observe(PeertubeActivity.this, this::manageVIewVideos);
} else { } else {
@ -1117,10 +1140,7 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
@Override @Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) { public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) {
if (isInPictureInPictureMode) { if (!isInPictureInPictureMode) {
fullScreenMode = true;
} else {
fullScreenMode = false;
if (onStopCalled) { if (onStopCalled) {
isPlayInMinimized = false; isPlayInMinimized = false;
finishAndRemoveTask(); finishAndRemoveTask();