فهرست منبع

[修复] 修复了目录规则和字典规则无法新增的问题。注意,不要在其他界面编辑目录规则,我还没重写那些界面,先将就一下罢 #609

HapeLee 9 ماه پیش
والد
کامیت
0b9ce9ddef

+ 16 - 22
.github/workflows/test.yml

@@ -289,36 +289,30 @@ jobs:
       - name: 获取 Commit 记录
         id: get_commits
         run: |
-          # prepare Job 中计算出的日志起点 Tag (LAST_TAG_FOR_LOG)
           LAST_TAG="${{ needs.prepare.outputs.latest_tag }}"
+          IS_RELEASE="${{ needs.prepare.outputs.is_release }}"
           
-          # 获取从上一个 Tag 到当前 HEAD 的所有 Commit 消息
-          # --no-merges: 排除合并提交
           COMMIT_LOG=$(git log "$LAST_TAG"..HEAD --pretty=format:"* %s" --no-merges)
           
           if [ -z "$COMMIT_LOG" ]; then
-          RELEASE_BODY=$(cat <<EOF
-          ### 更新内容
-          
-          - 没有新的 Commit 记录.
-          EOF
-          )
+              CONTENT="- 没有新的 Commit 记录."
           else
-          RELEASE_BODY=$(cat <<EOF
-          ### 更新内容
-          
-          $COMMIT_LOG
-          EOF
-          )
+              CONTENT="$COMMIT_LOG"
           fi
           
-            # 设置 step 输出
-          echo "release_body<<EOF" >> $GITHUB_OUTPUT
-          echo "$RELEASE_BODY" >> $GITHUB_OUTPUT
-          echo "EOF" >> $GITHUB_OUTPUT
-          
-          echo "生成的 Release Body:"
-          echo "$RELEASE_BODY"
+          {
+            echo "release_body<<EOF"
+            if [[ "$IS_RELEASE" != "true" ]]; then
+                echo "**此版本为测试版,会存在不稳定问题。**"
+                echo ""
+            fi
+            echo "### 更新内容"
+            echo ""
+            echo "$CONTENT"
+            echo "EOF"
+          } >> $GITHUB_OUTPUT
+
+          echo "Release Body 已生成。"
 
       - name: 创建 Tag
         run: |

+ 9 - 4
app/src/main/java/io/legado/app/ui/book/toc/rule/TxtRuleScreen.kt

@@ -212,15 +212,20 @@ fun TxtRuleScreen(
     if (showEditSheet) {
         RuleEditSheet(
             rule = editingRule,
-            title = stringResource(R.string.dict_rule),
-            label1 = stringResource(R.string.url_rule),
-            label2 = stringResource(R.string.show_rule),
+            title = stringResource(R.string.txt_toc_rule),
+            label1 = stringResource(R.string.regex),
+            label2 = stringResource(R.string.example),
             onDismissRequest = {
                 showEditSheet = false
                 editingRule = null
             },
             onSave = { updatedRule ->
-                viewModel.update(updatedRule)
+                //TODO:我很想把他改为自增主键,但为了兼容性日后再说
+                if (editingRule == null) {
+                    viewModel.insert(updatedRule)
+                } else {
+                    viewModel.update(updatedRule)
+                }
                 showEditSheet = false
                 editingRule = null
             },

+ 4 - 4
app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleDialog.kt

@@ -155,7 +155,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
     }
 
     override fun saveTxtTocRule(txtTocRule: TxtTocRule) {
-        viewModel.update(txtTocRule)
+        //viewModel.update(txtTocRule)
     }
 
     @SuppressLint("InflateParams")
@@ -280,7 +280,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
                     if (buttonView.isPressed) {
                         getItem(holder.layoutPosition)?.let {
                             it.enable = isChecked
-                            viewModel.update(it)
+                            //viewModel.update(it)
                         }
                     }
                 }
@@ -293,7 +293,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
                             setMessage(getString(R.string.sure_del) + "\n" + item.name)
                             noButton()
                             yesButton {
-                                viewModel.delete(item)
+                                //viewModel.delete(item)
                             }
                         }
                     }
@@ -315,7 +315,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
                 for ((index, item) in getItems().withIndex()) {
                     item.serialNumber = index + 1
                 }
-                viewModel.update(*getItems().toTypedArray())
+                //viewModel.update(*getItems().toTypedArray())
             }
             isMoved = false
         }

+ 10 - 1
app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleViewModel.kt

@@ -90,10 +90,19 @@ class TxtTocRuleViewModel(
         }
     }
 
+    fun save(rule: TxtTocRule) {
+        viewModelScope.launch {
+            if (rule.id == 0L) {
+                repository.insert(rule)
+            } else {
+                repository.update(rule)
+            }
+        }
+    }
+
     fun update(vararg rules: TxtTocRule) = viewModelScope.launch { repository.update(*rules) }
     fun insert(vararg rules: TxtTocRule) = viewModelScope.launch { repository.insert(*rules) }
     fun delete(vararg rules: TxtTocRule) = viewModelScope.launch { repository.delete(*rules) }
-
     fun enableSelectionByIds(ids: Set<Long>) =
         viewModelScope.launch { repository.enableByIds(ids, true) }
 

+ 5 - 1
app/src/main/java/io/legado/app/ui/dict/rule/DictRuleScreen.kt

@@ -220,7 +220,11 @@ fun DictRuleScreen(
                 editingRule = null
             },
             onSave = { updatedRule ->
-                viewModel.update(updatedRule)
+                if (editingRule == null) {
+                    viewModel.insert(updatedRule)
+                } else {
+                    viewModel.update(updatedRule)
+                }
                 showEditSheet = false
                 editingRule = null
             },