mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-02-11 08:58:43 +01:00
New post filter option: exclude domains.
This commit is contained in:
parent
a615b2d20e
commit
57a8e69eb1
@ -35,7 +35,7 @@ import ml.docilealligator.infinityforreddit.user.UserData;
|
|||||||
|
|
||||||
@Database(entities = {Account.class, SubredditData.class, SubscribedSubredditData.class, UserData.class,
|
@Database(entities = {Account.class, SubredditData.class, SubscribedSubredditData.class, UserData.class,
|
||||||
SubscribedUserData.class, MultiReddit.class, CustomTheme.class, RecentSearchQuery.class,
|
SubscribedUserData.class, MultiReddit.class, CustomTheme.class, RecentSearchQuery.class,
|
||||||
ReadPost.class, PostFilter.class, PostFilterUsage.class}, version = 19)
|
ReadPost.class, PostFilter.class, PostFilterUsage.class}, version = 20)
|
||||||
public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
||||||
private static RedditDataRoomDatabase INSTANCE;
|
private static RedditDataRoomDatabase INSTANCE;
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
|||||||
MIGRATION_5_6, MIGRATION_6_7, MIGRATION_7_8, MIGRATION_8_9,
|
MIGRATION_5_6, MIGRATION_6_7, MIGRATION_7_8, MIGRATION_8_9,
|
||||||
MIGRATION_9_10, MIGRATION_10_11, MIGRATION_11_12, MIGRATION_12_13,
|
MIGRATION_9_10, MIGRATION_10_11, MIGRATION_11_12, MIGRATION_12_13,
|
||||||
MIGRATION_13_14, MIGRATION_14_15, MIGRATION_15_16, MIGRATION_16_17,
|
MIGRATION_13_14, MIGRATION_14_15, MIGRATION_15_16, MIGRATION_16_17,
|
||||||
MIGRATION_17_18, MIGRATION_18_19)
|
MIGRATION_17_18, MIGRATION_18_19, MIGRATION_19_20)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -332,4 +332,11 @@ public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
|||||||
database.execSQL("INSERT INTO accounts(username, karma, is_current_user) VALUES (\"-\", 0, false)");
|
database.execSQL("INSERT INTO accounts(username, karma, is_current_user) VALUES (\"-\", 0, false)");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private static final Migration MIGRATION_19_20 = new Migration(19, 20) {
|
||||||
|
@Override
|
||||||
|
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||||
|
database.execSQL("ALTER TABLE post_filter ADD COLUMN exclude_domains TEXT");
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -144,6 +144,10 @@ public class CustomizePostFilterActivity extends BaseActivity {
|
|||||||
TextInputLayout containsFlairsTextInputLayout;
|
TextInputLayout containsFlairsTextInputLayout;
|
||||||
@BindView(R.id.contains_flairs_text_input_edit_text_customize_post_filter_activity)
|
@BindView(R.id.contains_flairs_text_input_edit_text_customize_post_filter_activity)
|
||||||
TextInputEditText containsFlairsTextInputEditText;
|
TextInputEditText containsFlairsTextInputEditText;
|
||||||
|
@BindView(R.id.excludes_domains_text_input_layout_customize_post_filter_activity)
|
||||||
|
TextInputLayout excludesDomainsTextInputLayout;
|
||||||
|
@BindView(R.id.excludes_domains_text_input_edit_text_customize_post_filter_activity)
|
||||||
|
TextInputEditText excludesDomainsTextInputEditText;
|
||||||
@BindView(R.id.min_vote_text_input_layout_customize_post_filter_activity)
|
@BindView(R.id.min_vote_text_input_layout_customize_post_filter_activity)
|
||||||
TextInputLayout minVoteTextInputLayout;
|
TextInputLayout minVoteTextInputLayout;
|
||||||
@BindView(R.id.min_vote_text_input_edit_text_customize_post_filter_activity)
|
@BindView(R.id.min_vote_text_input_edit_text_customize_post_filter_activity)
|
||||||
@ -298,6 +302,7 @@ public class CustomizePostFilterActivity extends BaseActivity {
|
|||||||
excludesUsersTextInputEditText.setText(postFilter.excludeUsers);
|
excludesUsersTextInputEditText.setText(postFilter.excludeUsers);
|
||||||
excludesFlairsTextInputEditText.setText(postFilter.excludeFlairs);
|
excludesFlairsTextInputEditText.setText(postFilter.excludeFlairs);
|
||||||
containsFlairsTextInputEditText.setText(postFilter.containFlairs);
|
containsFlairsTextInputEditText.setText(postFilter.containFlairs);
|
||||||
|
excludesDomainsTextInputEditText.setText(postFilter.excludeDomains);
|
||||||
minVoteTextInputEditText.setText(Integer.toString(postFilter.minVote));
|
minVoteTextInputEditText.setText(Integer.toString(postFilter.minVote));
|
||||||
maxVoteTextInputEditText.setText(Integer.toString(postFilter.maxVote));
|
maxVoteTextInputEditText.setText(Integer.toString(postFilter.maxVote));
|
||||||
minCommentsTextInputEditText.setText(Integer.toString(postFilter.minComments));
|
minCommentsTextInputEditText.setText(Integer.toString(postFilter.minComments));
|
||||||
@ -353,6 +358,9 @@ public class CustomizePostFilterActivity extends BaseActivity {
|
|||||||
containsFlairsTextInputLayout.setBoxStrokeColor(primaryTextColor);
|
containsFlairsTextInputLayout.setBoxStrokeColor(primaryTextColor);
|
||||||
containsFlairsTextInputLayout.setDefaultHintTextColor(ColorStateList.valueOf(primaryTextColor));
|
containsFlairsTextInputLayout.setDefaultHintTextColor(ColorStateList.valueOf(primaryTextColor));
|
||||||
containsFlairsTextInputEditText.setTextColor(primaryTextColor);
|
containsFlairsTextInputEditText.setTextColor(primaryTextColor);
|
||||||
|
excludesDomainsTextInputLayout.setBoxStrokeColor(primaryTextColor);
|
||||||
|
excludesDomainsTextInputLayout.setDefaultHintTextColor(ColorStateList.valueOf(primaryTextColor));
|
||||||
|
excludesDomainsTextInputEditText.setTextColor(primaryTextColor);
|
||||||
minVoteTextInputLayout.setBoxStrokeColor(primaryTextColor);
|
minVoteTextInputLayout.setBoxStrokeColor(primaryTextColor);
|
||||||
minVoteTextInputLayout.setDefaultHintTextColor(ColorStateList.valueOf(primaryTextColor));
|
minVoteTextInputLayout.setDefaultHintTextColor(ColorStateList.valueOf(primaryTextColor));
|
||||||
minVoteTextInputEditText.setTextColor(primaryTextColor);
|
minVoteTextInputEditText.setTextColor(primaryTextColor);
|
||||||
@ -490,6 +498,7 @@ public class CustomizePostFilterActivity extends BaseActivity {
|
|||||||
postFilter.excludeUsers = excludesUsersTextInputEditText.getText().toString();
|
postFilter.excludeUsers = excludesUsersTextInputEditText.getText().toString();
|
||||||
postFilter.excludeFlairs = excludesUsersTextInputEditText.getText().toString();
|
postFilter.excludeFlairs = excludesUsersTextInputEditText.getText().toString();
|
||||||
postFilter.containFlairs = containsFlairsTextInputEditText.getText().toString();
|
postFilter.containFlairs = containsFlairsTextInputEditText.getText().toString();
|
||||||
|
postFilter.excludeDomains = excludesDomainsTextInputEditText.getText().toString();
|
||||||
postFilter.containTextType = postTypeTextCheckBox.isChecked();
|
postFilter.containTextType = postTypeTextCheckBox.isChecked();
|
||||||
postFilter.containLinkType = postTypeLinkCheckBox.isChecked();
|
postFilter.containLinkType = postTypeLinkCheckBox.isChecked();
|
||||||
postFilter.containImageType = postTypeImageCheckBox.isChecked();
|
postFilter.containImageType = postTypeImageCheckBox.isChecked();
|
||||||
|
@ -1285,7 +1285,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
@Override
|
@Override
|
||||||
public void changeNSFW(boolean nsfw) {
|
public void changeNSFW(boolean nsfw) {
|
||||||
postFilter.allowNSFW = nsfw;
|
postFilter.allowNSFW = nsfw;
|
||||||
mPostViewModel.changePostFilter(postFilter);
|
if (mPostViewModel != null) {
|
||||||
|
mPostViewModel.changePostFilter(postFilter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -51,6 +51,8 @@ public class PostFilter implements Parcelable {
|
|||||||
public String containFlairs;
|
public String containFlairs;
|
||||||
@ColumnInfo(name = "exclude_flairs")
|
@ColumnInfo(name = "exclude_flairs")
|
||||||
public String excludeFlairs;
|
public String excludeFlairs;
|
||||||
|
@ColumnInfo(name = "exclude_domains")
|
||||||
|
public String excludeDomains;
|
||||||
@ColumnInfo(name = "contain_text_type")
|
@ColumnInfo(name = "contain_text_type")
|
||||||
public boolean containTextType = true;
|
public boolean containTextType = true;
|
||||||
@ColumnInfo(name = "contain_link_type")
|
@ColumnInfo(name = "contain_link_type")
|
||||||
@ -85,6 +87,7 @@ public class PostFilter implements Parcelable {
|
|||||||
excludeUsers = in.readString();
|
excludeUsers = in.readString();
|
||||||
containFlairs = in.readString();
|
containFlairs = in.readString();
|
||||||
excludeFlairs = in.readString();
|
excludeFlairs = in.readString();
|
||||||
|
excludeDomains = in.readString();
|
||||||
containTextType = in.readByte() != 0;
|
containTextType = in.readByte() != 0;
|
||||||
containLinkType = in.readByte() != 0;
|
containLinkType = in.readByte() != 0;
|
||||||
containImageType = in.readByte() != 0;
|
containImageType = in.readByte() != 0;
|
||||||
@ -199,6 +202,14 @@ public class PostFilter implements Parcelable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (postFilter.excludeDomains != null && !postFilter.excludeDomains.equals("")) {
|
||||||
|
String[] domains = postFilter.excludeDomains.split(",", 0);
|
||||||
|
for (String f : domains) {
|
||||||
|
if (!f.trim().equals("") && post.getUrl().toLowerCase().contains(f.trim().toLowerCase())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (postFilter.containFlairs != null && !postFilter.containFlairs.equals("")) {
|
if (postFilter.containFlairs != null && !postFilter.containFlairs.equals("")) {
|
||||||
String[] flairs = postFilter.containFlairs.split(",", 0);
|
String[] flairs = postFilter.containFlairs.split(",", 0);
|
||||||
for (String f : flairs) {
|
for (String f : flairs) {
|
||||||
@ -263,6 +274,12 @@ public class PostFilter implements Parcelable {
|
|||||||
postFilter.excludeFlairs = stringBuilder.toString();
|
postFilter.excludeFlairs = stringBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (p.excludeDomains != null && !p.excludeDomains.equals("")) {
|
||||||
|
stringBuilder = new StringBuilder(postFilter.excludeDomains == null ? "" : postFilter.excludeDomains);
|
||||||
|
stringBuilder.append(",").append(p.excludeDomains);
|
||||||
|
postFilter.excludeDomains = stringBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
postFilter.containTextType = p.containTextType || postFilter.containTextType;
|
postFilter.containTextType = p.containTextType || postFilter.containTextType;
|
||||||
postFilter.containLinkType = p.containLinkType || postFilter.containLinkType;
|
postFilter.containLinkType = p.containLinkType || postFilter.containLinkType;
|
||||||
postFilter.containImageType = p.containImageType || postFilter.containImageType;
|
postFilter.containImageType = p.containImageType || postFilter.containImageType;
|
||||||
@ -297,6 +314,7 @@ public class PostFilter implements Parcelable {
|
|||||||
parcel.writeString(excludeUsers);
|
parcel.writeString(excludeUsers);
|
||||||
parcel.writeString(containFlairs);
|
parcel.writeString(containFlairs);
|
||||||
parcel.writeString(excludeFlairs);
|
parcel.writeString(excludeFlairs);
|
||||||
|
parcel.writeString(excludeDomains);
|
||||||
parcel.writeByte((byte) (containTextType ? 1 : 0));
|
parcel.writeByte((byte) (containTextType ? 1 : 0));
|
||||||
parcel.writeByte((byte) (containLinkType ? 1 : 0));
|
parcel.writeByte((byte) (containLinkType ? 1 : 0));
|
||||||
parcel.writeByte((byte) (containImageType ? 1 : 0));
|
parcel.writeByte((byte) (containImageType ? 1 : 0));
|
||||||
|
@ -456,6 +456,26 @@
|
|||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/excludes_domains_text_input_layout_customize_post_filter_activity"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:paddingEnd="16dp"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/excludes_domains_text_input_edit_text_customize_post_filter_activity"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:fontFamily="?attr/font_family"
|
||||||
|
android:textSize="?attr/font_default"
|
||||||
|
android:hint="@string/exclude_domains_hint" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/min_vote_text_input_layout_customize_post_filter_activity"
|
android:id="@+id/min_vote_text_input_layout_customize_post_filter_activity"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -1015,6 +1015,7 @@
|
|||||||
<string name="exclude_users_hint">Exclude users (e.g. Hostilenemy,random)</string>
|
<string name="exclude_users_hint">Exclude users (e.g. Hostilenemy,random)</string>
|
||||||
<string name="exclude_flairs_hint">Exclude flairs (e.g. flair1,flair2)</string>
|
<string name="exclude_flairs_hint">Exclude flairs (e.g. flair1,flair2)</string>
|
||||||
<string name="contain_flairs_hint">Contain flairs (e.g. flair1,flair2)</string>
|
<string name="contain_flairs_hint">Contain flairs (e.g. flair1,flair2)</string>
|
||||||
|
<string name="exclude_domains_hint">Exclude domains</string>
|
||||||
<string name="min_vote_hint">Min vote (-1: no restriction)</string>
|
<string name="min_vote_hint">Min vote (-1: no restriction)</string>
|
||||||
<string name="max_vote_hint">Max vote (-1: no restriction)</string>
|
<string name="max_vote_hint">Max vote (-1: no restriction)</string>
|
||||||
<string name="min_comments_hint">Min comments (-1: no restriction)</string>
|
<string name="min_comments_hint">Min comments (-1: no restriction)</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user