diff options
Diffstat (limited to '')
33 files changed, 1 insertions, 1616 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 53394d05..eda0bba2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -71,12 +71,6 @@ android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="adjustResize" /> <activity - android:name=".activities.RPANActivity" - android:configChanges="orientation|screenSize|layoutDirection" - android:parentActivityName=".activities.MainActivity" - android:theme="@style/AppTheme.TranslucentStatusBar" - android:windowSoftInputMode="adjustPan" /> - <activity android:name=".activities.LockScreenActivity" android:theme="@style/AppTheme.NoActionBar" /> <activity diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java index 8b8f5533..2bf647ec 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java @@ -37,7 +37,6 @@ import ml.docilealligator.infinityforreddit.activities.PostLinkActivity; import ml.docilealligator.infinityforreddit.activities.PostPollActivity; import ml.docilealligator.infinityforreddit.activities.PostTextActivity; import ml.docilealligator.infinityforreddit.activities.PostVideoActivity; -import ml.docilealligator.infinityforreddit.activities.RPANActivity; import ml.docilealligator.infinityforreddit.activities.ReportActivity; import ml.docilealligator.infinityforreddit.activities.RulesActivity; import ml.docilealligator.infinityforreddit.activities.SearchActivity; @@ -81,7 +80,6 @@ import ml.docilealligator.infinityforreddit.fragments.UserListingFragment; import ml.docilealligator.infinityforreddit.fragments.ViewImgurImageFragment; import ml.docilealligator.infinityforreddit.fragments.ViewImgurVideoFragment; import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment; -import ml.docilealligator.infinityforreddit.fragments.ViewRPANBroadcastFragment; import ml.docilealligator.infinityforreddit.fragments.ViewRedditGalleryImageOrGifFragment; import ml.docilealligator.infinityforreddit.fragments.ViewRedditGalleryVideoFragment; import ml.docilealligator.infinityforreddit.services.DownloadMediaService; @@ -281,10 +279,6 @@ public interface AppComponent { void inject(LockScreenActivity lockScreenActivity); - void inject(RPANActivity rpanActivity); - - void inject(ViewRPANBroadcastFragment viewRPANBroadcastFragment); - void inject(PostGalleryActivity postGalleryActivity); void inject(TrendingActivity trendingActivity); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/RPANBroadcast.java b/app/src/main/java/ml/docilealligator/infinityforreddit/RPANBroadcast.java deleted file mode 100644 index d7c936c2..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/RPANBroadcast.java +++ /dev/null @@ -1,236 +0,0 @@ -package ml.docilealligator.infinityforreddit; - -import android.os.Parcel; -import android.os.Parcelable; - -import ml.docilealligator.infinityforreddit.utils.APIUtils; - -public class RPANBroadcast implements Parcelable { - - public int upvotes; - public int downvotes; - public int uniqueWatchers; - public int continuousWatchers; - public int totalContinuousWatchers; - public boolean chatDisabled; - public double broadcastTime; - public double estimatedRemainingTime; - - public RPANPost rpanPost; - public RPANStream rpanStream; - - public RPANBroadcast(int upvotes, int downvotes, int uniqueWatchers, int continuousWatchers, - int totalContinuousWatchers, boolean chatDisabled, double broadcastTime, - double estimatedRemainingTime, RPANPost rpanPost, RPANStream rpanStream) { - this.upvotes = upvotes; - this.downvotes = downvotes; - this.uniqueWatchers = uniqueWatchers; - this.continuousWatchers = continuousWatchers; - this.totalContinuousWatchers = totalContinuousWatchers; - this.chatDisabled = chatDisabled; - this.broadcastTime = broadcastTime; - this.estimatedRemainingTime = estimatedRemainingTime; - this.rpanPost = rpanPost; - this.rpanStream = rpanStream; - } - - protected RPANBroadcast(Parcel in) { - upvotes = in.readInt(); - downvotes = in.readInt(); - uniqueWatchers = in.readInt(); - continuousWatchers = in.readInt(); - totalContinuousWatchers = in.readInt(); - chatDisabled = in.readByte() != 0; - broadcastTime = in.readDouble(); - estimatedRemainingTime = in.readDouble(); - rpanPost = in.readParcelable(RPANPost.class.getClassLoader()); - rpanStream = in.readParcelable(RPANStream.class.getClassLoader()); - } - - public static final Creator<RPANBroadcast> CREATOR = new Creator<RPANBroadcast>() { - @Override - public RPANBroadcast createFromParcel(Parcel in) { - return new RPANBroadcast(in); - } - - @Override - public RPANBroadcast[] newArray(int size) { - return new RPANBroadcast[size]; - } - }; - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel parcel, int i) { - parcel.writeInt(upvotes); - parcel.writeInt(downvotes); - parcel.writeInt(uniqueWatchers); - parcel.writeInt(continuousWatchers); - parcel.writeInt(totalContinuousWatchers); - parcel.writeByte((byte) (chatDisabled ? 1 : 0)); - parcel.writeDouble(broadcastTime); - parcel.writeDouble(estimatedRemainingTime); - parcel.writeParcelable(rpanPost, i); - parcel.writeParcelable(rpanStream, i); - } - - public static class RPANPost implements Parcelable { - public String fullname; - public String title; - public String subredditName; - public String subredditIconUrl; - public String username; - public int postScore; - public String voteState; - public double upvoteRatio; - public String postPermalink; - public String rpanUrl; - public boolean isNsfw; - public boolean isLocked; - public boolean isArchived; - public boolean isSpoiler; - public String suggestedCommentSort; - public String liveCommentsWebsocketUrl; - - public RPANPost(String fullname, String title, String subredditName, String subredditIconUrl, String username, - int postScore, String voteState, double upvoteRatio, String postPermalink, String rpanUrl, - boolean isNsfw, boolean isLocked, boolean isArchived, boolean isSpoiler, - String suggestedCommentSort, String liveCommentsWebsocketUrl) { - this.fullname = fullname; - this.title = title; - this.subredditName = subredditName; - this.subredditIconUrl = subredditIconUrl; - this.username = username; - this.postScore = postScore; - this.voteState = voteState; - this.upvoteRatio = upvoteRatio; - this.postPermalink = APIUtils.API_BASE_URI + postPermalink; - this.rpanUrl = rpanUrl; - this.isNsfw = isNsfw; - this.isLocked = isLocked; - this.isArchived = isArchived; - this.isSpoiler = isSpoiler; - this.suggestedCommentSort = suggestedCommentSort; - this.liveCommentsWebsocketUrl = liveCommentsWebsocketUrl; - } - - protected RPANPost(Parcel in) { - fullname = in.readString(); - title = in.readString(); - subredditName = in.readString(); - subredditIconUrl = in.readString(); - username = in.readString(); - postScore = in.readInt(); - voteState = in.readString(); - upvoteRatio = in.readDouble(); - postPermalink = in.readString(); - rpanUrl = in.readString(); - isNsfw = in.readByte() != 0; - isLocked = in.readByte() != 0; - isArchived = in.readByte() != 0; - isSpoiler = in.readByte() != 0; - suggestedCommentSort = in.readString(); - liveCommentsWebsocketUrl = in.readString(); - } - - public static final Creator<RPANPost> CREATOR = new Creator<RPANPost>() { - @Override - public RPANPost createFromParcel(Parcel in) { - return new RPANPost(in); - } - - @Override - public RPANPost[] newArray(int size) { - return new RPANPost[size]; - } - }; - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel parcel, int i) { - parcel.writeString(fullname); - parcel.writeString(title); - parcel.writeString(subredditName); - parcel.writeString(subredditIconUrl); - parcel.writeString(username); - parcel.writeInt(postScore); - parcel.writeString(voteState); - parcel.writeDouble(upvoteRatio); - parcel.writeString(postPermalink); - parcel.writeString(rpanUrl); - parcel.writeByte((byte) (isNsfw ? 1 : 0)); - parcel.writeByte((byte) (isLocked ? 1 : 0)); - parcel.writeByte((byte) (isArchived ? 1 : 0)); - parcel.writeByte((byte) (isSpoiler ? 1 : 0)); - parcel.writeString(suggestedCommentSort); - parcel.writeString(liveCommentsWebsocketUrl); - } - } - - public static class RPANStream implements Parcelable { - public String streamId; - public String hlsUrl; - public String thumbnail; - public int width; - public int height; - public long publishAt; - public String state; - - public RPANStream(String streamId, String hlsUrl, String thumbnail, int width, int height, long publishAt, - String state) { - this.streamId = streamId; - this.hlsUrl = hlsUrl; - this.thumbnail = thumbnail; - this.width = width; - this.height = height; - this.publishAt = publishAt; - this.state = state; - } - - protected RPANStream(Parcel in) { - streamId = in.readString(); - hlsUrl = in.readString(); - thumbnail = in.readString(); - width = in.readInt(); - height = in.readInt(); - publishAt = in.readLong(); - state = in.readString(); - } - - public static final Creator<RPANStream> CREATOR = new Creator<RPANStream>() { - @Override - public RPANStream createFromParcel(Parcel in) { - return new RPANStream(in); - } - - @Override - public RPANStream[] newArray(int size) { - return new RPANStream[size]; - } - }; - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel parcel, int i) { - parcel.writeString(streamId); - parcel.writeString(hlsUrl); - parcel.writeString(thumbnail); - parcel.writeInt(width); - parcel.writeInt(height); - parcel.writeLong(publishAt); - parcel.writeString(state); - } - } -} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/RPANComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/RPANComment.java deleted file mode 100644 index 077031bf..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/RPANComment.java +++ /dev/null @@ -1,15 +0,0 @@ -package ml.docilealligator.infinityforreddit; - -public class RPANComment { - public String author; - public String authorIconImage; - public String content; - public long createdUTC; - - public RPANComment(String author, String authorIconImage, String content, long createdUTC) { - this.author = author; - this.authorIconImage = authorIconImage; - this.content = content; - this.createdUTC = createdUTC; - } -} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java index 1969e71f..f8ce9884 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java @@ -49,7 +49,6 @@ public class LinkResolverActivity extends AppCompatActivity { private static final String IMGUR_GALLERY_PATTERN = "/gallery/\\w+/?"; private static final String IMGUR_ALBUM_PATTERN = "/(album|a)/\\w+/?"; private static final String IMGUR_IMAGE_PATTERN = "/\\w+/?"; - private static final String RPAN_BROADCAST_PATTERN = "/rpan/r/[\\w-]+/\\w+/?\\w+/?"; private static final String WIKI_PATTERN = "/[rR]/[\\w-]+/(wiki|w)(?:/[\\w-]+)*"; private static final String GOOGLE_AMP_PATTERN = "/amp/s/amp.reddit.com/.*"; private static final String STREAMABLE_PATTERN = "/\\w+/?"; @@ -248,10 +247,6 @@ public class LinkResolverActivity extends AppCompatActivity { intent.putExtra(ViewSubredditDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname); intent.putExtra(ViewSubredditDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName); startActivity(intent); - } else if (path.matches(RPAN_BROADCAST_PATTERN)) { - Intent intent = new Intent(this, RPANActivity.class); - intent.putExtra(RPANActivity.EXTRA_RPAN_BROADCAST_FULLNAME_OR_ID, path.substring(path.lastIndexOf('/') + 1)); - startActivity(intent); } else if (authority.equals("redd.it") && path.matches(REDD_IT_POST_PATTERN)) { Intent intent = new Intent(this, ViewPostDetailActivity.class); intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, path.substring(1)); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java index 43d41e8a..bbc23811 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java @@ -779,8 +779,6 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true); } else if (stringId == R.string.history) { intent = new Intent(MainActivity.this, HistoryActivity.class); - } else if (stringId == R.string.rpan) { - intent = new Intent(MainActivity.this, RPANActivity.class); } else if (stringId == R.string.trending) { intent = new Intent(MainActivity.this, TrendingActivity.class); } else if (stringId == R.string.upvoted) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/RPANActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/RPANActivity.java deleted file mode 100644 index ecc459a4..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/RPANActivity.java +++ /dev/null @@ -1,426 +0,0 @@ -package ml.docilealligator.infinityforreddit.activities; - -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.content.SharedPreferences; -import android.graphics.Color; -import android.graphics.Typeface; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; -import android.media.AudioManager; -import android.os.Bundle; -import android.os.Handler; -import android.text.Html; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; -import androidx.recyclerview.widget.RecyclerView; -import androidx.viewpager2.adapter.FragmentStateAdapter; -import androidx.viewpager2.widget.ViewPager2; - -import com.evernote.android.state.State; -import com.google.android.material.snackbar.Snackbar; -import com.livefront.bridge.Bridge; - -import org.greenrobot.eventbus.EventBus; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.concurrent.Executor; - -import javax.inject.Inject; -import javax.inject.Named; - -import butterknife.BindView; -import butterknife.ButterKnife; -import ml.docilealligator.infinityforreddit.CustomFontReceiver; -import ml.docilealligator.infinityforreddit.Infinity; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.RPANBroadcast; -import ml.docilealligator.infinityforreddit.apis.Strapi; -import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; -import ml.docilealligator.infinityforreddit.font.ContentFontFamily; -import ml.docilealligator.infinityforreddit.font.ContentFontStyle; -import ml.docilealligator.infinityforreddit.font.FontFamily; -import ml.docilealligator.infinityforreddit.font.FontStyle; -import ml.docilealligator.infinityforreddit.font.TitleFontFamily; -import ml.docilealligator.infinityforreddit.font.TitleFontStyle; -import ml.docilealligator.infinityforreddit.fragments.ViewRPANBroadcastFragment; -import ml.docilealligator.infinityforreddit.utils.JSONUtils; -import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; -import ml.docilealligator.infinityforreddit.utils.Utils; -import okhttp3.ResponseBody; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; -import retrofit2.Retrofit; - -public class RPANActivity extends AppCompatActivity implements CustomFontReceiver { - - public static final String EXTRA_RPAN_BROADCAST_FULLNAME_OR_ID = "ERBFOI"; - - @BindView(R.id.coordinator_layout_rpan_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.view_pager_2_rpan_activity) - ViewPager2 viewPager2; - @BindView(R.id.progress_bar_rpan_activity) - ProgressBar progressBar; - @Inject - @Named("strapi") - Retrofit strapiRetrofit; - @Inject - @Named("default") - SharedPreferences mSharedPreferences; - @Inject - CustomThemeWrapper mCustomThemeWrapper; - @Inject - Executor mExecutor; - @State - ArrayList<RPANBroadcast> rpanBroadcasts; - @State - String nextCursor; - public Typeface typeface; - private SectionsPagerAdapter sectionsPagerAdapter; - - @Override - protected void onCreate(Bundle savedInstanceState) { - ((Infinity) getApplication()).getAppComponent().inject(this); - - super.onCreate(savedInstanceState); - - getTheme().applyStyle(R.style.Theme_Normal, true); - - getTheme().applyStyle(FontStyle.valueOf(mSharedPreferences - .getString(SharedPreferencesUtils.FONT_SIZE_KEY, FontStyle.Normal.name())).getResId(), true); - - getTheme().applyStyle(TitleFontStyle.valueOf(mSharedPreferences - .getString(SharedPreferencesUtils.TITLE_FONT_SIZE_KEY, TitleFontStyle.Normal.name())).getResId(), true); - - getTheme().applyStyle(ContentFontStyle.valueOf(mSharedPreferences - .getString(SharedPreferencesUtils.CONTENT_FONT_SIZE_KEY, ContentFontStyle.Normal.name())).getResId(), true); - - getTheme().applyStyle(FontFamily.valueOf(mSharedPreferences - .getString(SharedPreferencesUtils.FONT_FAMILY_KEY, FontFamily.Default.name())).getResId(), true); - - getTheme().applyStyle(TitleFontFamily.valueOf(mSharedPreferences - .getString(SharedPreferencesUtils.TITLE_FONT_FAMILY_KEY, TitleFontFamily.Default.name())).getResId(), true); - - getTheme().applyStyle(ContentFontFamily.valueOf(mSharedPreferences - .getString(SharedPreferencesUtils.CONTENT_FONT_FAMILY_KEY, ContentFontFamily.Default.name())).getResId(), true); - - setContentView(R.layout.activity_rpanactivity); - - setVolumeControlStream(AudioManager.STREAM_MUSIC); - - Bridge.restoreInstanceState(this, savedInstanceState); - - ButterKnife.bind(this); - - ActionBar actionBar = getSupportActionBar(); - Drawable upArrow = getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp); - actionBar.setHomeAsUpIndicator(upArrow); - actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000"))); - actionBar.setTitle(Utils.getTabTextWithCustomFont(typeface, Html.fromHtml("<font color=\"#FFFFFF\">" + getString(R.string.rpan_activity_label) + "</font>"))); - - if (rpanBroadcasts == null) { - loadRPANVideos(); - } else { - initializeViewPager(); - } - } - - private void loadRPANVideos() { - String rpanBroadcastFullNameOrId = getIntent().getStringExtra(EXTRA_RPAN_BROADCAST_FULLNAME_OR_ID); - if (rpanBroadcastFullNameOrId == null) { - strapiRetrofit.create(Strapi.class).getAllBroadcasts().enqueue(new Callback<String>() { - @Override - public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) { - progressBar.setVisibility(View.GONE); - if (response.isSuccessful()) { - parseRPANBroadcasts(response.body()); - } else { - try { - ResponseBody responseBody = response.errorBody(); - if (responseBody != null) { - JSONObject errorObject = new JSONObject(responseBody.string()); - String errorMessage = errorObject.getString(JSONUtils.DATA_KEY); - if (!errorMessage.isEmpty() && !errorMessage.equals("null")) { - Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_LONG).show(); - } else { - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - } else { - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - } catch (IOException | JSONException e) { - e.printStackTrace(); - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - } - } - - @Override - public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) { - progressBar.setVisibility(View.GONE); - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - }); - } else { - strapiRetrofit.create(Strapi.class).getRPANBroadcast(rpanBroadcastFullNameOrId).enqueue(new Callback<String>() { - @Override - public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) { - progressBar.setVisibility(View.GONE); - if (response.isSuccessful()) { - Handler handler = new Handler(); - mExecutor.execute(() -> { - try { - rpanBroadcasts = new ArrayList<>(); - rpanBroadcasts.add(parseSingleRPANBroadcast(new JSONObject(response.body()).getJSONObject(JSONUtils.DATA_KEY))); - handler.post(() -> initializeViewPager()); - } catch (JSONException e) { - e.printStackTrace(); - handler.post(() -> Toast.makeText(RPANActivity.this, - R.string.parse_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show()); - } - }); - } else { - try { - ResponseBody responseBody = response.errorBody(); - if (responseBody != null) { - JSONObject errorObject = new JSONObject(responseBody.string()); - String errorMessage = errorObject.getString(JSONUtils.DATA_KEY); - if (!errorMessage.isEmpty() && !errorMessage.equals("null")) { - Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_LONG).show(); - } else { - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - } else { - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - } catch (IOException | JSONException e) { - e.printStackTrace(); - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - } - } - - @Override - public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) { - progressBar.setVisibility(View.GONE); - Toast.makeText(RPANActivity.this, - R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show(); - } - }); - } - } - - private void parseRPANBroadcasts(String response) { - Handler handler = new Handler(); - mExecutor.execute(() -> { - try { - ArrayList<RPANBroadcast> rpanBroadcasts = new ArrayList<>(); - JSONObject responseObject = new JSONObject(response); - String nextCursor = responseObject.getString(JSONUtils.NEXT_CURSOR_KEY); - - JSONArray dataArray = responseObject.getJSONArray(JSONUtils.DATA_KEY); - for (int i = 0; i < dataArray.length(); i++) { - try { - JSONObject singleData = dataArray.getJSONObject(i); - rpanBroadcasts.add(parseSingleRPANBroadcast(singleData)); - } catch (JSONException e) { - e.printStackTrace(); - } - } - - handler.post(() -> { - RPANActivity.this.rpanBroadcasts = rpanBroadcasts; - RPANActivity.this.nextCursor = nextCursor; - - initializeViewPager(); - }); - } catch (JSONException e) { - e.printStackTrace(); - handler.post(() -> Toast.makeText(RPANActivity.this, - R.string.parse_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show()); - } - }); - } - - private RPANBroadcast parseSingleRPANBroadcast(JSONObject singleData) throws JSONException { - JSONObject rpanPostObject = singleData.getJSONObject(JSONUtils.POST_KEY); - RPANBroadcast.RPANPost rpanPost = new RPANBroadcast.RPANPost( - rpanPostObject.getString(JSONUtils.ID_KEY), - rpanPostObject.getString(JSONUtils.TITLE_KEY), - rpanPostObject.getJSONObject(JSONUtils.SUBREDDIT_KEY).getString(JSONUtils.NAME_KEY), - rpanPostObject.getJSONObject(JSONUtils.SUBREDDIT_KEY).getJSONObject(JSONUtils.STYLES_KEY).getString(JSONUtils.ICON_KEY), - rpanPostObject.getJSONObject(JSONUtils.AUTHOR_INFO_KEY).getString(JSONUtils.NAME_KEY), - rpanPostObject.getInt(JSONUtils.SCORE_KEY), - rpanPostObject.getString(JSONUtils.VOTE_STATE_KEY), - rpanPostObject.getDouble(JSONUtils.UPVOTE_RATIO_CAMEL_CASE_KEY), - rpanPostObject.getString(JSONUtils.PERMALINK_KEY), - rpanPostObject.getJSONObject(JSONUtils.OUTBOUND_LINK_KEY).getString(JSONUtils.URL_KEY), - rpanPostObject.getBoolean(JSONUtils.IS_NSFW_KEY), - rpanPostObject.getBoolean(JSONUtils.IS_LOCKED_KEY), - rpanPostObject.getBoolean(JSONUtils.IS_ARCHIVED_KEY), - rpanPostObject.getBoolean(JSONUtils.IS_SPOILER), - rpanPostObject.getString(JSONUtils.SUGGESTED_COMMENT_SORT_CAMEL_CASE_KEY), - rpanPostObject.getString(JSONUtils.LIVE_COMMENTS_WEBSOCKET_KEY) - ); - - JSONObject rpanStreamObject = singleData.getJSONObject(JSONUtils.STREAM_KEY); - RPANBroadcast.RPANStream rpanStream = new RPANBroadcast.RPANStream( - rpanStreamObject.getString(JSONUtils.STREAM_ID_KEY), - rpanStreamObject.getString(JSONUtils.HLS_URL_KEY), - rpanStreamObject.getString(JSONUtils.THUMBNAIL_KEY), - rpanStreamObject.getInt(JSONUtils.WIDTH_KEY), - rpanStreamObject.getInt(JSONUtils.HEIGHT_KEY), - rpanStreamObject.getLong(JSONUtils.PUBLISH_AT_KEY), - rpanStreamObject.getString(JSONUtils.STATE_KEY) - ); - - return new RPANBroadcast( - singleData.getInt(JSONUtils.UPVOTES_KEY), - singleData.getInt(JSONUtils.DOWNVOTES_KEY), - singleData.getInt(JSONUtils.UNIQUE_WATCHERS_KEY), - singleData.getInt(JSONUtils.CONTINUOUS_WATCHERS_KEY), - singleData.getInt(JSONUtils.TOTAL_CONTINUOUS_WATCHERS_KEY), - singleData.getBoolean(JSONUtils.CHAT_DISABLED_KEY), - singleData.getDouble(JSONUtils.BROADCAST_TIME_KEY), - singleData.getDouble(JSONUtils.ESTIMATED_REMAINING_TIME_KEY), - rpanPost, - rpanStream - ); - } - - private void initializeViewPager() { - sectionsPagerAdapter = new SectionsPagerAdapter(this); - viewPager2.setAdapter(sectionsPagerAdapter); - viewPager2.setOffscreenPageLimit(3); - fixViewPager2Sensitivity(viewPager2); - } - - private void fixViewPager2Sensitivity(ViewPager2 viewPager2) { - try { - Field recyclerViewField = ViewPager2.class.getDeclaredField("mRecyclerView"); - recyclerViewField.setAccessible(true); - - RecyclerView recyclerView = (RecyclerView) recyclerViewField.get(viewPager2); - - Field touchSlopField = RecyclerView.class.getDeclaredField("mTouchSlop"); - touchSlopField.setAccessible(true); - - Object touchSlopBox = touchSlopField.get(recyclerView); - if (touchSlopBox != null) { - int touchSlop = (int) touchSlopBox; - touchSlopField.set(recyclerView, touchSlop * 4); - } - } catch (NoSuchFieldException | IllegalAccessException ignore) {} - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.rpan_activity, menu); - for (int i = 0; i < menu.size(); i++) { - Utils.setTitleWithCustomFontToMenuItem(typeface, menu.getItem(i), null); - } - return true; - } - - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - return true; - } else if (item.getItemId() == R.id.action_share_rpan_link_rpan_activity) { - if (rpanBroadcasts != null) { - int position = viewPager2.getCurrentItem(); - if (position >= 0 && position < rpanBroadcasts.size()) { - shareLink(rpanBroadcasts.get(position).rpanPost.rpanUrl); - return true; - } - } - } else if (item.getItemId() == R.id.action_share_post_link_rpan_activity) { - if (rpanBroadcasts != null) { - int position = viewPager2.getCurrentItem(); - if (position >= 0 && position < rpanBroadcasts.size()) { - shareLink(rpanBroadcasts.get(position).rpanPost.postPermalink); - return true; - } - } - } - return false; - } - - @Override - protected void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(this); - } - - private void shareLink(String link) { - try { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("text/plain"); - intent.putExtra(Intent.EXTRA_TEXT, link); - startActivity(Intent.createChooser(intent, getString(R.string.share))); - } catch (ActivityNotFoundException e) { - Toast.makeText(this, R.string.no_activity_found_for_share, Toast.LENGTH_SHORT).show(); - } - } - - @Override - public void setCustomFont(Typeface typeface, Typeface titleTypeface, Typeface contentTypeface) { - this.typeface = typeface; - } - - private class SectionsPagerAdapter extends FragmentStateAdapter { - - public SectionsPagerAdapter(FragmentActivity fa) { - super(fa); - } - - @NonNull - @Override - public Fragment createFragment(int position) { - ViewRPANBroadcastFragment fragment = new ViewRPANBroadcastFragment(); - Bundle bundle = new Bundle(); - bundle.putParcelable(ViewRPANBroadcastFragment.EXTRA_RPAN_BROADCAST, rpanBroadcasts.get(position)); - fragment.setArguments(bundle); - return fragment; - } - - @Nullable - private Fragment getCurrentFragment() { - if (viewPager2 == null || getSupportFragmentManager() == null) { - return null; - } - return getSupportFragmentManager().findFragmentByTag("f" + viewPager2.getCurrentItem()); - } - - @Override - public int getItemCount() { - return rpanBroadcasts == null ? 0 : rpanBroadcasts.size(); - } - } -}
\ No newline at end of file diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RPANCommentStreamRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RPANCommentStreamRecyclerViewAdapter.java deleted file mode 100644 index d3c029af..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RPANCommentStreamRecyclerViewAdapter.java +++ /dev/null @@ -1,89 +0,0 @@ -package ml.docilealligator.infinityforreddit.adapters; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.RequestManager; -import com.bumptech.glide.request.RequestOptions; - -import java.util.ArrayList; - -import jp.wasabeef.glide.transformations.RoundedCornersTransformation; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.RPANComment; -import ml.docilealligator.infinityforreddit.activities.RPANActivity; - -public class RPANCommentStreamRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { - private RPANActivity activity; - private RequestManager glide; - private ArrayList<RPANComment> rpanComments; - - public RPANCommentStreamRecyclerViewAdapter(RPANActivity activity) { - this.activity = activity; - glide = Glide.with(activity); - rpanComments = new ArrayList<>(); - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new RPANCommentViewHolder(LayoutInflater.from(parent.getContext()).inflate( - R.layout.item_rpan_comment, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - if (holder instanceof RPANCommentViewHolder) { - ((RPANCommentViewHolder) holder).authorTextView.setText(rpanComments.get(position).author); - ((RPANCommentViewHolder) holder).contentTextView.setText(rpanComments.get(position).content); - glide.load(rpanComments.get(position).authorIconImage) - .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .error(glide.load(R.drawable.subreddit_default_icon) - .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(((RPANCommentViewHolder) holder).iconImageView); - } - } - - @Override - public int getItemCount() { - return rpanComments == null ? 0 : rpanComments.size(); - } - - @Override - public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) { - super.onViewRecycled(holder); - if (holder instanceof RPANCommentViewHolder) { - glide.clear(((RPANCommentViewHolder) holder).iconImageView); - } - } - - public void addRPANComment(RPANComment rpanComment) { - rpanComments.add(rpanComment); - notifyItemInserted(rpanComments.size() - 1); - } - - class RPANCommentViewHolder extends RecyclerView.ViewHolder { - ImageView iconImageView; - TextView authorTextView; - TextView contentTextView; - - public RPANCommentViewHolder(@NonNull View itemView) { - super(itemView); - iconImageView = itemView.findViewById(R.id.icon_image_view_item_rpan_comment); - authorTextView = itemView.findViewById(R.id.author_text_view_item_rpan_comment); - contentTextView = itemView.findViewById(R.id.content_text_view_item_rpan_comment); - - if (activity.typeface != null) { - authorTextView.setTypeface(activity.typeface); - contentTextView.setTypeface(activity.typeface); - } - } - } -} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java index ab6ed539..487e9d33 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java @@ -22,7 +22,7 @@ public class RedditSectionRecyclerViewAdapter extends RecyclerView.Adapter<Recyc private static final int VIEW_TYPE_MENU_GROUP_TITLE = 1; private static final int VIEW_TYPE_MENU_ITEM = 2; - private static final int REDDIT_SECTION_ITEMS = 2; + private static final int REDDIT_SECTION_ITEMS = 1; private BaseActivity baseActivity; private int primaryTextColor; @@ -85,10 +85,6 @@ public class RedditSectionRecyclerViewAdapter extends RecyclerView.Adapter<Recyc switch (position) { case 1: - stringId = R.string.rpan; - drawableId = R.drawable.ic_rpan_24dp; - break; - case 2: stringId = R.string.trending; drawableId = R.drawable.ic_trending_24dp; break; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/apis/Strapi.java b/app/src/main/java/ml/docilealligator/infinityforreddit/apis/Strapi.java deleted file mode 100644 index e68b8850..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/apis/Strapi.java +++ /dev/null @@ -1,13 +0,0 @@ -package ml.docilealligator.infinityforreddit.apis; - -import retrofit2.Call; -import retrofit2.http.GET; -import retrofit2.http.Path; - -public interface Strapi { - @GET("/broadcasts") - Call<String> getAllBroadcasts(); - - @GET("/videos/{rpan_id_or_fullname}") - Call<String> getRPANBroadcast(@Path("rpan_id_or_fullname") String rpanIdOrFullname); -} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRPANBroadcastFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRPANBroadcastFragment.java deleted file mode 100644 index b00f6d4c..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRPANBroadcastFragment.java +++ /dev/null @@ -1,423 +0,0 @@ -package ml.docilealligator.infinityforreddit.fragments; - -import android.app.AlertDialog; -import android.app.Dialog; -import android.content.Context; -import android.content.SharedPreferences; -import android.content.res.Configuration; -import android.os.Bundle; -import android.os.Handler; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.google.android.exoplayer2.ExoPlaybackException; -import com.google.android.exoplayer2.ExoPlayer; -import com.google.android.exoplayer2.MediaItem; -import com.google.android.exoplayer2.Player; -import com.google.android.exoplayer2.Tracks; -import com.google.android.exoplayer2.source.BehindLiveWindowException; -import com.google.android.exoplayer2.source.hls.HlsMediaSource; -import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; -import com.google.android.exoplayer2.ui.PlayerView; -import com.google.android.exoplayer2.ui.TrackSelectionDialogBuilder; -import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultHttpDataSource; -import com.google.android.exoplayer2.upstream.cache.CacheDataSource; -import com.google.android.exoplayer2.upstream.cache.SimpleCache; -import com.google.common.collect.ImmutableList; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.concurrent.Executor; - -import javax.inject.Inject; -import javax.inject.Named; - -import butterknife.BindView; -import butterknife.ButterKnife; -import jp.wasabeef.glide.transformations.RoundedCornersTransformation; -import ml.docilealligator.infinityforreddit.Infinity; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.RPANBroadcast; -import ml.docilealligator.infinityforreddit.RPANComment; -import ml.docilealligator.infinityforreddit.activities.RPANActivity; -import ml.docilealligator.infinityforreddit.adapters.RPANCommentStreamRecyclerViewAdapter; -import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; -import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed; -import ml.docilealligator.infinityforreddit.utils.APIUtils; -import ml.docilealligator.infinityforreddit.utils.JSONUtils; -import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.WebSocket; -import okhttp3.WebSocketListener; -import retrofit2.Retrofit; - -public class ViewRPANBroadcastFragment extends Fragment { - - public static final String EXTRA_RPAN_BROADCAST = "ERB"; - private static final String IS_MUTE_STATE = "IMS"; - - @BindView(R.id.constraint_layout_exo_rpan_broadcast_playback_control_view) - ConstraintLayout constraintLayout; - @BindView(R.id.player_view_view_rpan_broadcast_fragment) - PlayerView playerView; - @BindView(R.id.subreddit_icon_image_view_exo_rpan_broadcast_playback_control_view) - ImageView subredditIconImageView; - @BindView(R.id.subreddit_name_text_view_exo_rpan_broadcast_playback_control_view) - TextView subredditNameTextView; - @BindView(R.id.username_text_view_exo_rpan_broadcast_playback_control_view) - TextView usernameTextView; - @BindView(R.id.title_text_view_exo_rpan_broadcast_playback_control_view) - TextView titleTextView; - @BindView(R.id.recycler_view_exo_rpan_broadcast_playback_control_view) - RecyclerView recyclerView; - @BindView(R.id.mute_exo_rpan_broadcast_playback_control_view) - ImageButton muteButton; - @BindView(R.id.hd_exo_rpan_broadcast_playback_control_view) - ImageButton hdButton; - @Inject - @Named("strapi") - Retrofit mStrapiRetrofit; - @Inject - @Named("default") - SharedPreferences mSharedPreferences; - @Inject - @Named("current_account") - SharedPreferences mCurrentAccountSharedPreferences; - @Inject - CustomThemeWrapper mCustomThemeWrapper; - @Inject - Executor mExecutor; - @Inject - @Named("rpan") - OkHttpClient okHttpClient; - @Inject - SimpleCache mSimpleCache; - private RPANActivity mActivity; - private RPANBroadcast rpanBroadcast; - private ExoPlayer player; - private DefaultTrackSelector trackSelector; - private DataSource.Factory dataSourceFactory; - private Handler handler; - private RPANCommentStreamRecyclerViewAdapter adapter; - private WebSocket webSocket; - - private boolean wasPlaying; - private boolean isMute = false; - private long resumePosition = -1; - private boolean isDataSavingMode; - - public ViewRPANBroadcastFragment() { - // Required empty public constructor - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - View rootView = inflater.inflate(R.layout.fragment_view_rpan_broadcast, container, false); - - ((Infinity) mActivity.getApplication()).getAppComponent().inject(this); - - ButterKnife.bind(this, rootView); - - if (mActivity.typeface != null) { - subredditNameTextView.setTypeface(mActivity.typeface); - usernameTextView.setTypeface(mActivity.typeface); - titleTextView.setTypeface(mActivity.typeface); - } - - rpanBroadcast = getArguments().getParcelable(EXTRA_RPAN_BROADCAST); - - if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || getResources().getBoolean(R.bool.isTablet)) { - //Set player controller bottom margin in order to display it above the navbar - int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android"); - //LinearLayout controllerLinearLayout = findViewById(R.id.linear_layout_exo_playback_control_view); - ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) constraintLayout.getLayoutParams(); - params.bottomMargin = getResources().getDimensionPixelSize(resourceId); - } else { - //Set player controller right margin in order to display it above the navbar - int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android"); - //LinearLayout controllerLinearLayout = findViewById(R.id.linear_layout_exo_playback_control_view); - ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) constraintLayout.getLayoutParams(); - params.rightMargin = getResources().getDimensionPixelSize(resourceId); - } - - playerView.setControllerVisibilityListener(visibility -> { - switch (visibility) { - case View.GONE: - mActivity.getWindow().getDecorView().setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE); - playerView.setControllerShowTimeoutMs(0); - break; - case View.VISIBLE: - mActivity.getWindow().getDecorView().setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); - } - }); - - trackSelector = new DefaultTrackSelector(mActivity); - player = new ExoPlayer.Builder(mActivity).setTrackSelector(trackSelector).build(); - playerView.setPlayer(player); - - wasPlaying = true; - - boolean muteVideo = mSharedPreferences.getBoolean(SharedPreferencesUtils.MUTE_VIDEO, false) || - (mSharedPreferences.getBoolean(SharedPreferencesUtils.MUTE_NSFW_VIDEO, false) && rpanBroadcast.rpanPost.isNsfw); - - if (savedInstanceState != null) { - isMute = savedInstanceState.getBoolean(IS_MUTE_STATE); - if (isMute) { - player.setVolume(0f); - muteButton.setImageResource(R.drawable.ic_mute_24dp); - } else { - player.setVolume(1f); - muteButton.setImageResource(R.drawable.ic_unmute_24dp); - } - } else if (muteVideo) { - isMute = true; - player.setVolume(0f); - muteButton.setImageResource(R.drawable.ic_mute_24dp); - } else { - muteButton.setImageResource(R.drawable.ic_unmute_24dp); - } - - player.addListener(new Player.Listener() { - @Override - public void onTracksChanged(@NonNull Tracks tracks) { - ImmutableList<Tracks.Group> trackGroups = tracks.getGroups(); - if (!trackGroups.isEmpty()) { - if (isDataSavingMode) { - trackSelector.setParameters( - trackSelector.buildUponParameters() - .setMaxVideoSize(720, 720)); - } - - hdButton.setVisibility(View.VISIBLE); - hdButton.setOnClickListener(view -> { - TrackSelectionDialogBuilder builder = new TrackSelectionDialogBuilder(mActivity, getString(R.string.select_video_quality), player, 0); - builder.setShowDisableOption(true); - builder.setAllowAdaptiveSelections(false); - Dialog dialog = builder.build(); - dialog.show(); - if (dialog instanceof AlertDialog) { - ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); - ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); - } - }); - - for (int i = 0; i < trackGroups.size(); i++) { - String mimeType = trackGroups.get(i).getTrackFormat(0).sampleMimeType; - if (mimeType != null && mimeType.contains("audio")) { - muteButton.setVisibility(View.VISIBLE); - muteButton.setOnClickListener(view -> { - if (isMute) { - isMute = false; - player.setVolume(1f); - muteButton.setImageResource(R.drawable.ic_unmute_24dp); - } else { - isMute = true; - player.setVolume(0f); - muteButton.setImageResource(R.drawable.ic_mute_24dp); - } - }); - break; - } - } - } else { - muteButton.setVisibility(View.GONE); - } - } - }); - - Glide.with(mActivity).load(rpanBroadcast.rpanPost.subredditIconUrl) - .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .error(Glide.with(mActivity).load(R.drawable.subreddit_default_icon) - .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(subredditIconImageView); - subredditNameTextView.setText(rpanBroadcast.rpanPost.subredditName); - usernameTextView.setText(rpanBroadcast.rpanPost.username); - titleTextView.setText(rpanBroadcast.rpanPost.title); - - recyclerView.setOnTouchListener(new View.OnTouchListener() { - float x1; - float x2; - float y1; - float y2; - - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - switch (motionEvent.getAction()) { - case MotionEvent.ACTION_DOWN: - x1 = motionEvent.getX(); - y1 = motionEvent.getY(); - return true; - case MotionEvent.ACTION_UP: - x2 = motionEvent.getX(); - y2 = motionEvent.getY(); - - if (x1 == x2 && y1 == y2) { - playerView.hideController(); - } - - return true; - } - - return false; - } - }); - adapter = new RPANCommentStreamRecyclerViewAdapter(mActivity); - recyclerView.setAdapter(adapter); - - handler = new Handler(); - - return rootView; - } - - private boolean isBehindLiveWindow(ExoPlaybackException e) { - if (e.type != ExoPlaybackException.TYPE_SOURCE) { - return false; - } - Throwable cause = e.getSourceException(); - while (cause != null) { - if (cause instanceof BehindLiveWindowException) { - return true; - } - cause = cause.getCause(); - } - return false; - } - - private void parseComment(String commentJson) { - mExecutor.execute(() -> { - try { - JSONObject commentObject = new JSONObject(commentJson); - if (commentObject.getString(JSONUtils.TYPE_KEY).equals("new_comment")) { - JSONObject payload = commentObject.getJSONObject(JSONUtils.PAYLOAD_KEY); - RPANComment rpanComment = new RPANComment( - payload.getString(JSONUtils.AUTHOR_KEY), - payload.getString(JSONUtils.AUTHOR_ICON_IMAGE), - payload.getString(JSONUtils.BODY_KEY), - payload.getLong(JSONUtils.CREATED_UTC_KEY)); - - handler.post(() -> { - LinearLayoutManagerBugFixed manager = ((LinearLayoutManagerBugFixed) recyclerView.getLayoutManager()); - boolean shouldScrollToBottom = false; - if (manager != null) { - int lastPosition = manager.findLastCompletelyVisibleItemPosition(); - int currentItemCount = adapter.getItemCount(); - if (currentItemCount > 0 && lastPosition == currentItemCount - 1) { - shouldScrollToBottom = true; - } - } - adapter.addRPANComment(rpanComment); - if (shouldScrollToBottom) { - recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1); - } - }); - } - } catch (JSONException e) { - e.printStackTrace(); - } - }); - } - - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - outState.putBoolean(IS_MUTE_STATE, isMute); - } - - @Override - public void onResume() { - super.onResume(); - if (dataSourceFactory == null) { - dataSourceFactory = new CacheDataSource.Factory().setCache(mSimpleCache) - .setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory().setUserAgent(APIUtils.USER_AGENT)); - // Prepare the player with the source. - player.prepare(); - player.setMediaSource(new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(rpanBroadcast.rpanStream.hlsUrl))); - if (mSharedPreferences.getBoolean(SharedPreferencesUtils.LOOP_VIDEO, true)) { - player.setRepeatMode(Player.REPEAT_MODE_ALL); - } else { - player.setRepeatMode(Player.REPEAT_MODE_OFF); - } - if (resumePosition > 0) { - player.seekTo(resumePosition); - } - } - - if (wasPlaying) { - player.setPlayWhenReady(true); - } - - if (webSocket == null) { - Request request = new Request.Builder().url(rpanBroadcast.rpanPost.liveCommentsWebsocketUrl).build(); - CommentStreamWebSocketListener listener = new CommentStreamWebSocketListener(this::parseComment); - webSocket = okHttpClient.newWebSocket(request, listener); - } - } - - @Override - public void onPause() { - super.onPause(); - wasPlaying = player.getPlayWhenReady(); - player.setPlayWhenReady(false); - } - - @Override - public void onDestroy() { - super.onDestroy(); - player.seekToDefaultPosition(); - player.stop(true); - player.release(); - - if (webSocket != null) { - webSocket.cancel(); - } - } - - @Override - public void onAttach(@NonNull Context context) { - super.onAttach(context); - mActivity = (RPANActivity) context; - } - - private static class CommentStreamWebSocketListener extends WebSocketListener { - MessageReceivedListener messageReceivedListener; - - CommentStreamWebSocketListener(MessageReceivedListener messageReceivedListener) { - this.messageReceivedListener = messageReceivedListener; - } - - @Override - public void onMessage(@NonNull WebSocket webSocket, @NonNull String text) { - messageReceivedListener.onMessage(text); - } - - interface MessageReceivedListener { - void onMessage(String text); - } - } -}
\ No newline at end of file diff --git a/app/src/main/res/drawable-night/ic_rpan_24dp.xml b/app/src/main/res/drawable-night/ic_rpan_24dp.xml deleted file mode 100644 index 1c8156c1..00000000 --- a/app/src/main/res/drawable-night/ic_rpan_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="@android:color/white" - android:pathData="M21,6h-7.59l3.29,-3.29L16,2l-4,4 -4,-4 -0.71,0.71L10.59,6L3,6c-1.1,0 -2,0.89 -2,2v12c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,8c0,-1.11 -0.9,-2 -2,-2zM21,20L3,20L3,8h18v12zM9,10v8l7,-4z"/> -</vector> diff --git a/app/src/main/res/drawable/ic_rpan_24dp.xml b/app/src/main/res/drawable/ic_rpan_24dp.xml deleted file mode 100644 index bb61e6ff..00000000 --- a/app/src/main/res/drawable/ic_rpan_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="@android:color/black" - android:pathData="M21,6h-7.59l3.29,-3.29L16,2l-4,4 -4,-4 -0.71,0.71L10.59,6L3,6c-1.1,0 -2,0.89 -2,2v12c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,8c0,-1.11 -0.9,-2 -2,-2zM21,20L3,20L3,8h18v12zM9,10v8l7,-4z"/> -</vector> diff --git a/app/src/main/res/layout/activity_rpanactivity.xml b/app/src/main/res/layout/activity_rpanactivity.xml deleted file mode 100644 index b7e22b40..00000000 --- a/app/src/main/res/layout/activity_rpanactivity.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#000000" - android:id="@+id/coordinator_layout_rpan_activity" - android:keepScreenOn="true" - tools:context=".activities.RPANActivity"> - - <androidx.viewpager2.widget.ViewPager2 - android:id="@+id/view_pager_2_rpan_activity" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - - <ProgressBar - android:id="@+id/progress_bar_rpan_activity" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" /> - -</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/exo_rpan_broadcast_playback_control_view.xml b/app/src/main/res/layout/exo_rpan_broadcast_playback_control_view.xml deleted file mode 100644 index 4e224e24..00000000 --- a/app/src/main/res/layout/exo_rpan_broadcast_playback_control_view.xml +++ /dev/null @@ -1,192 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#44000000" - android:id="@+id/constraint_layout_exo_rpan_broadcast_playback_control_view" - android:focusableInTouchMode="true" - xmlns:app="http://schemas.android.com/apk/res-auto"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingStart="16dp" - android:paddingEnd="16dp" - app:layout_constraintBottom_toTopOf="@id/title_text_view_exo_rpan_broadcast_playback_control_view" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="1"> - - <ImageView - android:id="@+id/subreddit_icon_image_view_exo_rpan_broadcast_playback_control_view" - android:layout_width="24dp" - android:layout_height="24dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/subreddit_name_text_view_exo_rpan_broadcast_playback_control_view" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:paddingBottom="4dp" - android:paddingStart="16dp" - android:paddingEnd="16dp" - android:textColor="@color/colorAccent" - app:layout_constraintBottom_toTopOf="@id/username_text_view_exo_rpan_broadcast_playback_control_view" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toEndOf="@id/barrier5" /> - - <TextView - android:id="@+id/username_text_view_exo_rpan_broadcast_playback_control_view" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:paddingStart="16dp" - android:paddingEnd="16dp" - android:textColor="#02BAEE" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/barrier5" /> - - <androidx.constraintlayout.widget.Barrier - android:id="@+id/barrier5" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:barrierDirection="end" - app:constraint_referenced_ids="subreddit_icon_image_view_exo_rpan_broadcast_playback_control_view" /> - - </androidx.constraintlayout.widget.ConstraintLayout> - - <TextView - android:id="@+id/title_text_view_exo_rpan_broadcast_playback_control_view" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="16dp" - android:textColor="#FFFFFF" - android:textSize="20sp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@id/control_linear_layout" - app:layout_constraintVertical_bias="1" /> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/control_linear_layout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:orientation="horizontal" - android:paddingTop="4dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - <ImageButton - android:id="@+id/hd_exo_rpan_broadcast_playback_control_view" - style="@style/ExoMediaButton" - android:src="@drawable/ic_video_quality_24dp" - android:visibility="gone" - app:layout_constraintEnd_toStartOf="@+id/exo_rew" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintHorizontal_chainStyle="spread_inside" - app:layout_constraintStart_toStartOf="parent" - tools:layout_editor_absoluteY="4dp" /> - - <ImageButton - android:id="@id/exo_rew" - style="@style/ExoMediaButton.Rewind" - app:layout_constraintEnd_toStartOf="@+id/exo_play" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toEndOf="@+id/hd_exo_rpan_broadcast_playback_control_view" - tools:layout_editor_absoluteY="4dp" /> - - <ImageButton - android:id="@id/exo_play" - style="@style/ExoMediaButton.Play" - app:layout_constraintEnd_toStartOf="@+id/exo_pause" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toEndOf="@+id/exo_rew" - tools:layout_editor_absoluteY="4dp" /> - - <ImageButton - android:id="@id/exo_pause" - style="@style/ExoMediaButton.Pause" - app:layout_constraintEnd_toStartOf="@+id/exo_ffwd" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toEndOf="@+id/exo_play" - tools:layout_editor_absoluteY="4dp" /> - - <ImageButton - android:id="@id/exo_ffwd" - style="@style/ExoMediaButton.FastForward" - app:layout_constraintEnd_toStartOf="@+id/mute_exo_rpan_broadcast_playback_control_view" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toEndOf="@+id/exo_pause" - tools:layout_editor_absoluteY="4dp" /> - - <ImageButton - android:id="@+id/mute_exo_rpan_broadcast_playback_control_view" - style="@style/ExoMediaButton" - android:visibility="gone" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toEndOf="@+id/exo_ffwd" - tools:layout_editor_absoluteY="4dp" /> - - </androidx.constraintlayout.widget.ConstraintLayout> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/recycler_view_exo_rpan_broadcast_playback_control_view" - android:layout_width="match_parent" - android:layout_height="0dp" - android:paddingTop="16dp" - android:paddingStart="16dp" - android:paddingEnd="16dp" - app:layout_constraintTop_toBottomOf="@id/control_linear_layout" - app:layout_constraintBottom_toTopOf="@id/time_bar_linear_layout" - app:layoutManager="ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed" /> - - <LinearLayout - android:id="@+id/time_bar_linear_layout" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="4dp" - android:padding="16dp" - android:gravity="center_vertical" - android:orientation="horizontal" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent"> - - <TextView android:id="@id/exo_position" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="14sp" - android:textStyle="bold" - android:paddingStart="0dp" - android:paddingEnd="4dp" - android:includeFontPadding="false" - android:textColor="#FFFFFF" - android:fontFamily="?attr/font_family" /> - - <com.google.android.exoplayer2.ui.DefaultTimeBar - android:id="@id/exo_progress" - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="26dp" - app:bar_height="2dp" - app:scrubber_color="@color/colorAccent" - app:played_color="@color/colorAccent" /> - - <TextView android:id="@id/exo_duration" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="14sp" - android:textStyle="bold" - android:paddingStart="4dp" - android:paddingEnd="0dp" - android:includeFontPadding="false" - android:textColor="#FFFFFF" - android:fontFamily="?attr/font_family" /> - - </LinearLayout> - -</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/fragment_view_rpan_broadcast.xml b/app/src/main/res/layout/fragment_view_rpan_broadcast.xml deleted file mode 100644 index abab4f52..00000000 --- a/app/src/main/res/layout/fragment_view_rpan_broadcast.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto" - tools:context=".fragments.ViewRPANBroadcastFragment"> - - <com.google.android.exoplayer2.ui.PlayerView - android:id="@+id/player_view_view_rpan_broadcast_fragment" - android:layout_width="match_parent" - android:layout_height="match_parent" - app:controller_layout_id="@layout/exo_rpan_broadcast_playback_control_view" /> - -</FrameLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/item_rpan_comment.xml b/app/src/main/res/layout/item_rpan_comment.xml deleted file mode 100644 index 54ace9c5..00000000 --- a/app/src/main/res/layout/item_rpan_comment.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginBottom="8dp"> - - <ImageView - android:id="@+id/icon_image_view_item_rpan_comment" - android:layout_width="24dp" - android:layout_height="24dp" - android:layout_gravity="center_vertical" /> - - <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:layout_gravity="center_vertical" - android:layout_marginStart="16dp" - android:layout_marginEnd="0dp" - android:orientation="vertical"> - - <TextView - android:id="@+id/author_text_view_item_rpan_comment" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textColor="#02BAEE" /> - - <TextView - android:id="@+id/content_text_view_item_rpan_comment" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="4dp" - android:textColor="#FFFFFF" /> - - </LinearLayout> - -</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/menu/rpan_activity.xml b/app/src/main/res/menu/rpan_activity.xml deleted file mode 100644 index bb165fd4..00000000 --- a/app/src/main/res/menu/rpan_activity.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<menu xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <item - android:id="@+id/action_share_rpan_link_rpan_activity" - android:orderInCategory="1" - android:title="@string/action_share_rpan_link" - app:showAsAction="never" /> - - <item - android:id="@+id/action_share_post_link_rpan_activity" - android:orderInCategory="1" - android:title="@string/action_share_post_link" - app:showAsAction="never" /> -</menu>
\ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 14519473..a5060585 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1021,12 +1021,9 @@ Zpráva: %2$s"</string> Stále chcete tuto možnost povolit?"</string> <string name="reply">"Odpovědět"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Příspěvek galerie"</string> <string name="trending_activity_label">"Trendy"</string> - <string name="action_share_rpan_link">"Sdílet RPAN odkaz"</string> <string name="action_share_post_link">"Sdílet odkaz příspěvku"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Trendy"</string> <string name="receive_post_reply_notifications">"Získávat oznámení o odpovědích na příspěvek"</string> <string name="bottom_sheet_post_gallery">"Galerie"</string> @@ -1056,9 +1053,6 @@ Pokud ano, přejmenujte je, než povolíte Material You."</string> <string name="upload_image_success">"Obrázek úspěšně nahrán. Klikněte znovu na tlačítko obrázku pro zobrazení nahraných obrázků."</string> <string name="get_image_bitmap_failed">"Nepodařilo se získat bitmapu obrázku"</string> <string name="upload_image_failed">"Nepodařilo se nahrát obrázek"</string> - <string name="load_rpan_broadcasts_failed">"Nepodařilo se načíst vysílání RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Nepodařilo se parsovat vysílání RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Nepodařilo se parsovat vysílání RPAN"</string> <string name="search_comments">"Hledat komentáře"</string> <string name="please_wait_image_is_uploading">"Obrázek se stále nahrává. Čekejte prosím."</string> <string name="error_fetch_trending_search">"Získávání trendů selhalo. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e099d98d..15ef5334 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1104,12 +1104,9 @@ Nachricht: %2$s"</string> Möchtest du trotzdem fortfahren?"</string> <string name="reply">"Antworten"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Galeriebeitrag"</string> <string name="trending_activity_label">"Trending"</string> - <string name="action_share_rpan_link">"Teile RPAN-Link"</string> <string name="action_share_post_link">"Teile Beitragslink"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Trending"</string> <string name="receive_post_reply_notifications">"Benachrichtigungen für Antworten auf Beiträge empfangen"</string> <string name="bottom_sheet_post_gallery">"Galerie"</string> @@ -1141,9 +1138,6 @@ Benenne diese Themen sonst neu."</string> <string name="upload_image_success">"Bild erfolgreich hochgeladen. Klicken Sie nochmal auf Bilder um hochgeladene Bilder zu sehen."</string> <string name="get_image_bitmap_failed">"Konnte das Bitmap des Bildes nicht herunterladen"</string> <string name="upload_image_failed">"Das Bild konnte nicht hochgeladen werden"</string> - <string name="load_rpan_broadcasts_failed">"RPAN Broadcasts konnten nicht geladen werden"</string> - <string name="parse_rpan_broadcasts_failed">"RPAN Broadcasts konnten nicht gelesen werden"</string> - <string name="parse_rpan_broadcast_failed">"RPAN Broadcast konnte nicht gelesen werden"</string> <string name="search_comments">"Kommentare durchsuchen"</string> <string name="please_wait_image_is_uploading">"Ein Bild wird noch hochgeladen. Bitte warten Sie."</string> diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 2eb93d6b..ef5f352b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1074,12 +1074,9 @@ Mensaje: %2$s"</string> ¿Seguro que quieres activarlo?"</string> <string name="reply">"Responder"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Publicación de galería"</string> <string name="trending_activity_label">"Tendencias"</string> - <string name="action_share_rpan_link">"Compartir enlace de RPAN"</string> <string name="action_share_post_link">"Compartir enlace de publicación"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Tendencias"</string> <string name="receive_post_reply_notifications">"Recibir notificaciones de respuesta a publicaciones"</string> <string name="bottom_sheet_post_gallery">"Galería"</string> @@ -1109,9 +1106,6 @@ De lo contrario, cambia el nombre antes de habilitar Material You."</string> <string name="upload_image_success">"Imagen subida correctamente. Haga clic en el botón de imagen nuevamente para ver las imágenes cargadas."</string> <string name="get_image_bitmap_failed">"No es posible obtener el mapa de bits de la imagen"</string> <string name="upload_image_failed">"No es posible subir la imagen"</string> - <string name="load_rpan_broadcasts_failed">"No es posible cargar transmisiones RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"No es posible analizar las transmisiones RPAN"</string> - <string name="parse_rpan_broadcast_failed">"No es posible analizar la transmisión RPAN"</string> <string name="search_comments">"Buscar comentarios"</string> <string name="please_wait_image_is_uploading">"Aún se está cargando una imagen. Espere por favor."</string> <string name="error_fetch_trending_search">"Falló la obtención de las búsquedas de tendencias. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 75269275..da8f486c 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1091,11 +1091,8 @@ Les onglets pourraient perdre tout leur contenu quand vous passez d'un onglet à Vous voulez toujours l'activer ?"</string> <string name="reply">"Répondre"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="trending_activity_label">"Tendance"</string> - <string name="action_share_rpan_link">"Partager le lien RPAN"</string> <string name="action_share_post_link">"Partager le lien du Post"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Tendance"</string> <string name="receive_post_reply_notifications">"Recevoir des notifications de réponse de publication"</string> <string name="bottom_sheet_post_gallery">"Gallerie"</string> @@ -1124,9 +1121,6 @@ Sinon, renommez-les avant d'activer Material You."</string> <string name="upload_image_success">"Image uploadée avec succès. Clique sur le bouton image de nouveau pour voir les images uploadées."</string> <string name="get_image_bitmap_failed">"Impossible d'obtenir le bitmap de l'image"</string> <string name="upload_image_failed">"Impossible d'uploader l'image"</string> - <string name="load_rpan_broadcasts_failed">"Impossible de charger les diffusions RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Impossible d'analyser les diffusions RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Impossible d'analyser la diffusion RPAN"</string> <string name="search_comments">"Chercher des commentaires"</string> <string name="please_wait_image_is_uploading">"Une image est toujours sn train d'être uploadée. Merci d'attendre"</string> <string name="error_fetch_trending_search">"Échec de la récupération des recherches de tendance. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index a144a2cd..98906969 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1010,12 +1010,9 @@ La riproduzione automatica video è disabilitata"</string> Vuoi comunque abilitare l'opzione?"</string> <string name="reply">"Rispondi"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Galleria post"</string> <string name="trending_activity_label">"Popolari"</string> - <string name="action_share_rpan_link">"Condividi link RPAN"</string> <string name="action_share_post_link">"Condividi post link"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Popolari"</string> <string name="receive_post_reply_notifications">"Ricevi notifiche per le risposte"</string> <string name="bottom_sheet_post_gallery">"Galleria"</string> @@ -1045,9 +1042,6 @@ Se hai dei temi con questi nomi devi cambiarli prima di attivare la Personalizza <string name="upload_image_success">"Immagine caricata. Clicca sul pulsante delle immagini per vedere le altre immagini caricate"</string> <string name="get_image_bitmap_failed">"Impossibile prendere il bitmap dell'immagine"</string> <string name="upload_image_failed">"Impossibile caricare l'immagine"</string> - <string name="load_rpan_broadcasts_failed">"Impossibile caricare RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Impossibile analizzare i broadcast RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Impossibile analizzare il broadcast RPAN"</string> <string name="search_comments">"Cerca tra i commenti"</string> <string name="please_wait_image_is_uploading">"Attendere prego. Immagine in caricamento"</string> <string name="error_fetch_trending_search">"Pagina non caricata. Tocca per riprovare"</string> diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 0f2dada4..23fda94d 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1009,12 +1009,9 @@ Bericht: %2$s"</string> Wil je het nog steeds activeren?"</string> <string name="reply">"Antwoord"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Gallerijpost"</string> <string name="trending_activity_label">"Trending"</string> - <string name="action_share_rpan_link">"Deel RPAN Link"</string> <string name="action_share_post_link">"Deel Post Link"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Trending"</string> <string name="receive_post_reply_notifications">"Ontvang Post Reactie Notificaties"</string> <string name="bottom_sheet_post_gallery">"Gallerij"</string> @@ -1039,7 +1036,6 @@ Zo wel, hernoem ze voordat je Material You aanzet."</string> <string name="uploading_image">"Uploaden"</string> <string name="upload_image_success">"Afbeelding succesvol geüpload. Klik de afbeelding knop nogmaals om de geüploade afbeeldingen te zien."</string> <string name="upload_image_failed">"Niet in staat de afbeelding te uploaden"</string> - <string name="load_rpan_broadcasts_failed">"Kan RPAN uitzending Niet laden"</string> <string name="search_comments">"Zoek reacties"</string> <string name="please_wait_image_is_uploading">"Een afbeelding is nog aan het uploaden. Even geduld aub."</string> <string name="no_trending_search">"Geen trending zoekopdrachten gevonden. Tik om het opnieuw te proberen."</string> diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ac6a4d6a..d943c290 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1019,12 +1019,9 @@ Mensagem: %2$s"</string> Ainda deseja ativá-lo?"</string> <string name="reply">"Responder"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Postar Galeria"</string> <string name="trending_activity_label">"Tendências"</string> - <string name="action_share_rpan_link">"Compartilhar Link de RPAN"</string> <string name="action_share_post_link">"Compartilhar Link do Post"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Em Alta"</string> <string name="receive_post_reply_notifications">"Receber Notificações de Respostas às Postagens"</string> <string name="bottom_sheet_post_gallery">"Galeria"</string> @@ -1054,9 +1051,6 @@ Se você tiver, os renomeie antes de ativar o Material You."</string> <string name="upload_image_success">"Imagem enviada com sucesso. Clique novamente no botão de imagem para ver as imagem enviadas."</string> <string name="get_image_bitmap_failed">"Erro ao receber o bitmap da imagem"</string> <string name="upload_image_failed">"Erro ao enviar a imagem"</string> - <string name="load_rpan_broadcasts_failed">"Não foi possível carregar transmissões RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Não foi possível analisar transmissões RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Não foi possível analisar transmissão RPAN"</string> <string name="search_comments">"Procurar Comentários"</string> <string name="please_wait_image_is_uploading">"Uma imagem ainda está sendo enviada. Por favor, aguarde."</string> <string name="error_fetch_trending_search">"Busca de pesquisas em alta falhou. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 5c58d2df..2c28c963 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1020,12 +1020,9 @@ Mensagem: %2$s"</string> Ainda deseja ativar esta opção?"</string> <string name="reply">"Responder"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Publicação de Galeria"</string> <string name="trending_activity_label">"Tendências"</string> - <string name="action_share_rpan_link">"Partilhar Endereço RPAN"</string> <string name="action_share_post_link">"Partilhar Endereço da Publicação"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Tendências"</string> <string name="receive_post_reply_notifications">"Receber notificações de respostas de publicações"</string> <string name="bottom_sheet_post_gallery">"Galeria"</string> @@ -1055,9 +1052,6 @@ Caso contrário, altere o nome antes de ativar Material You"</string> <string name="upload_image_success">"Imagem enviada com sucesso. Clicar no botão da imagem para ver as imagens enviadas."</string> <string name="get_image_bitmap_failed">"Incapaz de obter o bitmap da imagem"</string> <string name="upload_image_failed">"Incapaz de enviar a imagem"</string> - <string name="load_rpan_broadcasts_failed">"Não é possível carregar as emissões RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Não é possível analisar as emissões de RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Não é possível analisar a emissão de RPAN"</string> <string name="search_comments">"Pesquisar Comentários"</string> <string name="please_wait_image_is_uploading">"Uma imagem ainda a ser enviada. Por favor aguarde."</string> <string name="error_fetch_trending_search">"A obtenção de tendências falharam. diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 01f535d2..d63b473a 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -1063,12 +1063,9 @@ Mesaj: %2$s"</string> Încă dorești să-l activezi?"</string> <string name="reply">"Răspunde"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Postare Galerie"</string> <string name="trending_activity_label">"În Tendințe"</string> - <string name="action_share_rpan_link">"Distribuie Link-ul RPAN"</string> <string name="action_share_post_link">"Distribuie Link-ul Postării"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"În Tendințe"</string> <string name="receive_post_reply_notifications">"Primește notificări de răspuns la postări"</string> <string name="bottom_sheet_post_gallery">"Galerie"</string> @@ -1098,9 +1095,6 @@ Mesaj: %2$s"</string> <string name="upload_image_success">"Imaginea a fost încărcată cu succes. Apasă din nou pe butonul de imagine pentru a vedea imaginile încărcate."</string> <string name="get_image_bitmap_failed">"Nu s-a putut obține bitmap-ul imaginii"</string> <string name="upload_image_failed">"Nu s-a putut încărca imaginea"</string> - <string name="load_rpan_broadcasts_failed">"Nu s-a putut încărca emisiunile RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Nu s-a putut afișa emisiunile RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Nu s-a putut afișa emisiunea RPAN"</string> <string name="search_comments">"Caută Comentariile"</string> <string name="please_wait_image_is_uploading">"O imagine este încă în curs de încărcare. Te rugăm să aștepți."</string> <string name="error_fetch_trending_search">"Obținerea căutărilor în tendințe a eșuat. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 704c59ee..35a4b82d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1033,12 +1033,9 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd Всё ещё хотите включить его?"</string> <string name="reply">"Ответ"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Пост в галерее"</string> <string name="trending_activity_label">"Популярное"</string> - <string name="action_share_rpan_link">"Поделиться ссылкой RPAN"</string> <string name="action_share_post_link">"Поделиться ссылкой на пост"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Популярное"</string> <string name="receive_post_reply_notifications">"Получать уведомления об ответах на пост"</string> <string name="bottom_sheet_post_gallery">"Галерея"</string> @@ -1068,9 +1065,6 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd <string name="upload_image_success">"Изображение успешно загружено. Нажмите кнопку «Изображение» ещё раз, чтобы просмотреть загруженные изображения."</string> <string name="get_image_bitmap_failed">"Невозможно получить растровое изображение"</string> <string name="upload_image_failed">"Невозможно загрузить изображение"</string> - <string name="load_rpan_broadcasts_failed">"Невозможно загрузить широковещательные сообщения RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Невозможно разобрать широковещательные сообщения RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Невозможно разобрать широковещательную передачу RPAN"</string> <string name="search_comments">"Поиск комментариев"</string> <string name="please_wait_image_is_uploading">"Изображение загружается, подождите."</string> <string name="error_fetch_trending_search">"Невозможно получить популярные поисковые запросы. diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index 19308eb3..3177d814 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -1063,12 +1063,9 @@ Yine de etkinleştirmek istiyor musunuz?"</string> <string name="reply">"Yanıtla"</string> <!-- What is RPAN? --> - <string name="rpan_activity_label">"Canlı Yayın"</string> <string name="post_gallery_activity_label">"Galeri Gönderisi"</string> <string name="trending_activity_label">"Trendler"</string> - <string name="action_share_rpan_link">"Canlı Yayın Bağlantısını Paylaş"</string> <string name="action_share_post_link">"Gönderi Bağlantısını Paylaş"</string> - <string name="rpan">"Canlı Yayın"</string> <string name="trending">"Trendler"</string> <string name="receive_post_reply_notifications">"Gönderi yanıtlanınca bildirimlerini al"</string> <string name="bottom_sheet_post_gallery">"Galeri"</string> @@ -1098,9 +1095,6 @@ Yoksa, Material You'u etkinleştirmeden önce bunları yeniden adlandırın."</s <string name="upload_image_success">"Fotoğraf başarıyla yüklendi. Yüklenen fotoğrafları görmek için fotoğraf düğmesine tekrar tıklayın."</string> <string name="get_image_bitmap_failed">"Fotoğrafın bitmap'i alınamıyor"</string> <string name="upload_image_failed">"Fotoğraf yüklenemiyor"</string> - <string name="load_rpan_broadcasts_failed">"Canlı Yayınlar yüklenemiyor"</string> - <string name="parse_rpan_broadcasts_failed">"Canlı Yayınlar ayrıştırılamıyor"</string> - <string name="parse_rpan_broadcast_failed">"Canlı Yayın ayrıştırılamıyor"</string> <string name="search_comments">"Yorumları Ara"</string> <string name="please_wait_image_is_uploading">"Hâlâ bir fotoğraf yükleniyor. Lütfen bekleyin."</string> <string name="error_fetch_trending_search">"Trend aramalar getirilemedi. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 23cae648..fbb011e6 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1013,12 +1013,9 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd Усе ще бажаєте ввімкнути це?"</string> <string name="reply">"Відповісти"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Допис галереї"</string> <string name="trending_activity_label">"Тенденції"</string> - <string name="action_share_rpan_link">"Поширити ланку RPAN"</string> <string name="action_share_post_link">"Поширити ланку допису"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Тенденції"</string> <string name="receive_post_reply_notifications">"Отримувати сповіщення про відповіді на дописи"</string> <string name="bottom_sheet_post_gallery">"Галерея"</string> @@ -1048,9 +1045,6 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd <string name="upload_image_success">"Зображення успішно відвантажене. Клацніть кнопку зображення ще раз, щоб переглянути відвантажені зображення."</string> <string name="get_image_bitmap_failed">"Неможливо отримати bitmap зображення"</string> <string name="upload_image_failed">"Неможливо відвантажити зображення"</string> - <string name="load_rpan_broadcasts_failed">"Не вдалося завантажити трансляції RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Не вдалося проаналізувати трансляції RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Не вдалося проаналізувати трансляцію RPAN"</string> <string name="search_comments">"Пошук коментарів"</string> <string name="please_wait_image_is_uploading">"Зображення все ще завантажується. Будь ласка, зачекайте."</string> <string name="error_fetch_trending_search">"Не вдалося отримати тенденції пошуку. diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 7ef0732c..89e00bab 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1034,12 +1034,9 @@ Thông báo: %2$s"</string> Bạn có vẫn muốn bật tuỳ chọn này không?"</string> <string name="reply">"Trả lời"</string> - <string name="rpan_activity_label">"RPAN"</string> <string name="post_gallery_activity_label">"Bài đăng bộ sưu tập"</string> <string name="trending_activity_label">"Trending"</string> - <string name="action_share_rpan_link">"Chia sẻ đường link RPAN"</string> <string name="action_share_post_link">"Chia sẻ đường link bài đăng"</string> - <string name="rpan">"RPAN"</string> <string name="trending">"Trending"</string> <string name="receive_post_reply_notifications">"Nhận thông báo trả lời trong bài đăng"</string> <string name="bottom_sheet_post_gallery">"Bộ sưu tập"</string> @@ -1069,9 +1066,6 @@ Nếu không thì thay tên chúng trước khi Bật Material You."</string> <string name="upload_image_success">"Tải hình ảnh thành công. Ấn vào nút hình ảnh lần nữa để thấy hình ảnh vửa tải lên."</string> <string name="get_image_bitmap_failed">"Không thể lấy bitmap của hình ảnh"</string> <string name="upload_image_failed">"Không thể tải hình ảnh lên"</string> - <string name="load_rpan_broadcasts_failed">"Không thể tải broadcast RPAN"</string> - <string name="parse_rpan_broadcasts_failed">"Không thể xử lý broadcast RPAN"</string> - <string name="parse_rpan_broadcast_failed">"Không thể xử lý broadcast RPAN"</string> <string name="search_comments">"Tìm kiếm bình luận"</string> <string name="please_wait_image_is_uploading">"Hình ảnh vẫn đang tải. Vui lòng đợi."</string> <string name="error_fetch_trending_search">"Lấy mục tìm kiếm thịnh hành thất bại. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d9e962bd..2d2bce43 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1102,12 +1102,9 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd 仍然要继续吗?"</string> <string name="reply">"回复"</string> - <string name="rpan_activity_label">"直播"</string> <string name="post_gallery_activity_label">"相册帖"</string> <string name="trending_activity_label">"热门"</string> - <string name="action_share_rpan_link">"分享直播链接"</string> <string name="action_share_post_link">"分享帖子链接"</string> - <string name="rpan">"直播"</string> <string name="trending">"热门"</string> <string name="receive_post_reply_notifications">"接收帖子回复提醒"</string> <string name="bottom_sheet_post_gallery">"相册"</string> @@ -1137,9 +1134,6 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd <string name="upload_image_success">"上传图片成功。再次点击图片按钮查看已上传的图片。"</string> <string name="get_image_bitmap_failed">"无法获取图片位图"</string> <string name="upload_image_failed">"无法上传图片"</string> - <string name="load_rpan_broadcasts_failed">"无法加载 RPAN 直播"</string> - <string name="parse_rpan_broadcasts_failed">"无法解析 RPAN 直播"</string> - <string name="parse_rpan_broadcast_failed">"无法解析 RPAN 直播"</string> <string name="search_comments">"搜索评论"</string> <string name="please_wait_image_is_uploading">"仍有图片正在上传,请稍候。"</string> <string name="error_fetch_trending_search">"获取热搜失败。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 51f70012..d4986fc8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,7 +39,6 @@ <string name="post_filter_preference_activity_label">Post Filter</string> <string name="search_users_result_activity_label">Users</string> <string name="multireddit_selection_activity_label">Select a Multireddit</string> - <string name="rpan_activity_label">RPAN</string> <string name="post_gallery_activity_label">Gallery Post</string> <string name="trending_activity_label">Trending</string> <string name="wiki_activity_label">Wiki</string> @@ -91,7 +90,6 @@ <string name="action_add_to_post_filter">Add to Post Filter</string> <string name="action_delete_logs">Delete Logs</string> <string name="action_create_github_issue">Create GitHub Issue</string> - <string name="action_share_rpan_link">Share RPAN Link</string> <string name="action_share_post_link">Share Post Link</string> <string name="action_go_to_wiki">Go to Wiki</string> <string name="action_playback_speed">Playback Speed</string> @@ -139,7 +137,6 @@ <string name="history">History</string> <string name="inbox">Inbox</string> <string name="inbox_with_count">Inbox (%1$,d)</string> - <string name="rpan">RPAN</string> <string name="trending">Trending</string> <string name="upvoted">Upvoted</string> <string name="downvoted">Downvoted</string> @@ -1211,10 +1208,6 @@ <string name="get_image_bitmap_failed">Unable to get the bitmap of the image</string> <string name="upload_image_failed">Unable to upload the image</string> - <string name="load_rpan_broadcasts_failed">Cannot load RPAN broadcasts</string> - <string name="parse_rpan_broadcasts_failed">Cannot parse RPAN broadcasts</string> - <string name="parse_rpan_broadcast_failed">Cannot parse RPAN broadcast</string> - <string name="search_comments">Search Comments</string> <string name="please_wait_image_is_uploading">An image is still being uploaded. Please wait.</string> |