Fix filter fragment crash

This commit is contained in:
NekoInverter committed 2020-12-28 23:58:43 +08:00
1 parent b12cf4da41
commit 159975d3d8
4 files changed
+32 -10

No files matched your search

+14 -3
View File
@@ -595,9 +595,20 @@ public class EhDB {
return sDaoSession.getFilterDao().queryBuilder().list();
}
public static synchronized void addFilter(Filter filter) {
filter.setId(null);
filter.setId(sDaoSession.getFilterDao().insert(filter));
public static synchronized boolean addFilter(Filter filter) {
Filter existFilter;
try {
existFilter = sDaoSession.getFilterDao().queryBuilder().where(FilterDao.Properties.Text.eq(filter.text), FilterDao.Properties.Mode.eq(filter.mode)).unique();
} catch (Exception e) {
existFilter = null;
}
if (existFilter == null) {
filter.setId(null);
filter.setId(sDaoSession.getFilterDao().insert(filter));
return true;
} else {
return false;
}
}
public static synchronized void deleteFilter(Filter filter) {
@@ -88,10 +88,10 @@ public final class EhFilter {
return mTagNamespaceFilterList;
}
public synchronized void addFilter(Filter filter) {
public synchronized boolean addFilter(Filter filter) {
// enable filter by default before it is added to database
filter.enable = true;
EhDB.addFilter(filter);
if (!EhDB.addFilter(filter)) return false;
switch (filter.mode) {
case MODE_TITLE:
@@ -113,6 +113,7 @@ public final class EhFilter {
Log.d(TAG, "Unknown mode: " + filter.mode);
break;
}
return true;
}
public synchronized void triggerFilter(Filter filter) {
@@ -219,7 +219,12 @@ public class FilterFragment extends BaseFragment {
Filter filter = new Filter();
filter.mode = mode;
filter.text = text;
mFilterList.add(filter);
if (!mFilterList.add(filter)) {
mInputLayout.setError(getString(R.string.label_text_exist));
return;
} else {
mInputLayout.setError(null);
}
if (null != mAdapter) {
mAdapter.notifyDataSetChanged();
@@ -314,7 +319,12 @@ public class FilterFragment extends BaseFragment {
@Override
public long getItemId(int position) {
return null != mFilterList ? mFilterList.get(position).text.hashCode() : 0;
if (mFilterList == null) {
return 0;
} else {
Filter filter = mFilterList.get(position);
return filter.text.hashCode() >> filter.mode;
}
}
}
@@ -436,8 +446,8 @@ public class FilterFragment extends BaseFragment {
throw new IndexOutOfBoundsException();
}
public void add(Filter filter) {
mEhFilter.addFilter(filter);
public boolean add(Filter filter) {
return mEhFilter.addFilter(filter);
}
public void delete(Filter filter) {