when swiping don't clean startup counter entirely. just don't count last startup

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java    | 11 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java |  4 
2 files changed, 10 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java 🔗

@@ -1328,9 +1328,14 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 		return count >= Config.FREQUENT_RESTARTS_THRESHOLD;
 	}
 
-	public void clearStartTimeCounter() {
-		Log.d(Config.LOGTAG,"resetting start time counter");
+	public void clearStartTimeCounter(boolean justOne) {
 		SQLiteDatabase db = this.getWritableDatabase();
-		db.execSQL("delete from "+START_TIMES_TABLE);
+		if (justOne) {
+			db.execSQL("delete from "+START_TIMES_TABLE+" where timestamp in (select timestamp from "+START_TIMES_TABLE+" order by timestamp desc limit 1)");
+			Log.d(Config.LOGTAG,"do not count start up after being swiped away");
+		} else {
+			Log.d(Config.LOGTAG,"resetting start time counter");
+			db.execSQL("delete from " + START_TIMES_TABLE);
+		}
 	}
 }

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -978,7 +978,7 @@ public class XmppConnectionService extends Service {
 
 	private void logoutAndSave(boolean stop) {
 		int activeAccounts = 0;
-		databaseBackend.clearStartTimeCounter(); // regular swipes don't count towards restart counter
+		databaseBackend.clearStartTimeCounter(true); // regular swipes don't count towards restart counter
 		for (final Account account : accounts) {
 			if (account.getStatus() != Account.State.DISABLED) {
 				activeAccounts++;
@@ -3611,7 +3611,7 @@ public class XmppConnectionService extends Service {
 		mDatabaseExecutor.execute(new Runnable() {
 			@Override
 			public void run() {
-				databaseBackend.clearStartTimeCounter();
+				databaseBackend.clearStartTimeCounter(false);
 			}
 		});
 	}