mirror of
https://github.com/Docile-Alligator/Infinity-For-Reddit.git
synced 2026-08-18 11:03:26 +00:00
Merge branch 'master' into comments_refactor
# Conflicts: # app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java # app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
This commit is contained in:
@ -11,8 +11,8 @@ android {
|
||||
applicationId "ml.docilealligator.infinityforreddit"
|
||||
minSdk 21
|
||||
targetSdk 35
|
||||
versionCode 215
|
||||
versionName "8.2.0-beta1"
|
||||
versionCode 217
|
||||
versionName "8.2.1"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
|
||||
@ -104,6 +104,7 @@ import ml.docilealligator.infinityforreddit.settings.MainPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.settings.MiscellaneousPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.settings.NotificationPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.settings.NsfwAndSpoilerFragment;
|
||||
import ml.docilealligator.infinityforreddit.settings.PostDetailsPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.settings.PostHistoryFragment;
|
||||
import ml.docilealligator.infinityforreddit.settings.ProxyPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.settings.SecurityPreferenceFragment;
|
||||
@ -326,6 +327,8 @@ public interface AppComponent {
|
||||
|
||||
void inject(AppAuthLoginActivity appAuthLoginActivity);
|
||||
|
||||
void inject(PostDetailsPreferenceFragment postDetailsPreferenceFragment);
|
||||
|
||||
void inject(ViewPostDetailFragmentNew viewPostDetailFragmentNew);
|
||||
|
||||
void inject(ImportantInfoBottomSheetFragment importantInfoBottomSheetFragment);
|
||||
|
||||
@ -237,8 +237,13 @@ abstract class AppModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
static PostDetailCommentsCacheManager providePostDetailCommentsCacheManager() {
|
||||
return new PostDetailCommentsCacheManager();
|
||||
static PostDetailCommentsCacheManager providePostDetailCommentsCacheManager(@Named("post_details") SharedPreferences postDetailsSharedPreferences) {
|
||||
try {
|
||||
int capacity = Integer.parseInt(postDetailsSharedPreferences.getString(SharedPreferencesUtils.COMMENT_THREAD_CONTINUITY_CAPACITY, "10"));
|
||||
return new PostDetailCommentsCacheManager(new AutoRemovalLinkedHashMap<>(capacity));
|
||||
} catch (NumberFormatException ignore) {
|
||||
return new PostDetailCommentsCacheManager(new AutoRemovalLinkedHashMap<>(10));
|
||||
}
|
||||
}
|
||||
|
||||
@Provides
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit
|
||||
|
||||
class AutoRemovalLinkedHashMap<K, V>(
|
||||
val maxSize: Int
|
||||
var maxSize: Int
|
||||
): LinkedHashMap<K, V>() {
|
||||
override fun removeEldestEntry(eldest: Map.Entry<K?, V?>?): Boolean {
|
||||
return size > maxSize
|
||||
|
||||
@ -6,7 +6,7 @@ import ml.docilealligator.infinityforreddit.post.Post
|
||||
import ml.docilealligator.infinityforreddit.thing.SortType
|
||||
|
||||
class PostDetailCommentsCacheManager(
|
||||
val cacheMap: LinkedHashMap<String, PostDetailCommentsCache> = AutoRemovalLinkedHashMap<String, PostDetailCommentsCache>(10)
|
||||
val cacheMap: AutoRemovalLinkedHashMap<String, PostDetailCommentsCache>
|
||||
) {
|
||||
fun saveCache(
|
||||
post: Post,
|
||||
@ -41,4 +41,12 @@ class PostDetailCommentsCacheManager(
|
||||
fun removeCache(postId: String?) {
|
||||
cacheMap.remove(postId);
|
||||
}
|
||||
|
||||
fun setCapacity(capacity: Int) {
|
||||
if (capacity < 0) {
|
||||
return
|
||||
}
|
||||
|
||||
cacheMap.maxSize = capacity
|
||||
}
|
||||
}
|
||||
@ -28,6 +28,7 @@ fun CustomAlert(
|
||||
) {
|
||||
AlertDialog(
|
||||
modifier = modifier,
|
||||
containerColor = Color(LocalAppTheme.current.backgroundColor),
|
||||
icon = iconDrawableRes?.let {
|
||||
@Composable {
|
||||
Icon(painterResource(it), contentDescription = "Example Icon")
|
||||
@ -88,6 +89,7 @@ fun CustomAlert(
|
||||
) {
|
||||
AlertDialog(
|
||||
modifier = modifier,
|
||||
containerColor = Color(LocalAppTheme.current.backgroundColor),
|
||||
icon = iconDrawableRes?.let {
|
||||
@Composable {
|
||||
Icon(painterResource(it), contentDescription = "Example Icon")
|
||||
|
||||
@ -511,7 +511,9 @@ public abstract class PostFragmentBase extends Fragment {
|
||||
}
|
||||
|
||||
public final void videoAutoplayChangeMutingOption(boolean isMute) {
|
||||
mVideoMuteManager.setMuted(isMute);
|
||||
if (mVideoMuteManager.getRememberMuteOption()) {
|
||||
mVideoMuteManager.setMuted(isMute);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getIsNsfwSubreddit() {
|
||||
|
||||
@ -1,18 +1,53 @@
|
||||
package ml.docilealligator.infinityforreddit.settings;
|
||||
package ml.docilealligator.infinityforreddit.settings
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Bundle
|
||||
import androidx.preference.EditTextPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.Preference.SummaryProvider
|
||||
import ml.docilealligator.infinityforreddit.Infinity
|
||||
import ml.docilealligator.infinityforreddit.PostDetailCommentsCacheManager
|
||||
import ml.docilealligator.infinityforreddit.R
|
||||
import ml.docilealligator.infinityforreddit.customviews.preference.CustomFontPreferenceFragmentCompat
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils
|
||||
import javax.inject.Inject
|
||||
|
||||
import androidx.preference.PreferenceManager;
|
||||
class PostDetailsPreferenceFragment : CustomFontPreferenceFragmentCompat() {
|
||||
@Inject
|
||||
lateinit var mPostDetailCommentsCacheManager: PostDetailCommentsCacheManager
|
||||
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.customviews.preference.CustomFontPreferenceFragmentCompat;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
val preferenceManager = getPreferenceManager()
|
||||
preferenceManager.setSharedPreferencesName(SharedPreferencesUtils.POST_DETAILS_SHARED_PREFERENCES_FILE)
|
||||
setPreferencesFromResource(R.xml.post_details_preferences, rootKey)
|
||||
|
||||
public class PostDetailsPreferenceFragment extends CustomFontPreferenceFragmentCompat {
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
PreferenceManager preferenceManager = getPreferenceManager();
|
||||
preferenceManager.setSharedPreferencesName(SharedPreferencesUtils.POST_DETAILS_SHARED_PREFERENCES_FILE);
|
||||
setPreferencesFromResource(R.xml.post_details_preferences, rootKey);
|
||||
(mActivity.application as Infinity).appComponent.inject(this)
|
||||
|
||||
val commentThreadContinuityCapacityEditTextPreference =
|
||||
findPreference<EditTextPreference?>(SharedPreferencesUtils.COMMENT_THREAD_CONTINUITY_CAPACITY)
|
||||
|
||||
if (commentThreadContinuityCapacityEditTextPreference != null) {
|
||||
commentThreadContinuityCapacityEditTextPreference.onPreferenceChangeListener =
|
||||
Preference.OnPreferenceChangeListener { _, newValue ->
|
||||
try {
|
||||
val value = (newValue as String?)?.toInt() ?: -1
|
||||
if (value < 0) {
|
||||
false
|
||||
} else {
|
||||
mPostDetailCommentsCacheManager.setCapacity(value)
|
||||
true
|
||||
}
|
||||
} catch (_: NumberFormatException) {
|
||||
false
|
||||
}
|
||||
}
|
||||
commentThreadContinuityCapacityEditTextPreference.setSummaryProvider(
|
||||
SummaryProvider { _: Preference? ->
|
||||
getString(
|
||||
R.string.settings_comment_thread_continuity_capacity_summary,
|
||||
commentThreadContinuityCapacityEditTextPreference.text
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -237,6 +237,7 @@ public class SharedPreferencesUtils {
|
||||
public static final String SWIPE_RIGHT_TO_GO_BACK_SENSITIVITY = "swipe_right_to_go_back_sensitivity";
|
||||
public static final String SWIPE_ACTION_SENSITIVITY_IN_COMMENTS = "swipe_action_sensitivity_in_comments";
|
||||
public static final String NAVIGATION_DRAWER_SWIPE_AREA = "navigation_drawer_swipe_area";
|
||||
public static final String COMMENT_THREAD_CONTINUITY_CAPACITY = "comment_thread_continuity_capacity";
|
||||
public static final String CURRENT_VERSION = "current_version";
|
||||
|
||||
public static String getPostDetailFabPortraitX(@Nullable Display display) {
|
||||
|
||||
@ -661,6 +661,8 @@
|
||||
<string name="settings_post_feed_max_resolution_warning_title">Increase the value to show previews in higher resolution, but the app may crash unexpectedly.</string>
|
||||
<string name="settings_post_feed_max_resolution_title">Post Feed Preview Max Resolution (Width * Height)</string>
|
||||
<string name="settings_reddit_video_default_resolution">Reddit Video Default Resolution</string>
|
||||
<string name="settings_comment_thread_continuity_capacity_title">Comment Thread Continuity Capacity</string>
|
||||
<string name="settings_comment_thread_continuity_capacity_summary">%1$s comment thread(s) will be cached for seamless continuity.</string>
|
||||
<string name="settings_easier_to_watch_in_full_screen_title">Easier to Watch in Full Screen</string>
|
||||
<string name="settings_hide_fab_in_post_feed">Hide FAB in Post Feed</string>
|
||||
<string name="settings_comment_divider_type">Comment Divider Type</string>
|
||||
|
||||
@ -56,4 +56,9 @@
|
||||
app:title="@string/settings_embedded_media_type_title"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ml.docilealligator.infinityforreddit.customviews.preference.CustomFontEditTextPreference
|
||||
app:defaultValue="10"
|
||||
app:key="comment_thread_continuity_capacity"
|
||||
app:title="@string/settings_comment_thread_continuity_capacity_title" />
|
||||
|
||||
</PreferenceScreen>
|
||||
@ -50,4 +50,9 @@
|
||||
app:title="@string/settings_embedded_media_type_title"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ml.docilealligator.infinityforreddit.customviews.preference.CustomFontEditTextPreference
|
||||
app:defaultValue="10"
|
||||
app:key="comment_thread_continuity_capacity"
|
||||
app:title="@string/settings_comment_thread_continuity_capacity_title" />
|
||||
|
||||
</PreferenceScreen>
|
||||
Reference in New Issue
Block a user