From 2f909d5ffa54af344793a6f7d73a0d211f72b4dc Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 12 Sep 2020 10:19:49 +0200 Subject: [PATCH] Fix some crashes --- .../app/fedilab/fedilabtube/PlaylistsActivity.java | 6 ++---- .../app/fedilab/fedilabtube/client/PeertubeAPI.java | 12 +++++++++--- .../fedilab/fedilabtube/drawer/PeertubeAdapter.java | 2 +- .../fedilabtube/sqlite/PeertubeFavoritesDAO.java | 4 +++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/app/fedilab/fedilabtube/PlaylistsActivity.java b/app/src/main/java/app/fedilab/fedilabtube/PlaylistsActivity.java index cb82e1c..63f68b8 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/PlaylistsActivity.java +++ b/app/src/main/java/app/fedilab/fedilabtube/PlaylistsActivity.java @@ -53,6 +53,7 @@ public class PlaylistsActivity extends AppCompatActivity { private boolean firstLoad; private boolean flag_loading; private PeertubeAdapter peertubeAdapter; + private PlaylistsVM viewModel; @Override protected void onCreate(Bundle savedInstanceState) { @@ -100,7 +101,7 @@ public class PlaylistsActivity extends AppCompatActivity { setTitle(playlist.getDisplayName()); - + viewModel = new ViewModelProvider(PlaylistsActivity.this).get(PlaylistsVM.class); lv_playlist.addOnScrollListener(new RecyclerView.OnScrollListener() { public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { int firstVisibleItem = mLayoutManager.findFirstVisibleItemPosition(); @@ -110,7 +111,6 @@ public class PlaylistsActivity extends AppCompatActivity { if (firstVisibleItem + visibleItemCount == totalItemCount) { if (!flag_loading) { flag_loading = true; - PlaylistsVM viewModel = new ViewModelProvider(PlaylistsActivity.this).get(PlaylistsVM.class); viewModel.manage(GET_LIST_VIDEOS, playlist, null, max_id).observe(PlaylistsActivity.this, apiResponse -> manageVIewPlaylists(PlaylistsVM.action.GET_LIST_VIDEOS, apiResponse)); nextElementLoader.setVisibility(View.VISIBLE); } @@ -127,11 +127,9 @@ public class PlaylistsActivity extends AppCompatActivity { firstLoad = true; flag_loading = true; swiped = true; - PlaylistsVM viewModel = new ViewModelProvider(PlaylistsActivity.this).get(PlaylistsVM.class); viewModel.manage(GET_LIST_VIDEOS, playlist, null, null).observe(PlaylistsActivity.this, apiResponse -> manageVIewPlaylists(PlaylistsVM.action.GET_LIST_VIDEOS, apiResponse)); }); - PlaylistsVM viewModel = new ViewModelProvider(PlaylistsActivity.this).get(PlaylistsVM.class); viewModel.manage(GET_LIST_VIDEOS, playlist, null, null).observe(PlaylistsActivity.this, apiResponse -> manageVIewPlaylists(PlaylistsVM.action.GET_LIST_VIDEOS, apiResponse)); } diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeAPI.java b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeAPI.java index 5090952..d0adf85 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeAPI.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeAPI.java @@ -228,12 +228,14 @@ public class PeertubeAPI { */ public static Peertube parsePeertube(JSONObject resobj) { Peertube peertube = new Peertube(); - if (resobj.has("video")) { + if (resobj.has("video") && !resobj.isNull("video")) { try { resobj = resobj.getJSONObject("video"); } catch (JSONException e) { e.printStackTrace(); } + } else { + return null; } try { peertube.setId(resobj.getString("id")); @@ -271,7 +273,11 @@ public class PeertubeAPI { LinkedHashMap license = new LinkedHashMap<>(); LinkedHashMap privacy = new LinkedHashMap<>(); category.put(resobj.getJSONObject("category").getInt("id"), resobj.getJSONObject("category").getString("label")); - license.put(resobj.getJSONObject("licence").getInt("id"), resobj.getJSONObject("licence").getString("label")); + if (!resobj.getJSONObject("licence").isNull("id")) { + license.put(resobj.getJSONObject("licence").getInt("id"), resobj.getJSONObject("licence").getString("label")); + } else { + license.put(1, "Unknown"); + } privacy.put(resobj.getJSONObject("privacy").getInt("id"), resobj.getJSONObject("privacy").getString("label")); langue.put(resobj.getJSONObject("language").getString("id"), resobj.getJSONObject("language").getString("label")); peertube.setCategory(category); @@ -1989,7 +1995,7 @@ public class PeertubeAPI { JSONObject resobj = jsonArray.getJSONObject(i); Peertube peertube = parsePeertube(resobj); i++; - if (peertube.getName() == null || !peertube.getName().toLowerCase().contains("youtube video downloader")) { + if (peertube != null && (peertube.getName() == null || !peertube.getName().toLowerCase().contains("youtube video downloader"))) { peertubes.add(peertube); } } diff --git a/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java b/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java index 2e8462f..1a7e5fc 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java +++ b/app/src/main/java/app/fedilab/fedilabtube/drawer/PeertubeAdapter.java @@ -72,7 +72,7 @@ public class PeertubeAdapter extends RecyclerView.Adapter