Commit 77dcb6db authored by Thomas's avatar Thomas
Browse files

Fix counters

parent a2406f23
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -1096,7 +1096,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                binding.bottomNavView.removeBadge(R.id.nav_privates);
            }
        }
        selectTab(Timeline.TimeLineEnum.CONVERSATION.getValue(), count);
        setCounterToTab(Timeline.TimeLineEnum.CONVERSATION.getValue(), count);
    }

    @Override
@@ -1112,9 +1112,15 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                binding.bottomNavView.removeBadge(R.id.nav_notifications);
            }
        }
        selectTab(Timeline.TimeLineEnum.NOTIFICATION.getValue(), count);
        setCounterToTab(Timeline.TimeLineEnum.NOTIFICATION.getValue(), count);
    }

    /**
     * Get the tab depending of its position
     *
     * @param slug String slug for the timeline
     * @return int - position
     */
    private int getTabPosition(String slug) {
        int position = 0;
        for (int i = 0; i < binding.tabLayout.getTabCount(); i++) {
@@ -1127,7 +1133,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
        return -1;
    }

    private void selectTab(String slug, int count) {
    /**
     * Set the counter to the tab depending of the slug
     *
     * @param slug  - String slug for the pinned timeline
     * @param count - int new messages
     */
    private void setCounterToTab(String slug, int count) {
        int position = getTabPosition(slug);
        if (position >= 0 && position < binding.tabLayout.getTabCount()) {
            TabLayout.Tab tab = binding.tabLayout.getTabAt(position);
@@ -1141,9 +1153,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                    if (count > 0) {
                        counter.setVisibility(View.VISIBLE);
                        counter.setText(String.valueOf(count));
                    } else {
                        counter.setVisibility(View.GONE);
                        counter.setText("0");
                    }
                }
            }
@@ -1203,7 +1212,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                    break;
            }
        }
        selectTab(slug, count);
        setCounterToTab(slug, count);
    }

    @Override
+17 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;
@@ -68,6 +69,7 @@ import app.fedilab.android.databinding.TabCustomViewBinding;
import app.fedilab.android.exception.DBException;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonConversation;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonTimeline;
import app.fedilab.android.ui.fragment.timeline.FragmentNotificationContainer;
import app.fedilab.android.ui.pageadapter.FedilabPageAdapter;
import es.dmoral.toasty.Toasty;

@@ -121,6 +123,11 @@ public class PinnedTimelineHelper {
                params.setMargins(0, 0, 0, actionBarHeight);
            }
        }
        //Remove badge when reselecting
        activityMainBinding.bottomNavView.setOnItemReselectedListener(item -> {
            activityMainBinding.bottomNavView.removeBadge(item.getItemId());
        });

        activityMainBinding.viewPager.setLayoutParams(params);
        List<PinnedTimeline> pinnedTimelines = pinned.pinnedTimelines;

@@ -495,10 +502,20 @@ public class PinnedTimelineHelper {
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                Fragment fragment = fedilabPageAdapter.getCurrentFragment();
                View view = tab.getCustomView();
                if (view != null) {
                    TextView counter = view.findViewById(R.id.tab_counter);
                    if (counter != null) {
                        counter.setVisibility(View.GONE);
                        counter.setText("0");
                    }
                }
                if (fragment instanceof FragmentMastodonTimeline) {
                    ((FragmentMastodonTimeline) fragment).scrollToTop();
                } else if (fragment instanceof FragmentMastodonConversation) {
                    ((FragmentMastodonConversation) fragment).scrollToTop();
                } else if (fragment instanceof FragmentNotificationContainer) {
                    ((FragmentNotificationContainer) fragment).scrollToTop();
                }
            }
        });
+1 −1
Original line number Diff line number Diff line
@@ -324,7 +324,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
            //Update the timeline with new statuses
            int insertedStatus = updateStatusListWith(fetched_statuses.statuses);
            //For these directions, the app will display counters for new messages
            if (insertedStatus >= 0 && update != null && (direction == DIRECTION.FETCH_NEW || direction == DIRECTION.SCROLL_TOP || direction == DIRECTION.REFRESH)) {
            if (insertedStatus >= 0 && update != null && direction != DIRECTION.FETCH_NEW && !fetchingMissing) {
                update.onUpdate(insertedStatus, timelineType, slug);
            }
            if (direction == DIRECTION.TOP && fetchingMissing) {