From eca5cecd930cd791bfcda6075e3279255fd6f544 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 2 Oct 2022 12:18:13 +0200 Subject: [PATCH] some changes --- .../app/fedilab/android/BaseMainActivity.java | 25 ++++++++++++++++++- .../client/entities/app/StatusCache.java | 11 ++++---- .../timeline/FragmentMastodonTimeline.java | 10 +++++--- .../viewmodel/mastodon/TimelinesVM.java | 5 +++- .../res/layout/tab_custom_default_view.xml | 18 +++++++++++++ app/src/main/res/layout/tab_custom_view.xml | 18 +++++++++++++ 6 files changed, 77 insertions(+), 10 deletions(-) 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 @@ + +