From d66c257370b71267a2329e70a06e31bbaa8fc9d6 Mon Sep 17 00:00:00 2001
From: Thomas <tschneider.ac@gmail.com>
Date: Sat, 3 Dec 2022 18:40:00 +0100
Subject: [PATCH] Some fixes

---
 app/build.gradle                              |  4 +-
 app/src/main/assets/release_notes/notes.json  |  5 ++
 .../android/client/entities/app/Pinned.java   | 13 ++++-
 .../android/helper/PinnedTimelineHelper.java  | 50 +++++++++++--------
 .../metadata/android/en/changelogs/437.txt    | 13 +++++
 5 files changed, 60 insertions(+), 25 deletions(-)
 create mode 100644 src/fdroid/fastlane/metadata/android/en/changelogs/437.txt

diff --git a/app/build.gradle b/app/build.gradle
index 6aa31309..8e6c41d1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
     defaultConfig {
         minSdk 21
         targetSdk 32
-        versionCode 436
-        versionName "3.9.1"
+        versionCode 437
+        versionName "3.9.2"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
     flavorDimensions "default"
diff --git a/app/src/main/assets/release_notes/notes.json b/app/src/main/assets/release_notes/notes.json
index aece7128..59424c1d 100644
--- a/app/src/main/assets/release_notes/notes.json
+++ b/app/src/main/assets/release_notes/notes.json
@@ -1,4 +1,9 @@
 [
+  {
+    "version": "3.9.2",
+    "code": "437",
+    "note": "Added:\n- New design with 5 themes\n\nChanged:\n- Remove built-in browser support\n- Fit preview image displays images vertically\n- Add counters next to images\n\nFixed:\n- Jumps in timelines\n- Replies to wrong messages with followed instances\n- Bug with delete&redraft with a media\n- Some crashes"
+  },
   {
     "version": "3.9.1",
     "code": "436",
diff --git a/app/src/main/java/app/fedilab/android/client/entities/app/Pinned.java b/app/src/main/java/app/fedilab/android/client/entities/app/Pinned.java
index 524e7da9..eb6e87ec 100644
--- a/app/src/main/java/app/fedilab/android/client/entities/app/Pinned.java
+++ b/app/src/main/java/app/fedilab/android/client/entities/app/Pinned.java
@@ -24,6 +24,7 @@ import com.google.gson.annotations.SerializedName;
 import com.google.gson.reflect.TypeToken;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -154,7 +155,17 @@ public class Pinned implements Serializable {
         }
         try {
             Cursor c = db.query(Sqlite.TABLE_PINNED_TIMELINES, null, Sqlite.COL_INSTANCE + " = '" + account.instance + "' AND " + Sqlite.COL_USER_ID + " = '" + account.user_id + "'", null, null, null, Sqlite.COL_UPDATED_AT + " DESC", "1");
-            return cursorToPined(c);
+            Pinned pinned = cursorToPined(c);
+            List<PinnedTimeline> pinnedTimelines = new ArrayList<>();
+            if (pinned != null) {
+                for (PinnedTimeline pinnedTimeline : pinned.pinnedTimelines) {
+                    if (pinnedTimeline.displayed) {
+                        pinnedTimelines.add(pinnedTimeline);
+                    }
+                }
+                pinned.pinnedTimelines = pinnedTimelines;
+            }
+            return pinned;
         } catch (Exception e) {
             return null;
         }
diff --git a/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java b/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java
index b912fe3a..504fa0cc 100644
--- a/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java
+++ b/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java
@@ -274,31 +274,37 @@ public class PinnedTimelineHelper {
 
             for (MastodonList mastodonList : mastodonLists) {
                 boolean present = false;
-                for (PinnedTimeline pinnedTimeline : pinned.pinnedTimelines) {
-                    if (pinnedTimeline.mastodonList != null && mastodonList.id.compareTo(pinnedTimeline.mastodonList.id) == 0) {
-                        present = true;
-                        break;
-                    }
-                }
-                //Needs to be added
-                if (!present) {
-                    needRedraw = true; //Something changed, redraw must be done
-                    PinnedTimeline pinnedTimeline = new PinnedTimeline();
-                    pinnedTimeline.type = Timeline.TimeLineEnum.LIST;
-                    pinnedTimeline.position = pinned.pinnedTimelines.size();
-                    pinnedTimeline.mastodonList = mastodonList;
-                    pinned.pinnedTimelines.add(pinnedTimeline);
-                    try {
-                        boolean exist = new Pinned(activity).pinnedExist(pinned);
-                        if (exist) {
-                            new Pinned(activity).updatePinned(pinned);
-                        } else {
-                            new Pinned(activity).insertPinned(pinned);
+                try {
+                    Pinned pinnedAll = new Pinned(activity).getAllPinned(currentAccount);
+                    for (PinnedTimeline pinnedTimeline : pinnedAll.pinnedTimelines) {
+                        if (pinnedTimeline.mastodonList != null && mastodonList.id.compareTo(pinnedTimeline.mastodonList.id) == 0) {
+                            present = true;
+                            break;
                         }
-                    } catch (DBException e) {
-                        e.printStackTrace();
                     }
+                    //Needs to be added
+                    if (!present) {
+                        needRedraw = true; //Something changed, redraw must be done
+                        PinnedTimeline pinnedTimeline = new PinnedTimeline();
+                        pinnedTimeline.type = Timeline.TimeLineEnum.LIST;
+                        pinnedTimeline.position = pinnedAll.pinnedTimelines.size();
+                        pinnedTimeline.mastodonList = mastodonList;
+                        pinnedAll.pinnedTimelines.add(pinnedTimeline);
+                        try {
+                            boolean exist = new Pinned(activity).pinnedExist(pinnedAll);
+                            if (exist) {
+                                new Pinned(activity).updatePinned(pinnedAll);
+                            } else {
+                                new Pinned(activity).insertPinned(pinnedAll);
+                            }
+                        } catch (DBException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                } catch (DBException e) {
+                    e.printStackTrace();
                 }
+
             }
         }
         if (!needRedraw) { //if there were no changes with list, no need to update tabs
diff --git a/src/fdroid/fastlane/metadata/android/en/changelogs/437.txt b/src/fdroid/fastlane/metadata/android/en/changelogs/437.txt
new file mode 100644
index 00000000..81643078
--- /dev/null
+++ b/src/fdroid/fastlane/metadata/android/en/changelogs/437.txt
@@ -0,0 +1,13 @@
+Added:
+- New design with 5 themes
+
+Changed:
+- Remove built-in browser support
+- Fit preview image displays images vertically
+- Add counters next to images
+
+Fixed:
+- Jumps in timelines
+- Replies to wrong messages with followed instances
+- Bug with delete&redraft with a media
+- Some crashes
\ No newline at end of file