diff options
author | stom79 <tschneider.ac@gmail.com> | 2019-01-08 16:24:02 +0100 |
---|---|---|
committer | stom79 <tschneider.ac@gmail.com> | 2019-01-08 16:24:02 +0100 |
commit | 4ea77d489a7b198cac63b45c15bcd361e0b45932 (patch) | |
tree | 009899bed42958ff478e71b5e0c7d3e00548d6b0 /app/src/main/java/fr/gouv | |
parent | e9e4f51d566f482fe76977d78cb12818315c907b (diff) |
Back end for edition of videos
Diffstat (limited to 'app/src/main/java/fr/gouv')
6 files changed, 295 insertions, 787 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java index 7ac61d8bd..4197bcf7d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeEditUploadActivity.java @@ -27,13 +27,18 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import es.dmoral.toasty.Toasty; import fr.gouv.etalab.mastodon.R; @@ -44,18 +49,24 @@ 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 mabbas007.tagsedittext.TagsEditText; +import static fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeInformationAsyncTask.peertubeInformation; import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; public class PeertubeEditUploadActivity extends BaseActivity implements OnRetrievePeertubeInterface { private Button set_upload_submit; - private Spinner set_upload_privacy, set_upload_channel; + private Spinner set_upload_privacy, set_upload_categories, set_upload_licenses, set_upload_languages, set_upload_channel; + private EditText p_video_title, p_video_description; + private TagsEditText p_video_tags; + private CheckBox set_upload_nsfw, set_upload_enable_comments; private TextView set_upload_file_name; private HashMap<String, String> channels; private String videoId; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -107,10 +118,99 @@ public class PeertubeEditUploadActivity extends BaseActivity implements OnRetrie setContentView(R.layout.activity_peertube_edit); - 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); + set_upload_privacy = findViewById(R.id.set_upload_privacy); + set_upload_channel = findViewById(R.id.set_upload_channel); + set_upload_categories = findViewById(R.id.set_upload_categories); + set_upload_licenses = findViewById(R.id.set_upload_licenses); + set_upload_languages = findViewById(R.id.set_upload_languages); + p_video_title = findViewById(R.id.p_video_title); + p_video_description = findViewById(R.id.p_video_description); + p_video_tags = findViewById(R.id.p_video_tags); + set_upload_nsfw = findViewById(R.id.set_upload_nsfw); + set_upload_enable_comments = findViewById(R.id.set_upload_enable_comments); + + + LinkedHashMap<Integer, String> categories = new LinkedHashMap<>(peertubeInformation.getCategories()); + LinkedHashMap<Integer, String> licences = new LinkedHashMap<>(peertubeInformation.getLicences()); + LinkedHashMap<Integer, String> privacies = new LinkedHashMap<>(peertubeInformation.getPrivacies()); + LinkedHashMap<String, String> languages = new LinkedHashMap<>(peertubeInformation.getLanguages()); + LinkedHashMap<String, String> translations = null; + if( peertubeInformation.getTranslations() != null) + translations = new LinkedHashMap<>(peertubeInformation.getTranslations()); + + //Populate catgories + String[] categoriesA = new String[categories.size()]; + Iterator it = categories.entrySet().iterator(); + int i = 0; + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if( translations == null ||translations.size() == 0 || !translations.containsKey((String)pair.getValue())) + categoriesA[i] = (String)pair.getValue(); + else + categoriesA[i] = translations.get((String)pair.getValue()); + it.remove(); + i++; + } + ArrayAdapter<String> adapterCatgories = new ArrayAdapter<>(PeertubeEditUploadActivity.this, + android.R.layout.simple_spinner_dropdown_item, categoriesA); + set_upload_categories.setAdapter(adapterCatgories); + + + + //Populate licenses + String[] licensesA = new String[licences.size()]; + it = licences.entrySet().iterator(); + i = 0; + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if( translations == null || translations.size() == 0 || !translations.containsKey((String)pair.getValue())) + licensesA[i] = (String)pair.getValue(); + else + licensesA[i] = translations.get((String)pair.getValue()); + it.remove(); + i++; + } + ArrayAdapter<String> adapterLicenses = new ArrayAdapter<>(PeertubeEditUploadActivity.this, + android.R.layout.simple_spinner_dropdown_item, licensesA); + set_upload_licenses.setAdapter(adapterLicenses); + + + //Populate languages + String[] languagesA = new String[languages.size()]; + it = languages.entrySet().iterator(); + i = 0; + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if( translations == null || translations.size() == 0 || !translations.containsKey((String)pair.getValue())) + languagesA[i] = (String)pair.getValue(); + else + languagesA[i] = translations.get((String)pair.getValue()); + it.remove(); + i++; + } + ArrayAdapter<String> adapterLanguages = new ArrayAdapter<>(PeertubeEditUploadActivity.this, + android.R.layout.simple_spinner_dropdown_item, languagesA); + set_upload_languages.setAdapter(adapterLanguages); + + + //Populate languages + String[] privaciesA = new String[privacies.size()]; + it = privacies.entrySet().iterator(); + i = 0; + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if( translations == null || translations.size() == 0 || !translations.containsKey((String)pair.getValue())) + privaciesA[i] = (String)pair.getValue(); + else + privaciesA[i] = translations.get((String)pair.getValue()); + it.remove(); + i++; + } + ArrayAdapter<String> adapterPrivacies = new ArrayAdapter<>(PeertubeEditUploadActivity.this, + android.R.layout.simple_spinner_dropdown_item, privaciesA); + set_upload_privacy.setAdapter(adapterPrivacies); + String peertubeInstance = Helper.getLiveInstance(getApplicationContext()); new RetrievePeertubeSingleAsyncTask(PeertubeEditUploadActivity.this, peertubeInstance, videoId, PeertubeEditUploadActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); @@ -135,6 +235,88 @@ public class PeertubeEditUploadActivity extends BaseActivity implements OnRetrie Peertube peertube = apiResponse.getPeertubes().get(0); new RetrievePeertubeChannelsAsyncTask(PeertubeEditUploadActivity.this, PeertubeEditUploadActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); //TODO: hydrate form + + String language = peertube.getLanguage(); + String license = peertube.getLicense(); + String description = peertube.getDescription(); + String privacy = peertube.getPrivacy(); + String category = peertube.getCategory(); + Account channel = peertube.getChannel(); + String title = peertube.getName(); + boolean commentEnabled = peertube.isCommentsEnabled(); + boolean isNSFW = peertube.isSensitive(); + + set_upload_enable_comments.setChecked(commentEnabled); + set_upload_nsfw.setChecked(isNSFW); + + p_video_title.setText(title); + p_video_description.setText(description); + + + LinkedHashMap<Integer, String> categories = new LinkedHashMap<>(peertubeInformation.getCategories()); + LinkedHashMap<Integer, String> licences = new LinkedHashMap<>(peertubeInformation.getLicences()); + LinkedHashMap<Integer, String> privacies = new LinkedHashMap<>(peertubeInformation.getPrivacies()); + LinkedHashMap<String, String> languages = new LinkedHashMap<>(peertubeInformation.getLanguages()); + LinkedHashMap<String, String> translations = null; + if( peertubeInformation.getTranslations() != null) + translations = new LinkedHashMap<>(peertubeInformation.getTranslations()); + + + int languagePosition = 0; + if( languages.containsValue(language)){ + Iterator it = languages.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if(pair.getValue().equals(language)) + break; + it.remove(); + languagePosition++; + } + } + int privacyPosition = 0; + if( privacies.containsValue(privacy)){ + Iterator it = privacies.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if(pair.getValue().equals(privacy)) + break; + it.remove(); + privacyPosition++; + } + } + int licensePosition = 0; + if( licences.containsValue(license)){ + Iterator it = licences.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if(pair.getValue().equals(license)) + break; + it.remove(); + licensePosition++; + } + } + int categoryPosition = 0; + if( categories.containsValue(category)){ + Iterator it = categories.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + if(pair.getValue().equals(category)) + break; + it.remove(); + categoryPosition++; + } + } + + set_upload_privacy.setSelection(privacyPosition); + set_upload_languages.setSelection(languagePosition); + set_upload_licenses.setSelection(licensePosition); + set_upload_categories.setSelection(categoryPosition); + + List<String> tags = peertube.getTags(); + if( tags != null && tags.size() > 0) { + String[] tagsA = tags.toArray(new String[tags.size()]); + p_video_tags.setTags(tagsA); + } } @Override diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java index f32f2ea05..fd7478d3f 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java @@ -1868,6 +1868,8 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount private void restoreToot(long id){ SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); StoredStatus draft = new StatusStoredDAO(TootActivity.this, db).getStatus(id); + if( draft == null) + return; Status status = draft.getStatus(); //Retrieves attachments if( removed ){ diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java index 14d57b6e0..950ace0b7 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrievePeertubeSingleAsyncTask.java @@ -54,11 +54,16 @@ public class RetrievePeertubeSingleAsyncTask extends AsyncTask<Void, Void, Void> @Override protected Void doInBackground(Void... params) { - API api = new API(this.contextReference.get()); - apiResponse = api.getSinglePeertube(this.instanceName, videoId); - if(MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE && apiResponse.getPeertubes() != null && apiResponse.getPeertubes().size() > 0) { - String rate = new PeertubeAPI(this.contextReference.get()).getRating(videoId); - apiResponse.getPeertubes().get(0).setMyRating(rate); + if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) { + API api = new API(this.contextReference.get()); + apiResponse = api.getSinglePeertube(this.instanceName, videoId); + }else if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE){ + PeertubeAPI peertubeAPI = new PeertubeAPI(this.contextReference.get()); + apiResponse = peertubeAPI.getSinglePeertube(this.instanceName, videoId); + if (apiResponse.getPeertubes() != null && apiResponse.getPeertubes().size() > 0) { + String rate = new PeertubeAPI(this.contextReference.get()).getRating(videoId); + apiResponse.getPeertubes().get(0).setMyRating(rate); + } } return null; } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java index 643c0e06d..49d15d2bf 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Peertube.java @@ -40,12 +40,15 @@ public class Peertube { private int duration; private String instance; private Account account; + private Account channel; private List<String> resolution; + private List<String> tags; private boolean commentsEnabled; private boolean sensitive; private String category; private String license; private String language; + private String privacy; private String myRating = "none"; private JSONObject cache; @@ -272,4 +275,28 @@ public class Peertube { public void setMyRating(String myRating) { this.myRating = myRating; } + + public Account getChannel() { + return channel; + } + + public void setChannel(Account channel) { + this.channel = channel; + } + + public String getPrivacy() { + return privacy; + } + + public void setPrivacy(String privacy) { + this.privacy = privacy; + } + + public List<String> getTags() { + return tags; + } + + public void setTags(List<String> tags) { + this.tags = tags; + } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java index c0e33c6df..265b6ab85 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/PeertubeInformation.java @@ -1,8 +1,6 @@ package fr.gouv.etalab.mastodon.client.Entities; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; +import java.util.LinkedHashMap; /* Copyright 2019 Thomas Schneider * @@ -23,15 +21,15 @@ import java.util.Map; 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; + private LinkedHashMap<Integer, String> categories; + private LinkedHashMap<String, String> languages; + private LinkedHashMap<Integer, String> licences; + private LinkedHashMap<Integer, String> privacies; + private LinkedHashMap<String, String> translations; - public static final Map<String, String> langueMapped; + public static final LinkedHashMap<String, String> langueMapped; static { - HashMap<String, String> aMap = new HashMap<>(); + LinkedHashMap<String, String> aMap = new LinkedHashMap<>(); aMap.put("ca", "ca-ES"); aMap.put("de", "de-DE"); aMap.put("en", "en-US"); @@ -45,47 +43,47 @@ public class PeertubeInformation { aMap.put("cs", "cs-CZ"); aMap.put("zh-CN", "zh-Hans-CN"); aMap.put("zh-TW", "zh-Hans-TW"); - langueMapped = Collections.unmodifiableMap(aMap); + langueMapped = aMap; } - public HashMap<String, String> getTranslations() { + public LinkedHashMap<String, String> getTranslations() { return translations; } - public void setTranslations(HashMap<String, String> translations) { + public void setTranslations(LinkedHashMap<String, String> translations) { this.translations = translations; } - public HashMap<Integer, String> getCategories() { + public LinkedHashMap<Integer, String> getCategories() { return categories; } - public void setCategories(HashMap<Integer, String> categories) { + public void setCategories(LinkedHashMap<Integer, String> categories) { this.categories = categories; } - public HashMap<String, String> getLanguages() { + public LinkedHashMap<String, String> getLanguages() { return languages; } - public void setLanguages(HashMap<String, String> languages) { + public void setLanguages(LinkedHashMap<String, String> languages) { this.languages = languages; } - public HashMap<Integer, String> getLicences() { + public LinkedHashMap<Integer, String> getLicences() { return licences; } - public void setLicences(HashMap<Integer, String> licences) { + public void setLicences(LinkedHashMap<Integer, String> licences) { this.licences = licences; } - public HashMap<Integer, String> getPrivacies() { + public LinkedHashMap<Integer, String> getPrivacies() { return privacies; } - public void setPrivacies(HashMap<Integer, String> privacies) { + public void setPrivacies(LinkedHashMap<Integer, String> privacies) { this.privacies = privacies; } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java index 6624eb9b9..dc6aed3e3 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java @@ -40,7 +40,6 @@ import java.util.Map; import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.client.Entities.Account; -import fr.gouv.etalab.mastodon.client.Entities.Application; import fr.gouv.etalab.mastodon.client.Entities.Attachment; import fr.gouv.etalab.mastodon.client.Entities.Card; import fr.gouv.etalab.mastodon.client.Entities.Conversation; @@ -50,14 +49,11 @@ import fr.gouv.etalab.mastodon.client.Entities.Filters; import fr.gouv.etalab.mastodon.client.Entities.HowToVideo; import fr.gouv.etalab.mastodon.client.Entities.Instance; 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; -import fr.gouv.etalab.mastodon.client.Entities.Tag; import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.sqlite.AccountDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; @@ -216,7 +212,7 @@ public class PeertubeAPI { String response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/categories"), 60, null, null); JSONObject categories = new JSONObject(response); - HashMap<Integer, String> _pcategories = new HashMap<>(); + LinkedHashMap<Integer, String> _pcategories = new LinkedHashMap<>(); for( int i = 1 ; i <= categories.length() ; i++){ _pcategories.put(i, categories.getString(String.valueOf(i))); @@ -225,7 +221,7 @@ public class PeertubeAPI { response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/languages"), 60, null, null); JSONObject languages = new JSONObject(response); - HashMap<String, String> _languages = new HashMap<>(); + LinkedHashMap<String, String> _languages = new LinkedHashMap<>(); Iterator<String> iter = languages.keys(); while (iter.hasNext()) { String key = iter.next(); @@ -237,7 +233,7 @@ public class PeertubeAPI { response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/privacies"), 60, null, null); JSONObject privacies = new JSONObject(response); - HashMap<Integer, String> _pprivacies = new HashMap<>(); + LinkedHashMap<Integer, String> _pprivacies = new LinkedHashMap<>(); for( int i = 1 ; i <= privacies.length() ; i++){ _pprivacies.put(i, privacies.getString(String.valueOf(i))); @@ -247,7 +243,7 @@ public class PeertubeAPI { response = new HttpsConnection(context).get(getAbsoluteUrl("/videos/licences"), 60, null, null); JSONObject licences = new JSONObject(response); - HashMap<Integer, String> _plicences = new HashMap<>(); + LinkedHashMap<Integer, String> _plicences = new LinkedHashMap<>(); for( int i = 1 ; i <= licences.length() ; i++){ _plicences.put(i, licences.getString(String.valueOf(i))); @@ -256,22 +252,24 @@ public class PeertubeAPI { String instance = Helper.getLiveInstance(context); - String lang; + String lang = null; 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) {} + + if( lang != null && !lang.startsWith("en")) { + response = new HttpsConnection(context).get(String.format("https://" + instance + "/client/locales/%s/server.json", lang), 60, null, null); + JSONObject translations = new JSONObject(response); + LinkedHashMap<String, String> _translations = new LinkedHashMap<>(); + 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); } - peertubeInformation.setTranslations(_translations); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); @@ -595,173 +593,6 @@ public class PeertubeAPI { } - /** - * Retrieves one status *synchronously* - * - * @param statusId String Id of the status - * @return APIResponse - */ - public APIResponse getStatusbyId(String statusId) { - statuses = new ArrayList<>(); - - try { - HttpsConnection httpsConnection = new HttpsConnection(context); - String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s", statusId)), 60, null, prefKeyOauthTokenT); - Status status = parseStatuses(context, new JSONObject(response)); - statuses.add(status); - } catch (HttpsConnection.HttpsConnectionException e) { - setError(e.getStatusCode(), e); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { - e.printStackTrace(); - } catch (JSONException e) { - e.printStackTrace(); - } - apiResponse.setStatuses(statuses); - return apiResponse; - } - - /** - * Retrieves the context of status with replies *synchronously* - * - * @param statusId Id of the status - * @return List<Status> - */ - public fr.gouv.etalab.mastodon.client.Entities.Context getStatusContext(String statusId) { - fr.gouv.etalab.mastodon.client.Entities.Context statusContext = new fr.gouv.etalab.mastodon.client.Entities.Context(); - try { - HttpsConnection httpsConnection = new HttpsConnection(context); - String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s/context", statusId)), 60, null, prefKeyOauthTokenT); - statusContext = parseContext(new JSONObject(response)); - } catch (HttpsConnection.HttpsConnectionException e) { - setError(e.getStatusCode(), e); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { - e.printStackTrace(); - } catch (JSONException e) { - e.printStackTrace(); - } - return statusContext; - } - - - /** - * Retrieves direct timeline for the account *synchronously* - * @param max_id String id max - * @return APIResponse - */ - public APIResponse getDirectTimeline( String max_id) { - return getDirectTimeline(max_id, null, tootPerPage); - } - - /** - * Retrieves conversation timeline for the account *synchronously* - * @param max_id String id max - * @return APIResponse - */ - public APIResponse getConversationTimeline( String max_id) { - return getConversationTimeline(max_id, null, tootPerPage); - } - - /** - * Retrieves direct timeline for the account since an Id value *synchronously* - * @return APIResponse - */ - public APIResponse getConversationTimelineSinceId(String since_id) { - return getConversationTimeline(null, since_id, tootPerPage); - } - - /** - * Retrieves conversation timeline for the account *synchronously* - * @param max_id String id max - * @param since_id String since the id - * @param limit int limit - max value 40 - * @return APIResponse - */ - private APIResponse getConversationTimeline(String max_id, String since_id, int limit) { - - HashMap<String, String> params = new HashMap<>(); - if (max_id != null) - params.put("max_id", max_id); - if (since_id != null) - params.put("since_id", since_id); - if (0 > limit || limit > 80) - limit = 80; - params.put("limit",String.valueOf(limit)); - conversations = new ArrayList<>(); - try { - HttpsConnection httpsConnection = new HttpsConnection(context); - String response = httpsConnection.get(getAbsoluteUrl("/conversations"), 60, params, prefKeyOauthTokenT); - apiResponse.setSince_id(httpsConnection.getSince_id()); - apiResponse.setMax_id(httpsConnection.getMax_id()); - conversations = parseConversations(new JSONArray(response)); - } catch (HttpsConnection.HttpsConnectionException e) { - setError(e.getStatusCode(), e); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { - e.printStackTrace(); - } catch (JSONException e) { - e.printStackTrace(); - } - apiResponse.setConversations(conversations); - return apiResponse; - } - - /** - * Retrieves direct timeline for the account since an Id value *synchronously* - * @return APIResponse - */ - public APIResponse getDirectTimelineSinceId(String since_id) { - return getDirectTimeline(null, since_id, tootPerPage); - } - - /** - * Retrieves direct timeline for the account *synchronously* - * @param max_id String id max - * @param since_id String since the id - * @param limit int limit - max value 40 - * @return APIResponse - */ - private APIResponse getDirectTimeline(String max_id, String since_id, int limit) { - - HashMap<String, String> params = new HashMap<>(); - if (max_id != null) - params.put("max_id", max_id); - if (since_id != null) - params.put("since_id", since_id); - if (0 > limit || limit > 80) - limit = 80; - params.put("limit",String.valueOf(limit)); - statuses = new ArrayList<>(); - try { - HttpsConnection httpsConnection = new HttpsConnection(context); - String response = httpsConnection.get(getAbsoluteUrl("/timelines/direct"), 60, params, prefKeyOauthTokenT); - apiResponse.setSince_id(httpsConnection.getSince_id()); - apiResponse.setMax_id(httpsConnection.getMax_id()); - statuses = parseStatuses(context, new JSONArray(response)); - } catch (HttpsConnection.HttpsConnectionException e) { - setError(e.getStatusCode(), e); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { - e.printStackTrace(); - } catch (JSONException e) { - e.printStackTrace(); - } - apiResponse.setStatuses(statuses); - return apiResponse; - } /** @@ -1273,78 +1104,6 @@ public class PeertubeAPI { - /** - * Retrieves notifications for the authenticated account *synchronously* - * @param max_id String id max - * @param since_id String since the id - * @param limit int limit - max value 40 - * @return APIResponse - */ - private APIResponse getNotifications(String max_id, String since_id, int limit, boolean display){ - - HashMap<String, String> params = new HashMap<>(); - if( max_id != null ) - params.put("max_id", max_id); - if( since_id != null ) - params.put("since_id", since_id); - if( 0 > limit || limit > 30) - limit = 30; - params.put("limit",String.valueOf(limit)); - - final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - boolean notif_follow, notif_add, notif_mention, notif_share; - if( display) { - notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW_FILTER, true); - notif_add = sharedpreferences.getBoolean(Helper.SET_NOTIF_ADD_FILTER, true); - notif_mention = sharedpreferences.getBoolean(Helper.SET_NOTIF_MENTION_FILTER, true); - notif_share = sharedpreferences.getBoolean(Helper.SET_NOTIF_SHARE_FILTER, true); - }else{ - notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW, true); - notif_add = sharedpreferences.getBoolean(Helper.SET_NOTIF_ADD, true); - notif_mention = sharedpreferences.getBoolean(Helper.SET_NOTIF_MENTION, true); - notif_share = sharedpreferences.getBoolean(Helper.SET_NOTIF_SHARE, true); - } - StringBuilder parameters = new StringBuilder(); - - if( !notif_follow ) - parameters.append("exclude_types[]=").append("follow").append("&"); - if( !notif_add ) - parameters.append("exclude_types[]=").append("favourite").append("&"); - if( !notif_share ) - parameters.append("exclude_types[]=").append("reblog").append("&"); - if( !notif_mention ) - parameters.append("exclude_types[]=").append("mention").append("&"); - if( parameters.length() > 0) { - parameters = new StringBuilder(parameters.substring(0, parameters.length() - 1).substring(16)); - params.put("exclude_types[]", parameters.toString()); - } - - - List<Notification> notifications = new ArrayList<>(); - - try { - HttpsConnection httpsConnection = new HttpsConnection(context); - String response = httpsConnection.get(getAbsoluteUrl("/notifications"), 60, params, prefKeyOauthTokenT); - apiResponse.setSince_id(httpsConnection.getSince_id()); - apiResponse.setMax_id(httpsConnection.getMax_id()); - notifications = parseNotificationResponse(new JSONArray(response)); - } catch (HttpsConnection.HttpsConnectionException e) { - setError(e.getStatusCode(), e); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { - e.printStackTrace(); - } catch (JSONException e) { - e.printStackTrace(); - } - apiResponse.setNotifications(notifications); - return apiResponse; - } - - - /** * Changes media description @@ -1378,39 +1137,6 @@ public class PeertubeAPI { return attachment; } - /** - * Retrieves Accounts and feeds when searching *synchronously* - * - * @param query String search - * @return List<Account&g |