mirror of
https://github.com/LBRYFoundation/lbry-android.git
synced 2025-08-23 17:47:28 +00:00
* initial native rewrite commit * update gitlab CI script * add printVersionName gradle task * fix Gitlab CI script * Fix first time wallet sync. add Discover dialog to Following page. * Finish Following and All Content views. Add customize your tags view. * Wallet sync get and set preferences, update interval. * Editor's Choice. Reposts. Some ontent page tweaks. * display no related content view when none loaded * Search cache. File view updates. Floating wallet balance. * Send tip dialog. Channel page share and follow/unfollow. * Handle lbry:// url scheme. Properly set URL bar values. SDK 0.71.0. * Channel follow/unfollow fixes. Display stream cost. * Channel management and channel creation / editing * phone number verification and rewards page * add Invites page * tweak player loading and playback when loading new claims * tweak about page layout * display text and markdown content * purchase_uri for free content * don't display invites history if none exist * fix channel list adapters * change launch mode from singleInstance to singleTask * url history and player fixes * Library page. URL and view history. * bumpversion 0.15.0 --> 0.15.1 * Make file view a fragment to prevent headaches with multiple Android task recents * Better handling of file view URLs. Some issue list fixes. * Abandon channels and bulk delete files tasks. Some visual tweaks. * bumpversion 0.15.1 --> 0.15.2 * fix some events * Some visual tweaks. Wunderbar clear focus hotfix for some devices. * sdk 0.74.0. Publish and Publishes pages. * Fix displayed amounts. Send Firebase token with install_new. * Some dark theme and crash fixes. Implement publish form. * Fix minor typo for string in 'generate_address_hint'. * Publish form and publish creation flow. UI tweaks and fixes. * Basic native mobile publishing * remove closeDatabase calls causing crashes * Implement file and channel page delete actions. UI action cleanup. * publish drivers for unresolved file page and featured search result item * show URL suggestions and data network (DHT) settings * Filter own claims from downloads. Fix address input. * fix edit channel crash * fix for possible blank / invalid video thumbnails * adjust minimum deposit. fix channel edit mode. * quick skip and playback speed media controls * change play and pause icons * Fix file size display. Tweak playback speed control. * Add exoplayer mediasession extension. Set player auto attributes. * Inline publish address validation error. Increase image upload request timeout. * fix no related content display * Claim new_android reward. Use canonical_url for share links. * force US locale for amount / bid values sent with sdk requests * Afrikaans and Spanish strings * Add media player error handling policy. Use : in share links. * don't proceed with publish if optimization is in progress.
107 lines
3.6 KiB
Java
107 lines
3.6 KiB
Java
package io.lbry.browser.dialog;
|
|
|
|
import android.content.DialogInterface;
|
|
import android.os.Bundle;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ProgressBar;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.recyclerview.widget.GridLayoutManager;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
|
import com.google.android.material.button.MaterialButton;
|
|
|
|
import io.lbry.browser.R;
|
|
import io.lbry.browser.adapter.SuggestedChannelGridAdapter;
|
|
import lombok.Getter;
|
|
import lombok.Setter;
|
|
|
|
public class DiscoverDialogFragment extends BottomSheetDialogFragment {
|
|
public static final String TAG = "DiscoverDialog";
|
|
|
|
@Getter
|
|
private SuggestedChannelGridAdapter adapter;
|
|
@Setter
|
|
private DiscoverDialogListener dialogActionsListener;
|
|
|
|
public static DiscoverDialogFragment newInstance() {
|
|
return new DiscoverDialogFragment();
|
|
}
|
|
@Override
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
|
View view = inflater.inflate(R.layout.dialog_discover, container, false);
|
|
|
|
RecyclerView grid = view.findViewById(R.id.discover_channel_grid);
|
|
GridLayoutManager glm = new GridLayoutManager(getContext(), 3);
|
|
grid.setLayoutManager(glm);
|
|
grid.setAdapter(adapter);
|
|
grid.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
|
@Override
|
|
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
|
GridLayoutManager lm = (GridLayoutManager) recyclerView.getLayoutManager();
|
|
if (lm != null) {
|
|
int visibleItemCount = lm.getChildCount();
|
|
int totalItemCount = lm.getItemCount();
|
|
int pastVisibleItems = lm.findFirstVisibleItemPosition();
|
|
if (pastVisibleItems + visibleItemCount >= totalItemCount) {
|
|
if (dialogActionsListener != null) {
|
|
dialogActionsListener.onScrollEndReached();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
MaterialButton doneButton = view.findViewById(R.id.discover_done_button);
|
|
doneButton.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View view) {
|
|
dismiss();
|
|
}
|
|
});
|
|
|
|
return view;
|
|
}
|
|
public void setAdapter(SuggestedChannelGridAdapter adapter) {
|
|
this.adapter = adapter;
|
|
if (getView() != null) {
|
|
((RecyclerView) getView().findViewById(R.id.discover_channel_grid)).setAdapter(adapter);
|
|
}
|
|
}
|
|
public void setLoading(boolean loading) {
|
|
if (getView() != null) {
|
|
getView().findViewById(R.id.discover_loading).setVisibility(loading ? View.VISIBLE : View.GONE);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onResume() {
|
|
super.onResume();
|
|
if (dialogActionsListener != null) {
|
|
dialogActionsListener.onResume();
|
|
}
|
|
}
|
|
@Override
|
|
public void onCancel(DialogInterface dialog) {
|
|
super.onDismiss(dialog);
|
|
if (dialogActionsListener != null) {
|
|
dialogActionsListener.onCancel();
|
|
}
|
|
}
|
|
@Override
|
|
public void onDismiss(DialogInterface dialog) {
|
|
super.onDismiss(dialog);
|
|
if (dialogActionsListener != null) {
|
|
dialogActionsListener.onCancel();
|
|
}
|
|
}
|
|
|
|
public interface DiscoverDialogListener {
|
|
void onResume();
|
|
void onCancel();
|
|
void onScrollEndReached();
|
|
}
|
|
}
|