Showing info related to the Reddit API changes

This commit is contained in:
Docile-Alligator 2023-06-20 18:41:27 -04:00
parent 2ae64f6849
commit 6eb7f8e5c8
5 changed files with 156 additions and 4 deletions

View File

@ -14,7 +14,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
@ -34,9 +33,6 @@ import androidx.appcompat.app.AppCompatDelegate;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.OnApplyWindowInsetsListener;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
@ -95,6 +91,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.FABMoreOptionsB
import ml.docilealligator.infinityforreddit.bottomsheetfragments.PostLayoutBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.PostTypeBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.RandomBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.RedditAPIInfoBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.SortTimeBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.SortTypeBottomSheetFragment;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
@ -338,6 +335,13 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSSAGE_FULLNAME);
mNewAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME);
}
if (!mInternalSharedPreferences.getBoolean(SharedPreferencesUtils.DO_NOT_SHOW_REDDIT_API_INFO_AGAIN, false)) {
RedditAPIInfoBottomSheetFragment fragment = new RedditAPIInfoBottomSheetFragment();
fragment.setCancelable(false);
fragment.show(getSupportFragmentManager(), fragment.getTag());
}
initializeNotificationAndBindView();
}
@ -1530,6 +1534,10 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
InsertReadPost.insertReadPost(mRedditDataRoomDatabase, mExecutor, mAccountName, post.getId());
}
public void doNotShowRedditAPIInfoAgain() {
mInternalSharedPreferences.edit().putBoolean(SharedPreferencesUtils.DO_NOT_SHOW_REDDIT_API_INFO_AGAIN, true).apply();
}
private class SectionsPagerAdapter extends FragmentStateAdapter {
int tabCount;
boolean showFavoriteMultiReddits;

View File

@ -0,0 +1,71 @@
package ml.docilealligator.infinityforreddit.bottomsheetfragments;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import me.saket.bettermovementmethod.BetterLinkMovementMethod;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity;
import ml.docilealligator.infinityforreddit.activities.MainActivity;
import ml.docilealligator.infinityforreddit.customviews.LandscapeExpandedRoundedBottomSheetDialogFragment;
import ml.docilealligator.infinityforreddit.databinding.FragmentRedditApiInfoBottomSheetBinding;
import ml.docilealligator.infinityforreddit.utils.Utils;
public class RedditAPIInfoBottomSheetFragment extends LandscapeExpandedRoundedBottomSheetDialogFragment {
private MainActivity mainActivity;
public RedditAPIInfoBottomSheetFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
FragmentRedditApiInfoBottomSheetBinding binding = FragmentRedditApiInfoBottomSheetBinding.inflate(inflater, container, false);
if (mainActivity != null && mainActivity.typeface != null) {
Utils.setFontToAllTextViews(binding.getRoot(), mainActivity.typeface);
}
SpannableString message = new SpannableString(getString(R.string.reddit_api_info, "https://www.reddit.com/r/reddit/comments/145bram/addressing_the_community_about_changes_to_our_api", "https://www.reddit.com/r/Infinity_For_Reddit/comments/147bhsg/the_future_of_infinity"));
Linkify.addLinks(message, Linkify.WEB_URLS);
binding.messageTextViewRedditApiInfoBottomSheetFragment.setText(message);
binding.messageTextViewRedditApiInfoBottomSheetFragment.setMovementMethod(BetterLinkMovementMethod.newInstance().setOnLinkClickListener((textView, url) -> {
Intent intent = new Intent(mainActivity, LinkResolverActivity.class);
intent.setData(Uri.parse(url));
startActivity(intent);
return true;
}));
binding.messageTextViewRedditApiInfoBottomSheetFragment.setLinkTextColor(getResources().getColor(R.color.colorAccent));
binding.doNotShowThisAgainTextView.setOnClickListener(view -> {
binding.doNotShowThisAgainCheckBox.toggle();
});
binding.continueButtonRedditApiInfoBottomSheetFragment.setOnClickListener(view -> {
if (binding.doNotShowThisAgainCheckBox.isChecked()) {
mainActivity.doNotShowRedditAPIInfoAgain();
}
dismiss();
});
return binding.getRoot();
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
mainActivity = (MainActivity) context;
}
}

View File

@ -368,6 +368,7 @@ public class SharedPreferencesUtils {
public static final String INTERNAL_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.internal";
public static final String HAS_REQUESTED_NOTIFICATION_PERMISSION = "has_requested_notification_permission";
public static final String DO_NOT_SHOW_REDDIT_API_INFO_AGAIN = "do_not_show_reddit_api_info_again";
//Legacy Settings
public static final String MAIN_PAGE_TAB_1_TITLE_LEGACY = "main_page_tab_1_title";

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context=".bottomsheetfragments.RedditAPIInfoBottomSheetFragment">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:text="@string/reddit_api_info_title"
android:fontFamily="?attr/font_family"
android:textSize="?attr/font_20"
android:textColor="?attr/primaryTextColor"
android:textStyle="bold" />
<TextView
android:id="@+id/message_text_view_reddit_api_info_bottom_sheet_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="@string/reddit_api_info"
android:fontFamily="?attr/font_family"
android:textSize="?attr/font_16"
android:textColor="?attr/primaryTextColor" />
<LinearLayout
android:id="@+id/linear_layout_check_box_wrapper_reddit_api_info_bottom_sheet_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp">
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/do_not_show_this_again_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/do_not_show_this_again_text_view"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/do_not_show_this_again"
android:gravity="center_vertical"
android:fontFamily="?attr/font_family"
android:textSize="?attr/font_default"
android:textColor="?attr/primaryTextColor" />
<com.google.android.material.button.MaterialButton
android:id="@+id/continue_button_reddit_api_info_bottom_sheet_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:backgroundTint="@color/colorPrimary"
android:text="@string/i_understand" />
</LinearLayout>
</LinearLayout>

View File

@ -1322,4 +1322,8 @@
<string name="denied_notification_permission">Notification permission is not granted</string>
<string name="go_to_settings">Settings</string>
<string name="reddit_api_info_title">Important Notice Regarding Reddit API Changes</string>
<string name="reddit_api_info">Starting from July 1st, 2023, Reddit API will be pay-per-use for 3rd-party clients, which include Infinity for Reddit. The announcement from Reddit can be found here: %1$s\n\nIn order to survive this change, Infinity will become a subscription-only app after July 1st. You can learn more about the changes in this post: %2$s\n\nIt\'s required for you to update Infinity after July 1st so that you will get the new version with subscription options. None of the previous versions (including this one) will work after July 1st. But due to a tight timeline Reddit gave, the update may not be available immediately on July 1st since it requires proper testing. Thank you for your understanding!</string>
<string name="i_understand">I understand</string>
</resources>