Skip to content

fix(vnote): use folder ids for notebook operations#404

Merged
lzwind merged 1 commit into
linuxdeepin:develop/snipefrom
dengzhongyuan365-dev:bug-fix-7-10
Jul 9, 2026
Merged

fix(vnote): use folder ids for notebook operations#404
lzwind merged 1 commit into
linuxdeepin:develop/snipefrom
dengzhongyuan365-dev:bug-fix-7-10

Conversation

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member

Unify notebook operations across QML/C++ on stable folderId semantics instead of mixing UI indexes with internal sort indexes.\n\nAlso reset empty-folder startup/delete state to the initial create page and add a regression checklist for affected PMS bugs.\n\nLog: 修复记事本删除、移动和空状态下 folderId/index 语义错位问题\nInfluence: 记事本删除、移动笔记数量、快速创建笔记归属、空列表初始页和相关回归清单。

pms: BUG-320469

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @dengzhongyuan365-dev, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

★ 总体评分:88分

■ 【总体评价】

代码重构了文件夹计数与状态管理逻辑,显著提升了稳定性,但残留了调试日志和无用变量
逻辑正确且无安全漏洞,因代码质量瑕疵扣除部分分数

■ 【详细分析】

  • 1.语法逻辑 完全正确 ✓

修复了跨文件夹新增笔记时计数不更新、移动笔记依赖不稳定索引导致错乱、以及空文件夹状态清理不彻底的核心业务缺陷。onItemChanged 中增加了 index 边界检查,有效防止数组越界。类型转换使用 Number() 处理合理。
建议:无需修改

  • 2.代码质量 一般 ✕

updateFolderCountsByIdadjustFolderCountById 函数中保留了 console.log 调试打印语句。onMoveFinishedByFolderId 函数中声明了 minIndex 变量但后续逻辑中并未实际使用。
潜在问题:生产环境中遗留调试日志会影响控制台输出纯净度;无用变量降低代码可读性并可能引起后续维护者的误解。
建议:移除两处 console.log 语句;删除 onMoveFinishedByFolderId 中未使用的 minIndex 变量及其赋值语句。

  • 3.代码性能 无性能问题 ✓

新增的三个辅助函数虽然使用了 O(N) 的遍历查询,但基于 QML ListModel 的特性及笔记应用中文件夹数量有限的业务场景,不会产生可感知的性能瓶颈。
建议:无需修改

  • 4.代码安全 存在0个安全漏洞 ✓

漏洞对比统计:新增漏洞 0 个,减少漏洞 0 个,持平 0 个
代码仅涉及前端 UI 状态管理与数据绑定,未发现命令注入、路径遍历、敏感信息泄露等安全风险。外部传入的 folderId 等参数均通过 Number() 进行了安全的类型转换,阻断了潜在的异常数据注入。
建议:保持当前的安全编码实践

■ 【改进建议代码示例】

        function updateFolderCountsById(folderIdToCount) {
            for (var i = 0; i < folderListView.model.count; i++) {
                var folder = folderListView.model.get(i);
                var fidStr = folder.folderId.toString();
                var newCount = folderIdToCount[fidStr];
                if (newCount !== undefined) {
                    folder.count = Number(newCount).toString();
                }
            }
        }

        function adjustFolderCountById(folderId, delta) {
            for (var i = 0; i < folderListView.model.count; i++) {
                var folder = folderListView.model.get(i);
                if (Number(folder.folderId) === Number(folderId)) {
                    var oldCount = Number(folder.count);
                    folder.count = (oldCount + Number(delta)).toString();
                    return true;
                }
            }
            return false;
        }

        onMoveFinishedByFolderId: function(noteIds, srcFolderId, dstFolderId, folderIdToCount) {
            updateFolderCountsById(folderIdToCount);
            var sortedArray = sortDescending(itemListView.selectedNoteItem);
            for (var i = 0; i < sortedArray.length; i++) {
                itemListView.model.remove(sortedArray[i]);
            }
            itemListView.selectedNoteItem = [];
            if (folderCountById(srcFolderId) === 0) {
                webEngineView.webVisible = false;
            } else {
                webEngineView.webVisible = true;
            }
        }

Unify notebook operations across QML/C++ on stable folderId semantics instead of mixing UI indexes with internal sort indexes.\n\nAlso reset empty-folder startup/delete state to the initial create page and add a regression checklist for affected PMS bugs.\n\nLog: 修复记事本删除、移动和空状态下 folderId/index 语义错位问题\nInfluence: 记事本删除、移动笔记数量、快速创建笔记归属、空列表初始页和相关回归清单。

pms: BUG-320469
@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dengzhongyuan365-dev, lzwind

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member Author

/forcemerge

3 similar comments
@dengzhongyuan365-dev

Copy link
Copy Markdown
Member Author

/forcemerge

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member Author

/forcemerge

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member Author

/forcemerge

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member Author

/merge

@lzwind
lzwind merged commit 44101cc into linuxdeepin:develop/snipe Jul 9, 2026
22 checks passed
@deepin-bot

deepin-bot Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

This pr force merged! (status: unknown)

3 similar comments
@deepin-bot

deepin-bot Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

This pr force merged! (status: unknown)

@deepin-bot

deepin-bot Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

This pr force merged! (status: unknown)

@deepin-bot

deepin-bot Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

This pr force merged! (status: unknown)

@deepin-bot

deepin-bot Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

This pr cannot be merged! (status: unknown)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants