Loading app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java +31 −10 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ package app.fedilab.android.activities; * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.helper.PinnedTimelineHelper.sortListPositionAsc; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; Loading Loading @@ -43,6 +45,7 @@ import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.MastodonList; import app.fedilab.android.client.entities.app.PinnedTimeline; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.databinding.ActivityListBinding; import app.fedilab.android.databinding.PopupAddListBinding; Loading @@ -53,6 +56,7 @@ import app.fedilab.android.ui.drawer.AccountListAdapter; import app.fedilab.android.ui.drawer.MastodonListAdapter; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonTimeline; import app.fedilab.android.viewmodel.mastodon.AccountsVM; import app.fedilab.android.viewmodel.mastodon.ReorderVM; import app.fedilab.android.viewmodel.mastodon.TimelinesVM; import es.dmoral.toasty.Toasty; Loading Loading @@ -91,8 +95,24 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd timelinesVM = new ViewModelProvider(MastodonListActivity.this).get(TimelinesVM.class); timelinesVM.getLists(BaseMainActivity.currentInstance, BaseMainActivity.currentToken) .observe(MastodonListActivity.this, mastodonLists -> { ReorderVM reorderVM = new ViewModelProvider(MastodonListActivity.this).get(ReorderVM.class); reorderVM.getPinned().observe(MastodonListActivity.this, pinned -> { if (mastodonLists != null && mastodonLists.size() > 0) { mastodonListList = new ArrayList<>(mastodonLists); if (pinned != null) { if (pinned.pinnedTimelines != null && pinned.pinnedTimelines.size() > 0) { for (PinnedTimeline pinnedTimeline : pinned.pinnedTimelines) { if (pinnedTimeline.type == Timeline.TimeLineEnum.LIST) { for (MastodonList mastodonList : mastodonLists) { if (mastodonList.id.equalsIgnoreCase(pinnedTimeline.mastodonList.id)) { mastodonList.position = pinnedTimeline.position; } } } } } } sortListPositionAsc(mastodonListList); mastodonListAdapter = new MastodonListAdapter(mastodonListList); mastodonListAdapter.actionOnList = this; binding.notContent.setVisibility(View.GONE); Loading @@ -102,6 +122,7 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd binding.notContent.setVisibility(View.VISIBLE); } }); }); } @Override Loading app/src/main/java/app/fedilab/android/client/entities/api/MastodonList.java +2 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,6 @@ public class MastodonList implements Serializable { public String title; @SerializedName("replies_policy") public String replies_policy; @SerializedName("position") public int position; } app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java +5 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,11 @@ public class PinnedTimelineHelper { Collections.sort(pinnedTimelineList, (obj1, obj2) -> Integer.compare(obj1.position, obj2.position)); } public static void sortListPositionAsc(List<MastodonList> mastodonLists) { //noinspection ComparatorCombinators Collections.sort(mastodonLists, (obj1, obj2) -> Integer.compare(obj1.position, obj2.position)); } public static void sortMenuItem(List<BottomMenu.MenuItem> menuItemList) { //noinspection ComparatorCombinators Collections.sort(menuItemList, (obj1, obj2) -> Integer.compare(obj1.position, obj2.position)); Loading Loading
app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java +31 −10 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ package app.fedilab.android.activities; * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.helper.PinnedTimelineHelper.sortListPositionAsc; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; Loading Loading @@ -43,6 +45,7 @@ import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.MastodonList; import app.fedilab.android.client.entities.app.PinnedTimeline; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.databinding.ActivityListBinding; import app.fedilab.android.databinding.PopupAddListBinding; Loading @@ -53,6 +56,7 @@ import app.fedilab.android.ui.drawer.AccountListAdapter; import app.fedilab.android.ui.drawer.MastodonListAdapter; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonTimeline; import app.fedilab.android.viewmodel.mastodon.AccountsVM; import app.fedilab.android.viewmodel.mastodon.ReorderVM; import app.fedilab.android.viewmodel.mastodon.TimelinesVM; import es.dmoral.toasty.Toasty; Loading Loading @@ -91,8 +95,24 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd timelinesVM = new ViewModelProvider(MastodonListActivity.this).get(TimelinesVM.class); timelinesVM.getLists(BaseMainActivity.currentInstance, BaseMainActivity.currentToken) .observe(MastodonListActivity.this, mastodonLists -> { ReorderVM reorderVM = new ViewModelProvider(MastodonListActivity.this).get(ReorderVM.class); reorderVM.getPinned().observe(MastodonListActivity.this, pinned -> { if (mastodonLists != null && mastodonLists.size() > 0) { mastodonListList = new ArrayList<>(mastodonLists); if (pinned != null) { if (pinned.pinnedTimelines != null && pinned.pinnedTimelines.size() > 0) { for (PinnedTimeline pinnedTimeline : pinned.pinnedTimelines) { if (pinnedTimeline.type == Timeline.TimeLineEnum.LIST) { for (MastodonList mastodonList : mastodonLists) { if (mastodonList.id.equalsIgnoreCase(pinnedTimeline.mastodonList.id)) { mastodonList.position = pinnedTimeline.position; } } } } } } sortListPositionAsc(mastodonListList); mastodonListAdapter = new MastodonListAdapter(mastodonListList); mastodonListAdapter.actionOnList = this; binding.notContent.setVisibility(View.GONE); Loading @@ -102,6 +122,7 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd binding.notContent.setVisibility(View.VISIBLE); } }); }); } @Override Loading
app/src/main/java/app/fedilab/android/client/entities/api/MastodonList.java +2 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,6 @@ public class MastodonList implements Serializable { public String title; @SerializedName("replies_policy") public String replies_policy; @SerializedName("position") public int position; }
app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java +5 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,11 @@ public class PinnedTimelineHelper { Collections.sort(pinnedTimelineList, (obj1, obj2) -> Integer.compare(obj1.position, obj2.position)); } public static void sortListPositionAsc(List<MastodonList> mastodonLists) { //noinspection ComparatorCombinators Collections.sort(mastodonLists, (obj1, obj2) -> Integer.compare(obj1.position, obj2.position)); } public static void sortMenuItem(List<BottomMenu.MenuItem> menuItemList) { //noinspection ComparatorCombinators Collections.sort(menuItemList, (obj1, obj2) -> Integer.compare(obj1.position, obj2.position)); Loading