diff --git a/app/src/main/java/io/legado/app/constant/AppPattern.kt b/app/src/main/java/io/legado/app/constant/AppPattern.kt
index 396edb73d..e9a508939 100644
--- a/app/src/main/java/io/legado/app/constant/AppPattern.kt
+++ b/app/src/main/java/io/legado/app/constant/AppPattern.kt
@@ -3,8 +3,11 @@ package io.legado.app.constant
import java.util.regex.Pattern
object AppPattern {
- val JS_PATTERN: Pattern = Pattern.compile("([\\w\\W]*?|@js:[\\w\\W]*$)", Pattern.CASE_INSENSITIVE)
+ val JS_PATTERN: Pattern =
+ Pattern.compile("([\\w\\W]*?|@js:[\\w\\W]*$)", Pattern.CASE_INSENSITIVE)
val EXP_PATTERN: Pattern = Pattern.compile("\\{\\{([\\w\\W]*?)\\}\\}")
val authorRegex = "作\\s*者\\s*[::]".toRegex()
+
+ val splitGroupRegex = Regex("[,;]")
}
\ No newline at end of file
diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
index 681e9aa9e..2870818c2 100644
--- a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
@@ -13,6 +13,7 @@ import com.google.android.flexbox.FlexboxLayoutManager
import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
+import io.legado.app.constant.AppPattern
import io.legado.app.constant.PreferKey
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.SearchBook
@@ -178,7 +179,7 @@ class SearchActivity : VMBaseActivity(R.layout.activity_book_se
App.db.bookSourceDao().liveGroupEnabled().observe(this, {
groups.clear()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
upGroupMenu()
})
diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt
index c06110f12..7fb8855b3 100644
--- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt
@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
+import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.BookSource
import io.legado.app.help.IntentDataHelp
import io.legado.app.help.ItemTouchCallback
@@ -181,7 +182,7 @@ class BookSourceActivity : VMBaseActivity(R.layout.activity
App.db.bookSourceDao().liveGroup().observe(this, {
groups.clear()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
upGroupMenu()
})
diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt
index 8038cf0db..29be62163 100644
--- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt
+++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceViewModel.kt
@@ -5,6 +5,7 @@ import android.text.TextUtils
import androidx.documentfile.provider.DocumentFile
import io.legado.app.App
import io.legado.app.base.BaseViewModel
+import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.BookSource
import io.legado.app.utils.FileUtils
import io.legado.app.utils.GSON
@@ -94,41 +95,41 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application)
}
fun selectionAddToGroups(sources: List, groups: String) {
- execute {
- val list = arrayListOf()
- sources.forEach {
- val newGroupList = arrayListOf()
- it.bookSourceGroup?.splitNotBlank(",", ";")?.forEach {
- newGroupList.add(it)
- }
- groups.splitNotBlank(",", ";", ",").forEach {
- newGroupList.add(it)
- }
- val lh = LinkedHashSet(newGroupList)
- val newGroup = ArrayList(lh).joinToString(separator = ",")
- list.add(it.copy(bookSourceGroup = newGroup))
+ execute {
+ val list = arrayListOf()
+ sources.forEach { source ->
+ val newGroupList = arrayListOf()
+ source.bookSourceGroup?.splitNotBlank(AppPattern.splitGroupRegex)?.forEach {
+ newGroupList.add(it)
}
- App.db.bookSourceDao().update(*list.toTypedArray())
+ groups.splitNotBlank(",", ";", ",").forEach {
+ newGroupList.add(it)
+ }
+ val lh = LinkedHashSet(newGroupList)
+ val newGroup = ArrayList(lh).joinToString(separator = ",")
+ list.add(source.copy(bookSourceGroup = newGroup))
}
+ App.db.bookSourceDao().update(*list.toTypedArray())
+ }
}
fun selectionRemoveFromGroups(sources: List, groups: String) {
- execute {
- val list = arrayListOf()
- sources.forEach {
- val newGroupList = arrayListOf()
- it.bookSourceGroup?.splitNotBlank(",", ";")?.forEach {
- newGroupList.add(it)
- }
- groups.splitNotBlank(",", ";", ",").forEach {
- newGroupList.remove(it)
- }
- val lh = LinkedHashSet(newGroupList)
- val newGroup = ArrayList(lh).joinToString(separator = ",")
- list.add(it.copy(bookSourceGroup = newGroup))
+ execute {
+ val list = arrayListOf()
+ sources.forEach { source ->
+ val newGroupList = arrayListOf()
+ source.bookSourceGroup?.splitNotBlank(AppPattern.splitGroupRegex)?.forEach {
+ newGroupList.add(it)
}
- App.db.bookSourceDao().update(*list.toTypedArray())
+ groups.splitNotBlank(",", ";", ",").forEach {
+ newGroupList.remove(it)
+ }
+ val lh = LinkedHashSet(newGroupList)
+ val newGroup = ArrayList(lh).joinToString(separator = ",")
+ list.add(source.copy(bookSourceGroup = newGroup))
}
+ App.db.bookSourceDao().update(*list.toTypedArray())
+ }
}
fun delSelection(sources: List) {
diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/GroupManageDialog.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/GroupManageDialog.kt
index 3724694d4..5c7136691 100644
--- a/app/src/main/java/io/legado/app/ui/book/source/manage/GroupManageDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/book/source/manage/GroupManageDialog.kt
@@ -16,6 +16,7 @@ import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter
+import io.legado.app.constant.AppPattern
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton
@@ -71,7 +72,7 @@ class GroupManageDialog : DialogFragment(), Toolbar.OnMenuItemClickListener {
App.db.bookSourceDao().liveGroup().observe(viewLifecycleOwner, {
val groups = linkedSetOf()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
adapter.setItems(groups.toList())
})
diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
index 00e8c8da8..6aa870ee7 100644
--- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
+++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView
import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.VMBaseFragment
+import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.BookSource
import io.legado.app.lib.theme.ATH
import io.legado.app.lib.theme.primaryTextColor
@@ -95,7 +96,7 @@ class ExploreFragment : VMBaseFragment(R.layout.fragment_find_
liveGroup?.observe(viewLifecycleOwner, {
groups.clear()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
upGroupsMenu()
})
diff --git a/app/src/main/java/io/legado/app/ui/replacerule/GroupManageDialog.kt b/app/src/main/java/io/legado/app/ui/replacerule/GroupManageDialog.kt
index 17d5bcd53..bf9cb5409 100644
--- a/app/src/main/java/io/legado/app/ui/replacerule/GroupManageDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/replacerule/GroupManageDialog.kt
@@ -16,6 +16,7 @@ import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter
+import io.legado.app.constant.AppPattern
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton
@@ -71,7 +72,7 @@ class GroupManageDialog : DialogFragment(), Toolbar.OnMenuItemClickListener {
App.db.replaceRuleDao().liveGroup().observe(viewLifecycleOwner, {
val groups = linkedSetOf()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
adapter.setItems(groups.toList())
})
diff --git a/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt b/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt
index adf9fbb03..52fec9244 100644
--- a/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/replacerule/ReplaceRuleActivity.kt
@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
+import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.ReplaceRule
import io.legado.app.help.BookHelp
import io.legado.app.help.IntentDataHelp
@@ -148,7 +149,7 @@ class ReplaceRuleActivity : VMBaseActivity(R.layout.activi
App.db.replaceRuleDao().liveGroup().observe(this, {
groups.clear()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
upGroupMenu()
})
diff --git a/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt b/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt
index bfb876e0b..48180951f 100644
--- a/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt
@@ -16,6 +16,7 @@ import io.legado.app.R
import io.legado.app.base.BaseDialogFragment
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter
+import io.legado.app.constant.AppPattern
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton
@@ -65,7 +66,7 @@ class GroupManageDialog : BaseDialogFragment(), Toolbar.OnMenuItemClickListener
App.db.rssSourceDao().liveGroup().observe(viewLifecycleOwner, {
val groups = linkedSetOf()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
adapter.setItems(groups.toList())
})
diff --git a/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt b/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt
index 2f9050f37..64fc6a849 100644
--- a/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt
@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
+import io.legado.app.constant.AppPattern
import io.legado.app.data.entities.RssSource
import io.legado.app.help.IntentDataHelp
import io.legado.app.help.ItemTouchCallback
@@ -144,7 +145,7 @@ class RssSourceActivity : VMBaseActivity(R.layout.activity_r
App.db.rssSourceDao().liveGroup().observe(this, {
groups.clear()
it.map { group ->
- groups.addAll(group.splitNotBlank(",", ";"))
+ groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))
}
upGroupMenu()
})