From 23875a2ceba812f21a5d2cf26151cd5f9f517709 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 10 Oct 2020 09:25:00 +0200 Subject: [PATCH] Fix channel filter for subscriptions --- .../fedilabtube/SepiaSearchActivity.java | 7 +++- .../fedilabtube/client/PeertubeService.java | 2 +- .../client/RetrofitPeertubeAPI.java | 16 ++++++---- .../fedilabtube/client/data/AccountData.java | 10 +----- .../fedilabtube/client/data/ChannelData.java | 9 ++++++ .../drawer/AccountsHorizontalListAdapter.java | 32 +++++++++---------- .../fragment/DisplayVideosFragment.java | 24 +++++++------- .../fedilabtube/viewmodel/TimelineVM.java | 8 ++--- 8 files changed, 59 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java b/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java index 43fd5d1..299f52b 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java +++ b/app/src/main/java/app/fedilab/fedilabtube/SepiaSearchActivity.java @@ -28,6 +28,7 @@ import android.widget.Spinner; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import com.mancj.materialsearchbar.MaterialSearchBar; @@ -328,6 +329,10 @@ public class SepiaSearchActivity extends AppCompatActivity { }else{ sepiaSearchVideo.setTagsAllOf(null); } + + Fragment fragment = getSupportFragmentManager().findFragmentByTag("SEPIA_SEARCH"); + if(fragment != null) + getSupportFragmentManager().beginTransaction().remove(fragment).commit(); filter_elements.setVisibility(View.GONE); sepiaSearchVideo.setSearch(searchBar.getText()); DisplaySepiaSearchFragment displaySepiaSearchFragment = new DisplaySepiaSearchFragment(); @@ -335,7 +340,7 @@ public class SepiaSearchActivity extends AppCompatActivity { bundle.putParcelable("sepiaSearchVideo", sepiaSearchVideo); displaySepiaSearchFragment.setArguments(bundle); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.add(R.id.container, displaySepiaSearchFragment).commit(); + ft.add(R.id.container, displaySepiaSearchFragment,"SEPIA_SEARCH").commit(); } @Override diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java index 5da2997..0802c1d 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/PeertubeService.java @@ -288,7 +288,7 @@ public interface PeertubeService { //Subscribe/Unsubscribe //subscribers @GET("users/me/subscriptions") - Call getSubscription(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count); + Call getSubscription(@Header("Authorization") String credentials, @Query("start") String maxId, @Query("count") String count); @GET("users/me/subscriptions/exist") Call> getSubscriptionsExist(@Header("Authorization") String credentials, @Query("uris") List uris); diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java b/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java index 2e60c35..4bc0e7e 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/RetrofitPeertubeAPI.java @@ -311,7 +311,7 @@ public class RetrofitPeertubeAPI { return apiResponse; } - public APIResponse getTL(TimelineVM.TimelineType timelineType, String max_id) { + public APIResponse getTL(TimelineVM.TimelineType timelineType, String max_id, String forAccount) { APIResponse apiResponse = new APIResponse(); PeertubeService peertubeService = init(); Call videoCall = null; @@ -321,7 +321,11 @@ public class RetrofitPeertubeAPI { videoCall = peertubeService.getMyVideos(getToken(), max_id, count); break; case SUBSCRIBTIONS: - videoCall = peertubeService.getSubscriptionVideos(getToken(), max_id, count, filter); + if (forAccount == null) { + videoCall = peertubeService.getSubscriptionVideos(getToken(), max_id, count, filter); + } else { + videoCall = peertubeService.getChannelVideos(forAccount, max_id, count); + } break; case MOST_LIKED: videoCall = peertubeService.getMostLikedVideos(max_id, count, filter); @@ -870,13 +874,13 @@ public class RetrofitPeertubeAPI { */ public APIResponse getSubscribtions(String maxId) { PeertubeService peertubeService = init(); - Call accountDataCall = peertubeService.getSubscription("Bearer " + token, maxId, count); + Call channelDataCall = peertubeService.getSubscription("Bearer " + token, maxId, count); APIResponse apiResponse = new APIResponse(); - if (accountDataCall != null) { + if (channelDataCall != null) { try { - Response response = accountDataCall.execute(); + Response response = channelDataCall.execute(); if (response.isSuccessful() && response.body() != null) { - apiResponse.setAccounts(response.body().data); + apiResponse.setChannels(response.body().data); } else { setError(apiResponse, response.code(), response.errorBody()); } diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/data/AccountData.java b/app/src/main/java/app/fedilab/fedilabtube/client/data/AccountData.java index 129a29e..c9b9b98 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/data/AccountData.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/data/AccountData.java @@ -77,7 +77,7 @@ public class AccountData { private String client_id; private String client_secret; private String refresh_token; - private boolean selected; + public Account() { } @@ -197,14 +197,6 @@ public class AccountData { this.url = url; } - public boolean isSelected() { - return selected; - } - - public void setSelected(boolean selected) { - this.selected = selected; - } - public String getAcct() { return name + "@" + host; } diff --git a/app/src/main/java/app/fedilab/fedilabtube/client/data/ChannelData.java b/app/src/main/java/app/fedilab/fedilabtube/client/data/ChannelData.java index 228d543..9bf9a00 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/client/data/ChannelData.java +++ b/app/src/main/java/app/fedilab/fedilabtube/client/data/ChannelData.java @@ -80,6 +80,7 @@ public class ChannelData { @SerializedName("viewsPerDay") private List viewsPerDays; private String acct; + private boolean selected; public Channel() { } @@ -243,6 +244,14 @@ public class ChannelData { this.viewsPerDays = viewsPerDays; } + public boolean isSelected() { + return selected; + } + + public void setSelected(boolean selected) { + this.selected = selected; + } + @Override public int describeContents() { return 0; diff --git a/app/src/main/java/app/fedilab/fedilabtube/drawer/AccountsHorizontalListAdapter.java b/app/src/main/java/app/fedilab/fedilabtube/drawer/AccountsHorizontalListAdapter.java index fba4bf3..1858377 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/drawer/AccountsHorizontalListAdapter.java +++ b/app/src/main/java/app/fedilab/fedilabtube/drawer/AccountsHorizontalListAdapter.java @@ -31,18 +31,18 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.List; import app.fedilab.fedilabtube.R; -import app.fedilab.fedilabtube.client.data.AccountData.Account; +import app.fedilab.fedilabtube.client.data.ChannelData; import app.fedilab.fedilabtube.helper.Helper; public class AccountsHorizontalListAdapter extends RecyclerView.Adapter { EventListener listener; - private List accounts; + private List channels; private Context context; - public AccountsHorizontalListAdapter(List accounts, EventListener listener) { - this.accounts = accounts; + public AccountsHorizontalListAdapter(List channels, EventListener listener) { + this.channels = channels; this.listener = listener; } @@ -57,17 +57,17 @@ public class AccountsHorizontalListAdapter extends RecyclerView.Adapter peertubes; - private List accounts; + private List channels; private TimelineVM.TimelineType type; private RelativeLayout mainLoader, nextElementLoader, textviewNoAction; private boolean firstLoad; @@ -104,7 +104,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta peertubes = new ArrayList<>(); - accounts = new ArrayList<>(); + channels = new ArrayList<>(); context = getContext(); Bundle bundle = this.getArguments(); if (bundle != null) { @@ -140,7 +140,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta peertubeAdapater.relationShipListener = this; lv_status.setAdapter(peertubeAdapater); - accountsHorizontalListAdapter = new AccountsHorizontalListAdapter(this.accounts, this); + accountsHorizontalListAdapter = new AccountsHorizontalListAdapter(this.channels, this); LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false); lv_accounts.setLayoutManager(layoutManager); @@ -281,13 +281,13 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta private void manageViewAccounts(APIResponse apiResponse) { - if (apiResponse != null && apiResponse.getAccounts() != null && apiResponse.getAccounts().size() > 0) { + if (apiResponse != null && apiResponse.getChannels() != null && apiResponse.getChannels().size() > 0) { if (top_account_container.getVisibility() == View.GONE) { top_account_container.setVisibility(View.VISIBLE); } - int previousPosition = accounts.size(); - accounts.addAll(apiResponse.getAccounts()); - accountsHorizontalListAdapter.notifyItemRangeInserted(previousPosition, apiResponse.getAccounts().size()); + int previousPosition = channels.size(); + channels.addAll(apiResponse.getChannels()); + accountsHorizontalListAdapter.notifyItemRangeInserted(previousPosition, apiResponse.getChannels().size()); if (max_id_accounts == null) { max_id_accounts = "0"; } @@ -434,10 +434,10 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta max_id = "0"; peertubeAdapater.notifyItemRangeRemoved(0, size); if (forAccount == null) { - for (Account account : accounts) { - account.setSelected(false); + for (ChannelData.Channel channel : channels) { + channel.setSelected(false); } - accountsHorizontalListAdapter.notifyItemRangeRemoved(0, accounts.size()); + accountsHorizontalListAdapter.notifyItemRangeRemoved(0, channels.size()); } loadTimeline("0"); } @@ -461,7 +461,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta viewModelFeeds.loadVideosInPlaylist(playlistId, max_id).observe(this.requireActivity(), this::manageVIewVideos); } else { - viewModelFeeds.getVideos(type, max_id).observe(this.requireActivity(), this::manageVIewVideos); + viewModelFeeds.getVideos(type, max_id, forAccount).observe(this.requireActivity(), this::manageVIewVideos); } } else { viewModelSearch.getVideos(max_id, search_peertube).observe(this.requireActivity(), this::manageVIewVideos); diff --git a/app/src/main/java/app/fedilab/fedilabtube/viewmodel/TimelineVM.java b/app/src/main/java/app/fedilab/fedilabtube/viewmodel/TimelineVM.java index 0c03a72..153d7e4 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/viewmodel/TimelineVM.java +++ b/app/src/main/java/app/fedilab/fedilabtube/viewmodel/TimelineVM.java @@ -38,9 +38,9 @@ public class TimelineVM extends AndroidViewModel { super(application); } - public LiveData getVideos(TimelineType action, String max_id) { + public LiveData getVideos(TimelineType action, String max_id, String forAccount) { apiResponseMutableLiveData = new MutableLiveData<>(); - loadVideos(action, max_id); + loadVideos(action, max_id, forAccount); return apiResponseMutableLiveData; } @@ -133,7 +133,7 @@ public class TimelineVM extends AndroidViewModel { }).start(); } - private void loadVideos(TimelineType timeline, String max_id) { + private void loadVideos(TimelineType timeline, String max_id, String forAccount) { Context _mContext = getApplication().getApplicationContext(); new Thread(() -> { try { @@ -141,7 +141,7 @@ public class TimelineVM extends AndroidViewModel { if (timeline == null) return; APIResponse apiResponse; - apiResponse = retrofitPeertubeAPI.getTL(timeline, max_id); + apiResponse = retrofitPeertubeAPI.getTL(timeline, max_id, forAccount); Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> apiResponseMutableLiveData.setValue(apiResponse); mainHandler.post(myRunnable);