Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Luhmer <david-dev@live.de>2022-05-22 19:41:43 +0300
committerGitHub <noreply@github.com>2022-05-22 19:41:43 +0300
commite1c51f505464c8ed9133efa9aaff3ad5a26c8095 (patch)
treeffa3d194177eaca17c265729260fb1696f8591b0
parentf1956fd72e59c405e051ad460d10bbcee2d6bf96 (diff)
parent3d3599922b0d49f80c350ef8bb95333911e86ae7 (diff)
Merge pull request #1088 from nextcloud/fix-crashes-may-2022
fix several app crashed / update to 0.9.9.73
-rw-r--r--CHANGELOG.md10
-rw-r--r--News-Android-App/build.gradle4
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java31
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java32
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java10
-rw-r--r--build.gradle2
6 files changed, 59 insertions, 30 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 579eb24e..075b5f6d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,13 @@
+0.9.9.73 (Beta)
+---------------------
+- Fixed - <a href="https://github.com/nextcloud/news-android/issues/1061">#1061 App sometimes crashes on long tap on detail view</a>
+- Fixed several app crashes
+ - fixed database crashed by reducing the number of loaded items per page
+ - fixed crash when long tapping folders in navigation drawer
+ - fixed app crash when ui updates
+ - fixed crashes caused by swiping on articles in list view
+
+
0.9.9.72 (Beta)
---------------------
- Added - <a href="https://github.com/nextcloud/news-android/pull/1066">!1066 Support for Folder Management (Rename, Remove, Create) (thanks @proninyaroslav)</a>
diff --git a/News-Android-App/build.gradle b/News-Android-App/build.gradle
index 3b56e7b1..933b6e12 100644
--- a/News-Android-App/build.gradle
+++ b/News-Android-App/build.gradle
@@ -27,8 +27,8 @@ android {
vectorDrawables.useSupportLibrary = true
- versionCode 175
- versionName "0.9.9.72"
+ versionCode 176
+ versionName "0.9.9.73"
}
buildFeatures {
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java
index 12d342ad..73a8910f 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java
@@ -21,6 +21,14 @@
package de.luhmer.owncloudnewsreader;
+import static java.util.Objects.requireNonNull;
+import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_STARRED_ITEMS;
+import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_UNREAD_ITEMS;
+import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION;
+import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION_DEFAULT;
+import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION;
+import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION_DEFAULT;
+
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -76,14 +84,6 @@ import de.luhmer.owncloudnewsreader.helper.Search;
import de.luhmer.owncloudnewsreader.helper.StopWatch;
import io.reactivex.observers.DisposableObserver;
-import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_STARRED_ITEMS;
-import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_UNREAD_ITEMS;
-import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION;
-import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION_DEFAULT;
-import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION;
-import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION_DEFAULT;
-import static java.util.Objects.requireNonNull;
-
/**
* A fragment representing a single NewsReader detail screen. This fragment is
* either contained in a {@link NewsReaderListActivity} in two-pane mode (on
@@ -511,9 +511,7 @@ public class NewsReaderDetailFragment extends Fragment {
DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(NewsReaderDetailFragment.this.getContext());
SORT_DIRECTION sortDirection = getSortDirection(mPrefs);
boolean onlyUnreadItems = mPrefs.getBoolean(SettingsActivity.CB_SHOWONLYUNREAD_STRING, false);
- boolean onlyStarredItems = false;
- if (idFolder != null && idFolder == ALL_STARRED_ITEMS.getValue())
- onlyStarredItems = true;
+ boolean onlyStarredItems = idFolder != null && idFolder == ALL_STARRED_ITEMS.getValue();
String sqlSelectStatement = null;
if (idFeed != null) {
@@ -541,7 +539,7 @@ public class NewsReaderDetailFragment extends Fragment {
List<RssItem> items = dbConn.getCurrentRssItemView(0);
sw.stop();
- Log.v(TAG, "Time needed (init loading): " + sw.toString());
+ Log.v(TAG, "Time needed (init loading): " + sw);
return items;
}
@@ -581,6 +579,15 @@ public class NewsReaderDetailFragment extends Fragment {
initEdgeDistance();
}
+ if (e1 == null) {
+ Log.e(TAG, "motion event 1 is null");
+ return false;
+ }
+ if (e2 == null) {
+ Log.e(TAG, "motion event 2 is null");
+ return false;
+ }
+
if (mMarkAsReadWhileScrollingEnabled &&
e1.getX() > minLeftEdgeDistance && // only if gesture starts a bit away from left window edge
(e2.getY() - e1.getY()) < 0) { // and if swipe direction is upwards
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
index f88b165b..adb9fda6 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
@@ -617,13 +617,13 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
startDialogFragment(idFeed, false);
}
- private void startDialogFragment(long idFeed, Boolean isFolder) {
+ private void startDialogFragment(long id, Boolean isFolder) {
DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(getApplicationContext());
if (!isFolder) {
- String titel = dbConn.getFeedById(idFeed).getFeedTitle();
- String iconurl = dbConn.getFeedById(idFeed).getFaviconUrl();
- String feedurl = dbConn.getFeedById(idFeed).getLink();
+ String titel = dbConn.getFeedById(id).getFeedTitle();
+ String iconurl = dbConn.getFeedById(id).getFaviconUrl();
+ String feedurl = dbConn.getFeedById(id).getLink();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("news_reader_list_dialog");
@@ -632,11 +632,16 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
}
ft.addToBackStack(null);
- NewsReaderListDialogFragment fragment = NewsReaderListDialogFragment.newInstance(idFeed, titel, iconurl, feedurl);
+ NewsReaderListDialogFragment fragment = NewsReaderListDialogFragment.newInstance(id, titel, iconurl, feedurl);
fragment.setActivity(this);
fragment.show(ft, "news_reader_list_dialog");
} else {
- String label = dbConn.getFolderById(idFeed).getLabel();
+ Folder folder = dbConn.getFolderById(id);
+ if (folder == null) {
+ Log.e(TAG, "cannot find folder with id: " + id);
+ return;
+ }
+ String label = folder.getLabel();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("folder_options_dialog");
@@ -645,7 +650,7 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
}
ft.addToBackStack(null);
- FolderOptionsDialogFragment fragment = FolderOptionsDialogFragment.newInstance(idFeed, label);
+ FolderOptionsDialogFragment fragment = FolderOptionsDialogFragment.newInstance(id, label);
fragment.setActivity(this);
fragment.show(ft, "folder_options_dialog");
}
@@ -1091,10 +1096,15 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
}
private void resetUiAndStartSync() {
- getSlidingListFragment().reloadAdapter();
- updateCurrentRssView();
- startSync();
- getSlidingListFragment().bindUserInfoToUI();
+ NewsReaderListFragment nrlf = getSlidingListFragment();
+ if (nrlf != null) {
+ nrlf.reloadAdapter();
+ updateCurrentRssView();
+ startSync();
+ nrlf.bindUserInfoToUI();
+ } else {
+ Log.e(TAG, "resetUiAndStartSync - NewsReaderListFragment is not available")
+ }
}
private void UpdateListView() {
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java
index b2665c30..3711411c 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java
@@ -65,7 +65,7 @@ public class DatabaseConnectionOrm {
private final DaoSession daoSession;
- private final static int PageSize = 100;
+ private final static int PageSize = 25;
protected @Inject @Named("databaseFileName") String databasePath;
@@ -292,11 +292,13 @@ public class DatabaseConnectionOrm {
daoSession.getDatabase().execSQL(sql);
*/
+ // 100 causes android.database.sqlite.SQLiteBlobTooBigException on some devices
+ final int itemsPerIteration = 25;
+
WhereCondition whereCondition = new WhereCondition.StringCondition(RssItemDao.Properties.Id.columnName + " IN " +
"(SELECT " + CurrentRssItemViewDao.Properties.RssItemId.columnName + " FROM " + CurrentRssItemViewDao.TABLENAME + ")");
int iterationCount = 0;
- final int itemsPerIteration = 100;
List<RssItem> rssItemList;
do {
int offset = iterationCount * itemsPerIteration;
@@ -380,7 +382,7 @@ public class DatabaseConnectionOrm {
daoSession.getDatabase().execSQL(sql);
sw.stop();
- Log.v(TAG, "Time needed for marking all unread items as read: " + sw.toString());
+ Log.v(TAG, "Time needed for marking all unread items as read: " + sw);
}
public LazyList<RssItem> getAllUnreadRssItemsForDownloadWebPageService() {
@@ -640,7 +642,7 @@ public class DatabaseConnectionOrm {
});
sw.stop();
- Log.v(TAG, "Time needed for insert: " + sw.toString());
+ Log.v(TAG, "Time needed for insert: " + sw);
}
public String getUnreadItemsCountForSpecificFolder(SPECIAL_FOLDERS specialFolder) {
diff --git a/build.gradle b/build.gradle
index c334558e..4189901b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.1.2'
+ classpath 'com.android.tools.build:gradle:7.1.3'
}
}