Fix counters
This commit is contained in:
parent
a2406f23a5
commit
77dcb6db31
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue