mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-30 21:07:11 +01:00
Barebone gfycat and redgifs video autoplay in PostRecyclerViewAdapter.
This commit is contained in:
parent
24261df3db
commit
fc1b1ae585
@ -81,6 +81,7 @@ import ml.docilealligator.infinityforreddit.BottomSheetFragment.ShareLinkBottomS
|
||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView;
|
||||
import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToDetailActivity;
|
||||
import ml.docilealligator.infinityforreddit.FetchGfycatOrRedgifsVideoLinks;
|
||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||
import ml.docilealligator.infinityforreddit.Post.Post;
|
||||
import ml.docilealligator.infinityforreddit.Post.PostDataSource;
|
||||
@ -124,6 +125,8 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
private AppCompatActivity mActivity;
|
||||
private Retrofit mOauthRetrofit;
|
||||
private Retrofit mRetrofit;
|
||||
private Retrofit mGfycatRetrofit;
|
||||
private Retrofit mRedgifsRetrofit;
|
||||
private int mImageViewWidth;
|
||||
private String mAccessToken;
|
||||
private RequestManager mGlide;
|
||||
@ -178,6 +181,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
private boolean mShowThumbnailOnTheRightInCompactLayout;
|
||||
private double mStartAutoplayVisibleAreaOffset;
|
||||
private boolean mMuteNSFWVideo;
|
||||
private boolean mAutomaticallyTryRedgifs;
|
||||
private Drawable mCommentIcon;
|
||||
private NetworkState networkState;
|
||||
private ExoCreator mExoCreator;
|
||||
@ -185,6 +189,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
private ShareLinkBottomSheetFragment mShareLinkBottomSheetFragment;
|
||||
|
||||
public PostRecyclerViewAdapter(AppCompatActivity activity, Retrofit oauthRetrofit, Retrofit retrofit,
|
||||
Retrofit gfycatRetrofit, Retrofit redgifsRetrofit,
|
||||
RedditDataRoomDatabase redditDataRoomDatabase,
|
||||
CustomThemeWrapper customThemeWrapper, Locale locale, int imageViewWidth,
|
||||
String accessToken, int postType, int postLayout, boolean displaySubredditName,
|
||||
@ -194,6 +199,8 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
mActivity = activity;
|
||||
mOauthRetrofit = oauthRetrofit;
|
||||
mRetrofit = retrofit;
|
||||
mGfycatRetrofit = gfycatRetrofit;
|
||||
mRedgifsRetrofit = redgifsRetrofit;
|
||||
mImageViewWidth = imageViewWidth;
|
||||
mAccessToken = accessToken;
|
||||
mPostType = postType;
|
||||
@ -222,6 +229,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
sharedPreferences.getInt(SharedPreferencesUtils.START_AUTOPLAY_VISIBLE_AREA_OFFSET_LANDSCAPE, 50) / 100.0;
|
||||
|
||||
mMuteNSFWVideo = sharedPreferences.getBoolean(SharedPreferencesUtils.MUTE_NSFW_VIDEO, false);
|
||||
mAutomaticallyTryRedgifs = sharedPreferences.getBoolean(SharedPreferencesUtils.AUTOMATICALLY_TRY_REDGIFS, true);
|
||||
|
||||
mPostLayout = postLayout;
|
||||
|
||||
@ -555,7 +563,30 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
mGlide.load(post.getPreviewUrl()).into(((PostVideoAutoplayViewHolder) holder).previewImageView);
|
||||
}
|
||||
((PostVideoAutoplayViewHolder) holder).setVolume(mMuteAutoplayingVideos || (post.isNSFW() && mMuteNSFWVideo) ? 0f : 1f);
|
||||
((PostVideoAutoplayViewHolder) holder).bindVideoUri(Uri.parse(post.getVideoUrl()));
|
||||
|
||||
if (post.isGfycat() || post.isRedgifs() && !post.isLoadGfyOrRedgifsVideoSuccess()) {
|
||||
((PostVideoAutoplayViewHolder) holder).typeTextView.setText("GFYCAT");
|
||||
((PostVideoAutoplayViewHolder) holder).fetchGfycatOrRedgifsVideoLinks = new FetchGfycatOrRedgifsVideoLinks(new FetchGfycatOrRedgifsVideoLinks.FetchGfycatOrRedgifsVideoLinksListener() {
|
||||
@Override
|
||||
public void success(String webm, String mp4) {
|
||||
post.setVideoDownloadUrl(mp4);
|
||||
post.setVideoUrl(webm);
|
||||
post.setLoadGfyOrRedgifsVideoSuccess(true);
|
||||
((PostVideoAutoplayViewHolder) holder).bindVideoUri(Uri.parse(post.getVideoUrl()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed(int errorCode) {
|
||||
Toast.makeText(mActivity, "asdfasdfadf", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
((PostVideoAutoplayViewHolder) holder).fetchGfycatOrRedgifsVideoLinks
|
||||
.fetchGfycatOrRedgifsVideoLinksInRecyclerViewAdapter(mGfycatRetrofit, mRedgifsRetrofit,
|
||||
post.getGfycatId(), post.isGfycat(), mAutomaticallyTryRedgifs);
|
||||
} else {
|
||||
((PostVideoAutoplayViewHolder) holder).typeTextView.setText("VIDEO");
|
||||
((PostVideoAutoplayViewHolder) holder).bindVideoUri(Uri.parse(post.getVideoUrl()));
|
||||
}
|
||||
} else if (holder instanceof PostVideoAndGifPreviewViewHolder) {
|
||||
if (post.getPostType() == Post.VIDEO_TYPE) {
|
||||
((PostVideoAndGifPreviewViewHolder) holder).typeTextView.setText(mActivity.getString(R.string.video));
|
||||
@ -1158,6 +1189,10 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
super.onViewRecycled(holder);
|
||||
if (holder instanceof PostBaseViewHolder) {
|
||||
if (holder instanceof PostVideoAutoplayViewHolder) {
|
||||
((PostVideoAutoplayViewHolder) holder).mediaUri = null;
|
||||
if (((PostVideoAutoplayViewHolder) holder).fetchGfycatOrRedgifsVideoLinks != null) {
|
||||
((PostVideoAutoplayViewHolder) holder).fetchGfycatOrRedgifsVideoLinks.cancel();
|
||||
}
|
||||
((PostVideoAutoplayViewHolder) holder).muteButton.setVisibility(View.GONE);
|
||||
((PostVideoAutoplayViewHolder) holder).resetVolume();
|
||||
mGlide.clear(((PostVideoAutoplayViewHolder) holder).previewImageView);
|
||||
@ -1781,6 +1816,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
ExoPlayerViewHelper helper;
|
||||
private Uri mediaUri;
|
||||
private float volume;
|
||||
public FetchGfycatOrRedgifsVideoLinks fetchGfycatOrRedgifsVideoLinks;
|
||||
|
||||
PostVideoAutoplayViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
@ -1865,11 +1901,14 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
@NonNull
|
||||
@Override
|
||||
public PlaybackInfo getCurrentPlaybackInfo() {
|
||||
return helper != null ? helper.getLatestPlaybackInfo() : new PlaybackInfo();
|
||||
return helper != null && mediaUri != null ? helper.getLatestPlaybackInfo() : new PlaybackInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(@NonNull Container container, @NonNull PlaybackInfo playbackInfo) {
|
||||
if (mediaUri == null) {
|
||||
return;
|
||||
}
|
||||
if (helper == null) {
|
||||
helper = new ExoPlayerViewHelper(this, mediaUri, null, mExoCreator);
|
||||
helper.addEventListener(new Playable.EventListener() {
|
||||
@ -1916,7 +1955,9 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
|
||||
@Override
|
||||
public void play() {
|
||||
if (helper != null) helper.play();
|
||||
if (helper != null && mediaUri != null) {
|
||||
helper.play();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1939,7 +1980,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
|
||||
@Override
|
||||
public boolean wantsToPlay() {
|
||||
return ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
||||
return mediaUri != null && ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -15,11 +15,20 @@ import retrofit2.Response;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
public class FetchGfycatOrRedgifsVideoLinks {
|
||||
private FetchGfycatOrRedgifsVideoLinksListener fetchGfycatOrRedgifsVideoLinksListener;
|
||||
private ParseGfycatVideoLinksAsyncTask parseGfycatVideoLinksAsyncTask;
|
||||
Retrofit gfycatRetrofit;
|
||||
Call<String> gfycatCall;
|
||||
|
||||
public interface FetchGfycatOrRedgifsVideoLinksListener {
|
||||
void success(String webm, String mp4);
|
||||
void failed(int errorCode);
|
||||
}
|
||||
|
||||
public FetchGfycatOrRedgifsVideoLinks(FetchGfycatOrRedgifsVideoLinksListener fetchGfycatOrRedgifsVideoLinksListener) {
|
||||
this.fetchGfycatOrRedgifsVideoLinksListener = fetchGfycatOrRedgifsVideoLinksListener;
|
||||
}
|
||||
|
||||
public static void fetchGfycatOrRedgifsVideoLinks(Retrofit gfycatRetrofit, String gfycatId,
|
||||
FetchGfycatOrRedgifsVideoLinksListener fetchGfycatOrRedgifsVideoLinksListener) {
|
||||
gfycatRetrofit.create(GfycatAPI.class).getGfycatData(gfycatId).enqueue(new Callback<String>() {
|
||||
@ -39,6 +48,41 @@ public class FetchGfycatOrRedgifsVideoLinks {
|
||||
});
|
||||
}
|
||||
|
||||
public void fetchGfycatOrRedgifsVideoLinksInRecyclerViewAdapter(Retrofit gfycatRetrofit, Retrofit redgifsRetrofit,
|
||||
String gfycatId, boolean isGfycatVideo,
|
||||
boolean automaticallyTryRedgifs) {
|
||||
gfycatCall = (isGfycatVideo ? gfycatRetrofit : redgifsRetrofit).create(GfycatAPI.class).getGfycatData(gfycatId);
|
||||
gfycatCall.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if (response.isSuccessful()) {
|
||||
parseGfycatVideoLinksAsyncTask = new ParseGfycatVideoLinksAsyncTask(response.body(), fetchGfycatOrRedgifsVideoLinksListener);
|
||||
parseGfycatVideoLinksAsyncTask.execute();
|
||||
} else {
|
||||
if (response.code() == 404 && isGfycatVideo && automaticallyTryRedgifs) {
|
||||
fetchGfycatOrRedgifsVideoLinksInRecyclerViewAdapter(gfycatRetrofit, redgifsRetrofit, gfycatId, false, false);
|
||||
} else {
|
||||
fetchGfycatOrRedgifsVideoLinksListener.failed(response.code());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||
fetchGfycatOrRedgifsVideoLinksListener.failed(-1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
if (gfycatCall != null && !gfycatCall.isCanceled()) {
|
||||
gfycatCall.cancel();
|
||||
}
|
||||
if (parseGfycatVideoLinksAsyncTask != null && !parseGfycatVideoLinksAsyncTask.isCancelled()) {
|
||||
parseGfycatVideoLinksAsyncTask.cancel(true);
|
||||
}
|
||||
}
|
||||
|
||||
private static class ParseGfycatVideoLinksAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||
|
||||
private String response;
|
||||
|
@ -138,6 +138,12 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
@Named("oauth")
|
||||
Retrofit mOauthRetrofit;
|
||||
@Inject
|
||||
@Named("gfycat")
|
||||
Retrofit mGfycatRetrofit;
|
||||
@Inject
|
||||
@Named("redgifs")
|
||||
Retrofit mRedgifsRetrofit;
|
||||
@Inject
|
||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
@Inject
|
||||
@Named("default")
|
||||
@ -401,8 +407,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort), SortType.Time.valueOf(sortTime));
|
||||
postLayout = mPostLayoutSharedPreferences.getInt(SharedPreferencesUtils.POST_LAYOUT_SEARCH_POST, defaultPostLayout);
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
customThemeWrapper, locale, windowWidth, accessToken, postType, postLayout, true,
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
@ -456,8 +463,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort));
|
||||
}
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
customThemeWrapper, locale, windowWidth, accessToken, postType, postLayout, displaySubredditName,
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, displaySubredditName,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
@ -504,8 +512,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort));
|
||||
}
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
customThemeWrapper, locale, windowWidth, accessToken, postType, postLayout, true,
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
@ -550,8 +559,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
}
|
||||
postLayout = mPostLayoutSharedPreferences.getInt(SharedPreferencesUtils.POST_LAYOUT_USER_POST_BASE + username, defaultPostLayout);
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
customThemeWrapper, locale, windowWidth, accessToken, postType, postLayout, true,
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
@ -589,8 +599,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
}
|
||||
postLayout = mPostLayoutSharedPreferences.getInt(SharedPreferencesUtils.POST_LAYOUT_FRONT_PAGE_POST, defaultPostLayout);
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
customThemeWrapper, locale, windowWidth, accessToken, postType, postLayout, true,
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
|
@ -384,9 +384,14 @@ public class ParsePost {
|
||||
try {
|
||||
Uri uri = Uri.parse(url);
|
||||
String authority = uri.getAuthority();
|
||||
if (authority != null && (authority.contains("gfycat.com") || authority.contains("redgifs.com"))) {
|
||||
post.setPostType(Post.LINK_TYPE);
|
||||
post.setUrl(url);
|
||||
if (authority != null && (authority.contains("gfycat.com"))) {
|
||||
post.setIsGfycat(true);
|
||||
post.setVideoUrl(url);
|
||||
post.setGfycatId(url.substring(url.lastIndexOf("/") + 1));
|
||||
} else if (authority != null && authority.contains("redgifs.com")) {
|
||||
post.setIsRedgifs(true);
|
||||
post.setVideoUrl(url);
|
||||
post.setGfycatId(url.substring(url.lastIndexOf("/") + 1));
|
||||
}
|
||||
} catch (IllegalArgumentException ignore) { }
|
||||
} else if (post.getPostType() == Post.LINK_TYPE || post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
|
||||
@ -422,6 +427,20 @@ public class ParsePost {
|
||||
post.setPostType(Post.GALLERY_TYPE);
|
||||
post.setGallery(gallery);
|
||||
}
|
||||
} else if (post.getPostType() == Post.LINK_TYPE) {
|
||||
Uri uri = Uri.parse(url);
|
||||
String authority = uri.getAuthority();
|
||||
if (authority != null && (authority.contains("gfycat.com"))) {
|
||||
post.setPostType(Post.VIDEO_TYPE);
|
||||
post.setIsGfycat(true);
|
||||
post.setVideoUrl(url);
|
||||
post.setGfycatId(url.substring(url.lastIndexOf("/") + 1));
|
||||
} else if (authority != null && authority.contains("redgifs.com")) {
|
||||
post.setPostType(Post.VIDEO_TYPE);
|
||||
post.setIsRedgifs(true);
|
||||
post.setVideoUrl(url);
|
||||
post.setGfycatId(url.substring(url.lastIndexOf("/") + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,6 +52,10 @@ public class Post implements Parcelable {
|
||||
private String url;
|
||||
private String videoUrl;
|
||||
private String videoDownloadUrl;
|
||||
private String gfycatId;
|
||||
private boolean isGfycat;
|
||||
private boolean isRedgifs;
|
||||
private boolean loadGfyOrRedgifsVideoSuccess;
|
||||
private String permalink;
|
||||
private String flair;
|
||||
private String awards;
|
||||
@ -202,6 +206,10 @@ public class Post implements Parcelable {
|
||||
url = in.readString();
|
||||
videoUrl = in.readString();
|
||||
videoDownloadUrl = in.readString();
|
||||
gfycatId = in.readString();
|
||||
isGfycat = in.readByte() != 0;
|
||||
isRedgifs = in.readByte() != 0;
|
||||
loadGfyOrRedgifsVideoSuccess = in.readByte() != 0;
|
||||
permalink = in.readString();
|
||||
flair = in.readString();
|
||||
awards = in.readString();
|
||||
@ -353,6 +361,38 @@ public class Post implements Parcelable {
|
||||
this.videoDownloadUrl = videoDownloadUrl;
|
||||
}
|
||||
|
||||
public String getGfycatId() {
|
||||
return gfycatId;
|
||||
}
|
||||
|
||||
public void setGfycatId(String gfycatId) {
|
||||
this.gfycatId = gfycatId;
|
||||
}
|
||||
|
||||
public boolean isGfycat() {
|
||||
return isGfycat;
|
||||
}
|
||||
|
||||
public void setIsGfycat(boolean isGfycat) {
|
||||
this.isGfycat = isGfycat;
|
||||
}
|
||||
|
||||
public boolean isRedgifs() {
|
||||
return isRedgifs;
|
||||
}
|
||||
|
||||
public void setIsRedgifs(boolean isRedgifs) {
|
||||
this.isRedgifs = isRedgifs;
|
||||
}
|
||||
|
||||
public boolean isLoadGfyOrRedgifsVideoSuccess() {
|
||||
return loadGfyOrRedgifsVideoSuccess;
|
||||
}
|
||||
|
||||
public void setLoadGfyOrRedgifsVideoSuccess(boolean loadGfyOrRedgifsVideoSuccess) {
|
||||
this.loadGfyOrRedgifsVideoSuccess = loadGfyOrRedgifsVideoSuccess;
|
||||
}
|
||||
|
||||
public String getPermalink() {
|
||||
return permalink;
|
||||
}
|
||||
@ -512,6 +552,10 @@ public class Post implements Parcelable {
|
||||
parcel.writeString(url);
|
||||
parcel.writeString(videoUrl);
|
||||
parcel.writeString(videoDownloadUrl);
|
||||
parcel.writeString(gfycatId);
|
||||
parcel.writeByte((byte) (isGfycat ? 1 : 0));
|
||||
parcel.writeByte((byte) (isRedgifs ? 1 : 0));
|
||||
parcel.writeByte((byte) (loadGfyOrRedgifsVideoSuccess ? 1 : 0));
|
||||
parcel.writeString(permalink);
|
||||
parcel.writeString(flair);
|
||||
parcel.writeString(awards);
|
||||
|
Loading…
Reference in New Issue
Block a user