diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index be0ca83f..37fdadfb 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -37,6 +37,7 @@ import android.os.Looper;
import android.text.Editable;
import android.text.Html;
import android.text.TextWatcher;
+import android.util.Log;
import android.util.Patterns;
import android.view.ContextThemeWrapper;
import android.view.Gravity;
@@ -75,6 +76,7 @@ import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.snackbar.Snackbar;
+import com.google.android.material.tabs.TabLayout;
import com.jaredrummler.cyanea.Cyanea;
import java.io.File;
@@ -1135,7 +1137,28 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
break;
}
}
-
+ int selectedTab = binding.tabLayout.getSelectedTabPosition();
+ TabLayout.Tab tab = binding.tabLayout.getTabAt(selectedTab);
+ Log.v(Helper.TAG, "selectedTab: " + selectedTab);
+ Log.v(Helper.TAG, "tab: " + tab);
+ View view = null;
+ if (tab != null) {
+ view = tab.getCustomView();
+ }
+ if (view != null) {
+ Log.v(Helper.TAG, "view: " + view);
+ TextView counter = view.findViewById(R.id.tab_counter);
+ Log.v(Helper.TAG, "counter: " + counter);
+ if (counter != null) {
+ if (count > 0) {
+ counter.setVisibility(View.VISIBLE);
+ counter.setText(String.valueOf(count));
+ } else {
+ counter.setVisibility(View.GONE);
+ counter.setText("0");
+ }
+ }
+ }
}
diff --git a/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java b/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java
index 77b59d32..3204d1c4 100644
--- a/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java
+++ b/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java
@@ -175,20 +175,21 @@ public class StatusCache {
* Insert or update a status
*
* @param statusCache {@link StatusCache}
- * @return long - db id
+ * @return int - 0 if updated 1 if inserted
* @throws DBException exception with database
*/
- public long insertOrUpdate(StatusCache statusCache, String slug) throws DBException {
+ public int insertOrUpdate(StatusCache statusCache, String slug) throws DBException {
if (db == null) {
throw new DBException("db is null. Wrong initialization.");
}
statusCache.slug = slug;
boolean exists = statusExist(statusCache);
- long idReturned;
+ int idReturned = 0;
if (exists) {
- idReturned = updateStatus(statusCache);
+ updateStatus(statusCache);
} else {
- idReturned = insertStatus(statusCache, slug);
+ insertStatus(statusCache, slug);
+ idReturned = 1;
}
return idReturned;
}
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java
index fde9d4e6..413e406a 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java
@@ -325,7 +325,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
int insertedStatus = updateStatusListWith(fetched_statuses.statuses);
//For these directions, the app will display counters for new messages
- if (insertedStatus >= 0 && (direction == DIRECTION.FETCH_NEW || direction == DIRECTION.SCROLL_TOP)) {
+ if (insertedStatus >= 0 && update != null && (direction == DIRECTION.FETCH_NEW || direction == DIRECTION.SCROLL_TOP)) {
update.onUpdate(insertedStatus, timelineType, slug);
}
if (direction == DIRECTION.TOP && fetchingMissing) {
@@ -424,7 +424,8 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
binding.recyclerView.setLayoutManager(mLayoutManager);
binding.recyclerView.setAdapter(statusAdapter);
-
+ //Fetching new messages
+ route(DIRECTION.FETCH_NEW, true);
if (searchCache == null && timelineType != Timeline.TimeLineEnum.TREND_MESSAGE) {
binding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@@ -460,6 +461,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
}
});
}
+
}
/**
@@ -484,7 +486,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
if (!timelineStatuses.contains(statusReceived) && !statusReceived.pinned && timelineType != Timeline.TimeLineEnum.ACCOUNT_TIMELINE) {
timelineStatuses.add(position, statusReceived);
statusAdapter.notifyItemInserted(position);
- insertedStatus++;
+ if (!statusReceived.cached) {
+ insertedStatus++;
+ }
}
break;
}
diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java
index 4cdc7aab..5990c723 100644
--- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java
+++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java
@@ -428,7 +428,10 @@ public class TimelinesVM extends AndroidViewModel {
statusCache.type = timelineParams.type;
statusCache.status_id = status.id;
try {
- statusCacheDAO.insertOrUpdate(statusCache, timelineParams.slug);
+ int inserted = statusCacheDAO.insertOrUpdate(statusCache, timelineParams.slug);
+ if (inserted == 0) {
+ status.cached = true;
+ }
} catch (DBException e) {
e.printStackTrace();
}
diff --git a/app/src/main/res/layout/tab_custom_default_view.xml b/app/src/main/res/layout/tab_custom_default_view.xml
index 71ce7b86..3220650a 100644
--- a/app/src/main/res/layout/tab_custom_default_view.xml
+++ b/app/src/main/res/layout/tab_custom_default_view.xml
@@ -1,6 +1,7 @@
+
+
diff --git a/app/src/main/res/layout/tab_custom_view.xml b/app/src/main/res/layout/tab_custom_view.xml
index 0069cb66..0a8ed3a8 100644
--- a/app/src/main/res/layout/tab_custom_view.xml
+++ b/app/src/main/res/layout/tab_custom_view.xml
@@ -2,6 +2,7 @@
+
+