Back end display videos - 1

This commit is contained in:
stom79 2019-01-07 19:16:15 +01:00
parent 0c1d123196
commit 5143c54359
12 changed files with 500 additions and 44 deletions

View File

@ -239,6 +239,11 @@
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
/>
<activity android:name=".activities.PeertubeEditUploadActivity"
android:windowSoftInputMode="stateAlwaysHidden"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
/>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="fr.gouv.etalab.mastodon.fileProvider"

View File

@ -102,6 +102,7 @@ import fr.gouv.etalab.mastodon.asynctasks.RetrieveAccountsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveInstanceAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMetaDataAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeInformationAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveRemoteDataAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoByIDAsyncTask;
@ -270,6 +271,12 @@ public abstract class BaseMainActivity extends BaseActivity
activity = this;
rateThisApp();
//Intialize Peertube information
if( social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE){
try{
new RetrievePeertubeInformationAsyncTask(getApplicationContext()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}catch (Exception ignored){}
}
Helper.canPin = false;
Helper.fillMapEmoji(getApplicationContext());
@ -2036,6 +2043,7 @@ public abstract class BaseMainActivity extends BaseActivity
SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
Account account = new AccountDAO(getApplicationContext(), db).getAccountByToken(token);
bundle.putString("targetedid",account.getUsername());
bundle.putBoolean("ownvideos", true);
fragment.setArguments(bundle);
fragmentTag = "MY_VIDEOS";
fragmentManager.beginTransaction()

View File

@ -662,6 +662,11 @@ public class PeertubeActivity extends BaseActivity implements OnRetrievePeertube
}
}
@Override
public void onRetrievePeertubeChannels(APIResponse apiResponse) {
}
@Override
public void onDestroy() {
super.onDestroy();

View File

@ -0,0 +1,170 @@
package fr.gouv.etalab.mastodon.activities;
/* Copyright 2019 Thomas Schneider
*
* This file is a part of Mastalab
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* Mastalab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Mastalab; if not,
* see <http://www.gnu.org/licenses>. */
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.HashMap;
import java.util.List;
import es.dmoral.toasty.Toasty;
import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeChannelsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeSingleAsyncTask;
import fr.gouv.etalab.mastodon.client.APIResponse;
import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.client.Entities.Peertube;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnRetrievePeertubeInterface;
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT;
public class PeertubeEditUploadActivity extends BaseActivity implements OnRetrievePeertubeInterface {
private Button set_upload_file, set_upload_submit;
private Spinner set_upload_privacy, set_upload_channel;
private TextView set_upload_file_name;
private HashMap<String, String> channels;
private String videoId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
switch (theme){
case Helper.THEME_LIGHT:
setTheme(R.style.AppTheme);
break;
case Helper.THEME_DARK:
setTheme(R.style.AppThemeDark);
break;
case Helper.THEME_BLACK:
setTheme(R.style.AppThemeBlack);
break;
default:
setTheme(R.style.AppThemeDark);
}
Bundle b = getIntent().getExtras();
if(b != null) {
videoId = b.getString("video_id", null);
}
if( getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ActionBar actionBar = getSupportActionBar();
if( actionBar != null ) {
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
assert inflater != null;
@SuppressLint("InflateParams") View view = inflater.inflate(R.layout.simple_bar, null);
actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close);
TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title);
toolbar_close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
toolbar_title.setText(R.string.action_about);
if (theme == THEME_LIGHT){
Toolbar toolbar = actionBar.getCustomView().findViewById(R.id.toolbar);
Helper.colorizeToolbar(toolbar, R.color.black, PeertubeEditUploadActivity.this);
}
}
setContentView(R.layout.activity_peertube_upload);
set_upload_file = findViewById(R.id.set_upload_file);
set_upload_file_name = findViewById(R.id.set_upload_file_name);
set_upload_channel = findViewById(R.id.set_upload_channel);
set_upload_privacy = findViewById(R.id.set_upload_privacy);
set_upload_submit = findViewById(R.id.set_upload_submit);
String peertubeInstance = Helper.getLiveInstance(getApplicationContext());
new RetrievePeertubeSingleAsyncTask(PeertubeEditUploadActivity.this, peertubeInstance, videoId, PeertubeEditUploadActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
channels = new HashMap<>();
}
@Override
public void onRetrievePeertube(APIResponse apiResponse) {
if( apiResponse.getError() != null || apiResponse.getPeertubes() == null || apiResponse.getPeertubes().size() == 0){
if ( apiResponse.getError().getError() != null)
Toasty.error(PeertubeEditUploadActivity.this, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
else
Toasty.error(PeertubeEditUploadActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show();
return;
}
//Peertube video
Peertube peertube = apiResponse.getPeertubes().get(0);
new RetrievePeertubeChannelsAsyncTask(PeertubeEditUploadActivity.this, PeertubeEditUploadActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
//TODO: hydrate form
}
@Override
public void onRetrievePeertubeComments(APIResponse apiResponse) {
}
@Override
public void onRetrievePeertubeChannels(APIResponse apiResponse) {
if( apiResponse.getError() != null || apiResponse.getAccounts() == null || apiResponse.getAccounts().size() == 0){
if ( apiResponse.getError().getError() != null)
Toasty.error(PeertubeEditUploadActivity.this, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
else
Toasty.error(PeertubeEditUploadActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show();
return;
}
//Populate channels
List<Account> accounts = apiResponse.getAccounts();
String[] channelName = new String[accounts.size()];
int i = 0;
for(Account account: accounts){
channels.put(account.getUsername(),account.getId());
channelName[i] = account.getUsername();
i++;
}
ArrayAdapter<String> adapterChannel = new ArrayAdapter<>(PeertubeEditUploadActivity.this,
android.R.layout.simple_spinner_dropdown_item, channelName);
set_upload_channel.setAdapter(adapterChannel);
//TODO: spinner must point in the right value
}
}

View File

@ -160,6 +160,16 @@ public class PeertubeUploadActivity extends BaseActivity implements OnRetrievePe
@Override
public void onRetrievePeertube(APIResponse apiResponse) {
}
@Override
public void onRetrievePeertubeComments(APIResponse apiResponse) {
}
@Override
public void onRetrievePeertubeChannels(APIResponse apiResponse) {
if( apiResponse.getError() != null || apiResponse.getAccounts() == null || apiResponse.getAccounts().size() == 0){
if ( apiResponse.getError().getError() != null)
Toasty.error(PeertubeUploadActivity.this, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
@ -222,9 +232,4 @@ public class PeertubeUploadActivity extends BaseActivity implements OnRetrievePe
}
});
}
@Override
public void onRetrievePeertubeComments(APIResponse apiResponse) {
}
}

View File

@ -64,6 +64,6 @@ public class RetrievePeertubeChannelsAsyncTask extends AsyncTask<Void, Void, Voi
@Override
protected void onPostExecute(Void result) {
listener.onRetrievePeertube(apiResponse);
listener.onRetrievePeertubeChannels(apiResponse);
}
}

View File

@ -0,0 +1,59 @@
/* Copyright 2019 Thomas Schneider
*
* This file is a part of Mastalab
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* Mastalab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Mastalab; if not,
* see <http://www.gnu.org/licenses>. */
package fr.gouv.etalab.mastodon.asynctasks;
import android.content.Context;
import android.os.AsyncTask;
import java.lang.ref.WeakReference;
import fr.gouv.etalab.mastodon.client.Entities.PeertubeInformation;
import fr.gouv.etalab.mastodon.client.HttpsConnection;
import fr.gouv.etalab.mastodon.client.PeertubeAPI;
/**
* Created by Thomas on 07/01/2019.
* Retrieves peertube informations
*/
public class RetrievePeertubeInformationAsyncTask extends AsyncTask<Void, Void, Void> {
private WeakReference<Context> contextReference;
public static PeertubeInformation peertubeInformation;
public RetrievePeertubeInformationAsyncTask(Context context){
this.contextReference = new WeakReference<>(context);
}
@Override
protected Void doInBackground(Void... params) {
PeertubeAPI peertubeAPI = new PeertubeAPI(this.contextReference.get());
try {
peertubeInformation = peertubeAPI.getPeertubeInformation();
} catch (HttpsConnection.HttpsConnectionException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
}
}

View File

@ -0,0 +1,91 @@
package fr.gouv.etalab.mastodon.client.Entities;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/* Copyright 2019 Thomas Schneider
*
* This file is a part of Mastalab
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* Mastalab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Mastalab; if not,
* see <http://www.gnu.org/licenses>. */
public class PeertubeInformation {
private HashMap<Integer, String> categories;
private HashMap<String, String> languages;
private HashMap<Integer, String> licences;
private HashMap<Integer, String> privacies;
private HashMap<String, String> translations;
public static final Map<String, String> langueMapped;
static {
HashMap<String, String> aMap = new HashMap<>();
aMap.put("ca", "ca-ES");
aMap.put("de", "de-DE");
aMap.put("en", "en-US");
aMap.put("es", "es-ES");
aMap.put("eo", "eo");
aMap.put("eu", "eu-ES");
aMap.put("fr", "fr-FR");
aMap.put("oc", "oc");
aMap.put("pt", "pt-BR");
aMap.put("sv", "sv-SE");
aMap.put("cs", "cs-CZ");
aMap.put("zh-CN", "zh-Hans-CN");
aMap.put("zh-TW", "zh-Hans-TW");
langueMapped = Collections.unmodifiableMap(aMap);
}
public HashMap<String, String> getTranslations() {
return translations;
}
public void setTranslations(HashMap<String, String> translations) {
this.translations = translations;
}
public HashMap<Integer, String> getCategories() {
return categories;
}
public void setCategories(HashMap<Integer, String> categories) {
this.categories = categories;
}
public HashMap<String, String> getLanguages() {
return languages;
}
public void setLanguages(HashMap<String, String> languages) {
this.languages = languages;
}
public HashMap<Integer, String> getLicences() {
return licences;
}
public void setLicences(HashMap<Integer, String> licences) {
this.licences = licences;
}
public HashMap<Integer, String> getPrivacies() {
return privacies;
}
public void setPrivacies(HashMap<Integer, String> privacies) {
this.privacies = privacies;
}
}

View File

@ -35,6 +35,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import fr.gouv.etalab.mastodon.R;
@ -52,6 +53,7 @@ import fr.gouv.etalab.mastodon.client.Entities.InstanceSocial;
import fr.gouv.etalab.mastodon.client.Entities.Mention;
import fr.gouv.etalab.mastodon.client.Entities.Notification;
import fr.gouv.etalab.mastodon.client.Entities.Peertube;
import fr.gouv.etalab.mastodon.client.Entities.PeertubeInformation;
import fr.gouv.etalab.mastodon.client.Entities.Relationship;
import fr.gouv.etalab.mastodon.client.Entities.Results;
import fr.gouv.etalab.mastodon.client.Entities.Status;
@ -202,6 +204,87 @@ public class PeertubeAPI {
return apiResponse;
}
/***
* Verifiy credential of the authenticated user *synchronously*
* @return Account
*/
public PeertubeInformation getPeertubeInformation() throws HttpsConnection.HttpsConnectionException {
PeertubeInformation peertubeInformation = new PeertubeInformation();
try {
String response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/categories"), 60, null, null);
JSONObject categories = new JSONObject(response);
HashMap<Integer, String> _pcategories = new HashMap<>();
for( int i = 1 ; i <= categories.length() ; i++){
_pcategories.put(i, categories.getString(String.valueOf(i)));
}
peertubeInformation.setCategories(_pcategories);
response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/languages"), 60, null, null);
JSONObject languages = new JSONObject(response);
HashMap<String, String> _languages = new HashMap<>();
Iterator<String> iter = languages.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
_languages.put(key, (String) languages.get(key));
} catch (JSONException ignored) {}
}
peertubeInformation.setLanguages(_languages);
response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/privacies"), 60, null, null);
JSONObject privacies = new JSONObject(response);
HashMap<Integer, String> _pprivacies = new HashMap<>();
for( int i = 1 ; i <= privacies.length() ; i++){
_pprivacies.put(i, privacies.getString(String.valueOf(i)));
}
peertubeInformation.setPrivacies(_pprivacies);
response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/licences"), 60, null, null);
JSONObject licences = new JSONObject(response);
HashMap<Integer, String> _plicences = new HashMap<>();
for( int i = 1 ; i <= licences.length() ; i++){
_plicences.put(i, licences.getString(String.valueOf(i)));
}
peertubeInformation.setLicences(_plicences);
String instance = Helper.getLiveInstance(context);
String lang;
if(PeertubeInformation.langueMapped.containsKey( Locale.getDefault().getLanguage()))
lang = PeertubeInformation.langueMapped.get(Locale.getDefault().getLanguage());
else
lang = "en-US";
response = new HttpsConnection(context).get(String.format( "https://"+instance+"/client/locales/%s/server.json", lang), 60, null, null);
JSONObject translations = new JSONObject(response);
HashMap<String, String> _translations = new HashMap<>();
Iterator<String> itertrans = translations.keys();
while (itertrans.hasNext()) {
String key = itertrans.next();
try {
_translations.put(key, (String) translations.get(key));
} catch (JSONException ignored) {}
}
peertubeInformation.setTranslations(_translations);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return peertubeInformation;
}
/***
* Verifiy credential of the authenticated user *synchronously*
* @return Account

View File

@ -37,6 +37,7 @@ import java.util.regex.Pattern;
import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.activities.MainActivity;
import fr.gouv.etalab.mastodon.activities.PeertubeActivity;
import fr.gouv.etalab.mastodon.activities.PeertubeEditUploadActivity;
import fr.gouv.etalab.mastodon.activities.ShowAccountActivity;
import fr.gouv.etalab.mastodon.asynctasks.ManageListsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
@ -59,15 +60,25 @@ public class PeertubeAdapter extends RecyclerView.Adapter implements OnListActio
private LayoutInflater layoutInflater;
private Context context;
private String instance;
private boolean ownVideos;
public PeertubeAdapter(Context context, String instance, List<Peertube> peertubes){
this.peertubes = peertubes;
layoutInflater = LayoutInflater.from(context);
this.context = context;
this.instance = instance;
this.ownVideos = false;
}
public PeertubeAdapter(Context context, String instance, boolean ownVideos, List<Peertube> peertubes){
this.peertubes = peertubes;
layoutInflater = LayoutInflater.from(context);
this.context = context;
this.instance = instance;
this.ownVideos = ownVideos;
}
@NonNull
@Override
@ -101,49 +112,65 @@ public class PeertubeAdapter extends RecyclerView.Adapter implements OnListActio
holder.peertube_date.setText(String.format(" - %s", Helper.dateDiff(context, peertube.getCreated_at())));
holder.peertube_views.setText(context.getString(R.string.number_view_video, Helper.withSuffix(peertube.getView())));
holder.peertube_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//For remote peertube instance
if( !peertube.getInstance().equals(Helper.getLiveInstance(context)))
CrossActions.doCrossProfile(context, account);
else {
Intent intent = new Intent(context, ShowAccountActivity.class);
Bundle b = new Bundle();
b.putBoolean("peertubeaccount", true);
b.putParcelable("account", peertube.getAccount());
intent.putExtras(b);
context.startActivity(intent);
}
}
});
Glide.with(holder.peertube_video_image.getContext())
.load("https://" + peertube.getInstance() + peertube.getThumbnailPath())
.into(holder.peertube_video_image);
if( account.getAvatar() != null && !account.getAvatar().startsWith("http"))
if (account.getAvatar() != null && !account.getAvatar().startsWith("http"))
account.setAvatar("https://" + peertube.getInstance() + account.getAvatar());
Helper.loadGiF(context, account.getAvatar(), holder.peertube_profile);
holder.main_container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PeertubeActivity.class);
Bundle b = new Bundle();
if( (instance == null || instance.trim().length() == 0) && MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE)
instance = Helper.getLiveInstance(context);
String finalUrl = "https://" + instance + peertube.getEmbedPath();
Pattern link = Pattern.compile("(https?:\\/\\/[\\da-z\\.-]+\\.[a-z\\.]{2,10})\\/videos\\/embed\\/(\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12})$");
Matcher matcherLink = link.matcher(finalUrl);
if( matcherLink.find()) {
String url = matcherLink.group(1) + "/videos/watch/" + matcherLink.group(2);
b.putString("peertubeLinkToFetch", url);
b.putString("peertube_instance", matcherLink.group(1).replace("https://","").replace("http://",""));
b.putString("video_id", matcherLink.group(2));
if( !this.ownVideos) {
holder.peertube_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//For remote peertube instance
if (!peertube.getInstance().equals(Helper.getLiveInstance(context)))
CrossActions.doCrossProfile(context, account);
else {
Intent intent = new Intent(context, ShowAccountActivity.class);
Bundle b = new Bundle();
b.putBoolean("peertubeaccount", true);
b.putParcelable("account", peertube.getAccount());
intent.putExtras(b);
context.startActivity(intent);
}
}
intent.putExtras(b);
context.startActivity(intent);
}
});
});
holder.main_container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PeertubeActivity.class);
Bundle b = new Bundle();
if ((instance == null || instance.trim().length() == 0) && MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE)
instance = Helper.getLiveInstance(context);
String finalUrl = "https://" + instance + peertube.getEmbedPath();
Pattern link = Pattern.compile("(https?:\\/\\/[\\da-z\\.-]+\\.[a-z\\.]{2,10})\\/videos\\/embed\\/(\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12})$");
Matcher matcherLink = link.matcher(finalUrl);
if (matcherLink.find()) {
String url = matcherLink.group(1) + "/videos/watch/" + matcherLink.group(2);
b.putString("peertubeLinkToFetch", url);
b.putString("peertube_instance", matcherLink.group(1).replace("https://", "").replace("http://", ""));
b.putString("video_id", matcherLink.group(2));
}
intent.putExtras(b);
context.startActivity(intent);
}
});
}else{
holder.main_container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PeertubeEditUploadActivity.class);
Bundle b = new Bundle();
b.putString("video_id",peertube.getId());
intent.putExtras(b);
context.startActivity(intent);
}
});
}
}

View File

@ -111,6 +111,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
private String updatedBookMark;
private String lastReadToot;
private boolean ischannel;
private boolean ownVideos;
public DisplayStatusFragment(){
}
@ -132,6 +133,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
if (bundle != null) {
type = (RetrieveFeedsAsyncTask.Type) bundle.get("type");
targetedId = bundle.getString("targetedid", null);
ownVideos = bundle.getBoolean("ownvideos", false); //Peetube account watching its videos
tag = bundle.getString("tag", null);
showMediaOnly = bundle.getBoolean("showMediaOnly",false);
showPinned = bundle.getBoolean("showPinned",false);
@ -196,7 +198,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
if( remoteInstance != null && MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE) //if it's a Peertube account connected
remoteInstance = account.getInstance();
BaseMainActivity.displayPeertube = remoteInstance;
peertubeAdapater = new PeertubeAdapter(context, remoteInstance, this.peertubes);
peertubeAdapater = new PeertubeAdapter(context, remoteInstance, ownVideos, this.peertubes);
lv_status.setAdapter(peertubeAdapater);
}
mLayoutManager = new LinearLayoutManager(context);
@ -435,7 +437,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
this.peertubes.addAll(apiResponse.getPeertubes());
//If no item were inserted previously the adapter is created
if( previousPosition == 0) {
peertubeAdapater = new PeertubeAdapter(context, remoteInstance, this.peertubes);
peertubeAdapater = new PeertubeAdapter(context, remoteInstance, ownVideos, this.peertubes);
lv_status.setAdapter(peertubeAdapater);
}else
peertubeAdapater.notifyItemRangeInserted(previousPosition, apiResponse.getPeertubes().size());

View File

@ -23,4 +23,5 @@ import fr.gouv.etalab.mastodon.client.APIResponse;
public interface OnRetrievePeertubeInterface {
void onRetrievePeertube(APIResponse apiResponse);
void onRetrievePeertubeComments(APIResponse apiResponse);
void onRetrievePeertubeChannels(APIResponse apiResponse);
}