From 775e4fe800cec7c3d8a7680d0afa2973907ea46e Mon Sep 17 00:00:00 2001 From: tom79 Date: Tue, 22 Oct 2019 18:10:20 +0200 Subject: Fix Peertube discover --- .../fedilab/android/activities/TootActivity.java | 94 ++++++++++++---------- .../asynctasks/UpdateAccountInfoAsyncTask.java | 3 + .../app/fedilab/android/client/PeertubeAPI.java | 83 ++++++++----------- 3 files changed, 88 insertions(+), 92 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/activities/TootActivity.java b/app/src/main/java/app/fedilab/android/activities/TootActivity.java index df10e6353..3df8dd2b5 100644 --- a/app/src/main/java/app/fedilab/android/activities/TootActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/TootActivity.java @@ -2227,58 +2227,66 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, createAndSendToot(tootContent, content_type, timestamp); } else { splitToot = Helper.splitToots(toot_content.getText().toString().trim(), split_toot_size, true); - tootContent = splitToot.get(0); - stepSpliToot = 1; + if( splitToot.size() > 0 ) { + tootContent = splitToot.get(0); + stepSpliToot = 1; + AlertDialog.Builder builderInner = new AlertDialog.Builder(TootActivity.this, style); + builderInner.setTitle(R.string.message_preview); - AlertDialog.Builder builderInner = new AlertDialog.Builder(TootActivity.this, style); - builderInner.setTitle(R.string.message_preview); + View preview = getLayoutInflater().inflate(R.layout.popup_message_preview, new LinearLayout(getApplicationContext()), false); + builderInner.setView(preview); - View preview = getLayoutInflater().inflate(R.layout.popup_message_preview, new LinearLayout(getApplicationContext()), false); - builderInner.setView(preview); - - //Text for report - final TextView textView = preview.findViewById(R.id.preview); - textView.setText(""); - final SwitchCompat report_mention = preview.findViewById(R.id.report_mention); - int finalSplit_toot_size = split_toot_size; - report_mention.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - splitToot = Helper.splitToots(toot_content.getText().toString().trim(), finalSplit_toot_size, isChecked); - textView.setText(""); - int inc = 0; - for(String prev: splitToot){ - if( inc < splitToot.size()-1) { - textView.setText(textView.getText() + prev + "\n----------\n"); + //Text for report + final TextView textView = preview.findViewById(R.id.preview); + textView.setText(""); + final SwitchCompat report_mention = preview.findViewById(R.id.report_mention); + int finalSplit_toot_size = split_toot_size; + report_mention.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + splitToot = Helper.splitToots(toot_content.getText().toString().trim(), finalSplit_toot_size, isChecked); + textView.setText(""); + int inc = 0; + for (String prev : splitToot) { + if (inc < splitToot.size() - 1) { + textView.setText(textView.getText() + prev + "\n----------\n"); + } } } + }); + int inc = 0; + for (String prev : splitToot) { + if (inc < splitToot.size() - 1) { + textView.setText(textView.getText() + prev + "\n----------\n"); + } } - }); - int inc = 0; - for(String prev: splitToot){ - if( inc < splitToot.size()-1) { - textView.setText(textView.getText() + prev + "\n----------\n"); - } - } - builderInner.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - toot_it.setEnabled(true); - dialog.dismiss(); - } - }); - builderInner.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - createAndSendToot(tootContent, content_type, timestamp); - dialog.dismiss(); + builderInner.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + toot_it.setEnabled(true); + dialog.dismiss(); + } + }); + builderInner.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + createAndSendToot(tootContent, content_type, timestamp); + dialog.dismiss(); + } + }); + AlertDialog alertDialog = builderInner.create(); + alertDialog.show(); + }else{ //Failed to split the toot. + if (!displayWYSIWYG()) { + tootContent = toot_content.getText().toString().trim(); + } else { + tootContent = wysiwyg.getContentAsHTML(); } - }); - AlertDialog alertDialog = builderInner.create(); - alertDialog.show(); + createAndSendToot(tootContent, content_type, timestamp); + } } diff --git a/app/src/main/java/app/fedilab/android/asynctasks/UpdateAccountInfoAsyncTask.java b/app/src/main/java/app/fedilab/android/asynctasks/UpdateAccountInfoAsyncTask.java index 9c7e245b1..0d66ea125 100644 --- a/app/src/main/java/app/fedilab/android/asynctasks/UpdateAccountInfoAsyncTask.java +++ b/app/src/main/java/app/fedilab/android/asynctasks/UpdateAccountInfoAsyncTask.java @@ -69,6 +69,9 @@ public class UpdateAccountInfoAsyncTask extends AsyncTask { @Override protected Void doInBackground(Void... params) { Account account; + if( this.contextReference == null){ + return null; + } if (social == SOCIAL.MASTODON || social == SOCIAL.PIXELFED) { account = new API(this.contextReference.get(), instance, null).verifyCredentials(); InstanceNodeInfo info = new API(this.contextReference.get(), instance, null).getRealNodeInfo(this.instance); diff --git a/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java b/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java index 8ddd756f8..c228565bc 100644 --- a/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java +++ b/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java @@ -17,6 +17,7 @@ package app.fedilab.android.client; import android.content.Context; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; +import android.util.Log; import org.json.JSONArray; import org.json.JSONException; @@ -901,65 +902,49 @@ public class PeertubeAPI { try { HttpsConnection httpsConnection = new HttpsConnection(context, this.instance); String response = httpsConnection.get(getAbsoluteUrl(action), 60, params, prefKeyOauthTokenT); + // Helper.largeLog(response); if (!action.equals("/overviews/videos")) { JSONArray values = new JSONObject(response).getJSONArray("data"); peertubes = parsePeertube(values); } else { - JSONArray videoA = new JSONObject(response).getJSONArray("categories"); - JSONArray values = videoA.getJSONObject(0).getJSONArray("videos"); - List peertubes1 = parsePeertube(values); - if (peertubes1 != null && peertubes1.size() > 0) { - peertubes1.get(0).setHeaderType("categories"); - peertubes1.get(0).setHeaderTypeValue(videoA.getJSONObject(0).getJSONObject("category").getString("label")); - peertubes.addAll(peertubes1); - } - values = videoA.getJSONObject(1).getJSONArray("videos"); - List peertubes2 = parsePeertube(values); - if (peertubes2 != null && peertubes2.size() > 0) { - peertubes2.get(0).setHeaderType("categories"); - peertubes2.get(0).setHeaderTypeValue(videoA.getJSONObject(1).getJSONObject("category").getString("label")); - peertubes.addAll(peertubes2); + JSONArray categories = new JSONObject(response).getJSONArray("categories"); + JSONArray channels = new JSONObject(response).getJSONArray("channels"); + JSONArray tags = new JSONObject(response).getJSONArray( "tags"); + + for (int i = 0; i < categories.length(); i++) { + JSONArray categoriesVideos = categories.getJSONObject(i).getJSONArray("videos"); + List peertubeCategories = parsePeertube(categoriesVideos); + if (peertubeCategories != null && peertubeCategories.size() > 0) { + peertubeCategories.get(0).setHeaderType("categories"); + peertubeCategories.get(0).setHeaderTypeValue(categories.getJSONObject(i).getJSONObject("category").getString("label")); + peertubes.addAll(peertubeCategories); + } } - videoA = new JSONObject(response).getJSONArray("tags"); - values = videoA.getJSONObject(0).getJSONArray("videos"); - List peertubes5 = parsePeertube(values); - if (peertubes5 != null && peertubes5.size() > 0) { - peertubes5.get(0).setHeaderType("tags"); - peertubes5.get(0).setHeaderTypeValue(videoA.getJSONObject(0).getString("tag")); - peertubes.addAll(peertubes5); - } - values = videoA.getJSONObject(1).getJSONArray("videos"); - List peertubes6 = parsePeertube(values); - if (peertubes6 != null && peertubes6.size() > 0) { - peertubes6.get(0).setHeaderType("tags"); - peertubes6.get(0).setHeaderTypeValue(videoA.getJSONObject(1).getString("tag")); - peertubes.addAll(peertubes6); - } - videoA = new JSONObject(response).getJSONArray("channels"); - values = videoA.getJSONObject(0).getJSONArray("videos"); - List peertubes3 = parsePeertube(values); - if (peertubes3 != null && peertubes3.size() > 0) { - peertubes3.get(0).setHeaderType("channels"); - peertubes3.get(0).setHeaderTypeValue(videoA.getJSONObject(0).getJSONObject("channel").getString("displayName")); - peertubes.addAll(peertubes3); + for (int i = 0; i < channels.length(); i++) { + JSONArray channelsVideos = channels.getJSONObject(i).getJSONArray("videos"); + List peertubeChannels = parsePeertube(channelsVideos); + if (peertubeChannels != null && peertubeChannels.size() > 0) { + peertubeChannels.get(0).setHeaderType("channels"); + peertubeChannels.get(0).setHeaderTypeValue(channels.getJSONObject(i).getJSONObject("channel").getString("displayName")); + peertubes.addAll(peertubeChannels); + } } - values = videoA.getJSONObject(1).getJSONArray("videos"); - List peertubes4 = parsePeertube(values); - if (peertubes4 != null && peertubes4.size() > 0) { - peertubes4.get(0).setHeaderType("channels"); - peertubes4.get(0).setHeaderTypeValue(videoA.getJSONObject(1).getJSONObject("channel").getString("displayName")); - peertubes.addAll(peertubes4); + + for (int i = 0; i < tags.length(); i++) { + JSONArray tagsVideos = tags.getJSONObject(i).getJSONArray("videos"); + List peertubeTags = parsePeertube(tagsVideos); + if (peertubeTags != null && peertubeTags.size() > 0) { + peertubeTags.get(0).setHeaderType("tags"); + peertubeTags.get(0).setHeaderTypeValue(tags.getJSONObject(i).getString("tag")); + peertubes.addAll(peertubeTags); + } } + + } - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { - e.printStackTrace(); - } catch (JSONException e) { + } catch (NoSuchAlgorithmException | IOException | KeyManagementException | JSONException e) { e.printStackTrace(); } apiResponse.setPeertubes(peertubes); -- cgit v1.2.3