feat(recent-url): add domain to timelines
This commit is contained in:
parent
14e2747599
commit
d37a2b9db7
|
@ -74,7 +74,7 @@ import me.grishka.appkit.utils.BindableViewHolder;
|
|||
import me.grishka.appkit.utils.V;
|
||||
import me.grishka.appkit.views.UsableRecyclerView;
|
||||
|
||||
public abstract class BaseStatusListFragment<T extends DisplayItemsParent> extends BaseRecyclerFragment<T> implements PhotoViewerHost, ScrollableToTop{
|
||||
public abstract class BaseStatusListFragment<T extends DisplayItemsParent> extends BaseRecyclerFragment<T> implements PhotoViewerHost, ScrollableToTop, DomainDisplay{
|
||||
protected ArrayList<StatusDisplayItem> displayItems=new ArrayList<>();
|
||||
protected DisplayItemsAdapter adapter;
|
||||
protected String accountID;
|
||||
|
@ -108,10 +108,6 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
|||
setRetainInstance(true);
|
||||
}
|
||||
|
||||
public void setAssistContentUri() {
|
||||
DomainManager.getInstance().setCurrentDomain(AccountSessionManager.getInstance().getAccount(accountID).domain);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
|
|
|
@ -39,8 +39,8 @@ public class CustomLocalTimelineFragment extends StatusListFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void setAssistContentUri() {
|
||||
DomainManager.getInstance().setCurrentDomain(domain);
|
||||
public String getDomain() {
|
||||
return domain;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package org.joinmastodon.android.fragments;
|
||||
|
||||
import org.joinmastodon.android.api.session.AccountSession;
|
||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||
|
||||
public interface DomainDisplay {
|
||||
void scrollToTop();
|
||||
|
||||
default String getDomain(){
|
||||
AccountSession session = AccountSessionManager.getInstance().getLastActiveAccount();
|
||||
if (session != null)
|
||||
return session.domain;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
}
|
|
@ -11,6 +11,7 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageButton;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.joinmastodon.android.DomainManager;
|
||||
import org.joinmastodon.android.E;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.requests.tags.GetHashtag;
|
||||
|
@ -43,12 +44,19 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDomain() {
|
||||
return super.getDomain() + "/tags/" + hashtag;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity){
|
||||
super.onAttach(activity);
|
||||
updateTitle(getArguments().getString("hashtag"));
|
||||
following=getArguments().getBoolean("following", false);
|
||||
setHasOptionsMenu(true);
|
||||
DomainManager.getInstance().setCurrentDomain(getDomain());
|
||||
}
|
||||
|
||||
private void updateTitle(String hashtagName) {
|
||||
|
|
|
@ -19,6 +19,7 @@ import android.widget.LinearLayout;
|
|||
import androidx.annotation.IdRes;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.joinmastodon.android.DomainManager;
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.session.AccountSession;
|
||||
|
@ -194,6 +195,8 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene
|
|||
@Override
|
||||
public void onHiddenChanged(boolean hidden){
|
||||
super.onHiddenChanged(hidden);
|
||||
if (!hidden && fragmentForTab(currentTab) instanceof DomainDisplay display)
|
||||
DomainManager.getInstance().setCurrentDomain(display.getDomain());
|
||||
fragmentForTab(currentTab).onHiddenChanged(hidden);
|
||||
}
|
||||
|
||||
|
@ -268,6 +271,10 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene
|
|||
setNotificationBadge();
|
||||
}
|
||||
|
||||
if (newFragment instanceof DomainDisplay display) {
|
||||
DomainManager.getInstance().setCurrentDomain(display.getDomain());
|
||||
}
|
||||
|
||||
getChildFragmentManager().beginTransaction().hide(fragmentForTab(currentTab)).show(newFragment).commit();
|
||||
maybeTriggerLoading(newFragment);
|
||||
currentTab=tab;
|
||||
|
|
|
@ -35,6 +35,7 @@ import androidx.viewpager2.widget.ViewPager2;
|
|||
|
||||
import com.squareup.otto.Subscribe;
|
||||
|
||||
import org.joinmastodon.android.DomainManager;
|
||||
import org.joinmastodon.android.E;
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
|
@ -70,7 +71,7 @@ import me.grishka.appkit.fragments.OnBackPressedListener;
|
|||
import me.grishka.appkit.utils.CubicBezierInterpolator;
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class HomeTabFragment extends MastodonToolbarFragment implements ScrollableToTop, OnBackPressedListener {
|
||||
public class HomeTabFragment extends MastodonToolbarFragment implements ScrollableToTop, OnBackPressedListener, DomainDisplay {
|
||||
private static final int ANNOUNCEMENTS_RESULT = 654;
|
||||
|
||||
private String accountID;
|
||||
|
@ -196,6 +197,10 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
|||
if (fragments[position] instanceof BaseRecyclerFragment<?> page){
|
||||
if(!page.loaded && !page.isDataLoading()) page.loadData();
|
||||
}
|
||||
|
||||
//update recent app list url
|
||||
if (fragments[position] instanceof DomainDisplay page)
|
||||
DomainManager.getInstance().setCurrentDomain(page.getDomain());
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -280,6 +285,14 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
|||
}).exec(accountID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDomain() {
|
||||
if (fragments[pager.getCurrentItem()] instanceof DomainDisplay page) {
|
||||
return page.getDomain();
|
||||
}
|
||||
return DomainDisplay.super.getDomain();
|
||||
}
|
||||
|
||||
private void addListsToOverflowMenu() {
|
||||
Context ctx = getContext();
|
||||
listsMenu.clear();
|
||||
|
|
|
@ -42,6 +42,11 @@ public class HomeTimelineFragment extends StatusListFragment {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDomain() {
|
||||
return super.getDomain() + "/home";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity){
|
||||
super.onAttach(activity);
|
||||
|
|
|
@ -52,6 +52,11 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDomain() {
|
||||
return super.getDomain() + "/notifications";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState){
|
||||
super.onCreate(savedInstanceState);
|
||||
|
|
|
@ -14,7 +14,7 @@ import org.joinmastodon.android.model.TimelineDefinition;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class PinnableStatusListFragment extends StatusListFragment {
|
||||
public abstract class PinnableStatusListFragment extends StatusListFragment implements DomainDisplay {
|
||||
protected boolean pinnedUpdated;
|
||||
protected List<TimelineDefinition> pinnedTimelines;
|
||||
|
||||
|
|
|
@ -25,6 +25,11 @@ public class FederatedTimelineFragment extends StatusListFragment {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDomain() {
|
||||
return super.getDomain() + "/public";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
|
|
|
@ -24,6 +24,10 @@ public class LocalTimelineFragment extends StatusListFragment {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDomain() {
|
||||
return super.getDomain() + "/public/local";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLoadData(int offset, int count){
|
||||
|
|
Loading…
Reference in New Issue