Skip to content

fix: fix update page display issues#233

Open
xionglinlin wants to merge 1 commit intolinuxdeepin:masterfrom
xionglinlin:master
Open

fix: fix update page display issues#233
xionglinlin wants to merge 1 commit intolinuxdeepin:masterfrom
xionglinlin:master

Conversation

@xionglinlin
Copy link
Contributor

  1. Fixed UI display logic in updateCheckUpdateUi() to handle UpdatesAvailable status
  2. Removed redundant status setting and UI update calls in onCheckUpdateStatusChanged()
  3. Ensured proper UI state transitions during update checking process

Log: Fixed abnormal display issues on the update check page

Influence:

  1. Test update checking process from start to completion
  2. Verify UI displays correctly when updates are available
  3. Check that "Check Again" button appears properly in all states
  4. Verify system status messages show correctly
  5. Test transition between checking, available, and updated states

fix: 修复更新页面显示异常问题

  1. 修复 updateCheckUpdateUi() 中的 UI 显示逻辑,正确处理 UpdatesAvailable 状态
  2. 移除 onCheckUpdateStatusChanged() 中冗余的状态设置和 UI 更新调用
  3. 确保更新检查过程中的 UI 状态转换正确

Log: 修复更新检查页面显示异常问题

Influence:

  1. 测试从开始到完成的更新检查流程
  2. 验证有可用更新时 UI 显示正确
  3. 检查"再次检查"按钮在所有状态下正确显示
  4. 验证系统状态消息正确显示
  5. 测试检查中、有可用更新、已更新状态之间的转换

PMS: BUG-350187

1. Fixed UI display logic in updateCheckUpdateUi() to handle
UpdatesAvailable status
2. Removed redundant status setting and UI update calls in
onCheckUpdateStatusChanged()
3. Ensured proper UI state transitions during update checking process

Log: Fixed abnormal display issues on the update check page

Influence:
1. Test update checking process from start to completion
2. Verify UI displays correctly when updates are available
3. Check that "Check Again" button appears properly in all states
4. Verify system status messages show correctly
5. Test transition between checking, available, and updated states

fix: 修复更新页面显示异常问题

1. 修复 updateCheckUpdateUi() 中的 UI 显示逻辑,正确处理
UpdatesAvailable 状态
2. 移除 onCheckUpdateStatusChanged() 中冗余的状态设置和 UI 更新调用
3. 确保更新检查过程中的 UI 状态转换正确

Log: 修复更新检查页面显示异常问题

Influence:
1. 测试从开始到完成的更新检查流程
2. 验证有可用更新时 UI 显示正确
3. 检查"再次检查"按钮在所有状态下正确显示
4. 验证系统状态消息正确显示
5. 测试检查中、有可用更新、已更新状态之间的转换

PMS: BUG-350187
@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: xionglinlin

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

@deepin-ci-robot
Copy link

deepin pr auto review

这份代码变更主要涉及更新检查流程中UI状态的处理逻辑。以下是对该代码变更的详细审查意见:

1. 语法逻辑审查

问题点:

  1. updatemodel.cpp 中的状态合并逻辑
    updateCheckUpdateUi() 中,将 UpdatesAvailable(有可用更新)和 Updated(已是最新)两个截然不同的状态合并到了同一个 case 分支中。

    • 逻辑冲突:当状态为 UpdatesAvailable 时,系统实际上有更新可用,但代码却执行了 setCheckUpdateErrTips(tr("Your system is up to date"))。这会导致用户明明有更新可装,却看到"系统已是最新"的错误提示,属于严重的逻辑错误。
  2. updatework.cpp 中的 updateCheckUpdateUi() 调用移除
    value == "end" 的分支中,移除了 m_model->updateCheckUpdateUi() 的调用。

    • 潜在风险:如果 setCheckUpdateStatus 内部没有触发 UI 刷新信号,或者依赖外部的 updateCheckUpdateUi 来统一刷新界面,那么移除这行代码会导致检查结束时 UI 状态不同步(例如按钮状态、提示语没有更新)。

2. 代码质量审查

改进意见:

  1. 明确状态处理
    UpdatesAvailableUpdated 应该有独立的 UI 展示逻辑。建议恢复对 UpdatesAvailable 的独立处理,或者至少确保提示文本与实际状态一致。

  2. 代码可读性
    updatework.cpp 中,m_model->setLastStatus(CheckingSucceed, __LINE__); 被删除了。如果这是为了修复某个 bug,建议在提交信息中说明原因,否则保留状态设置的代码通常更有利于调试和状态追踪。

3. 代码性能审查

  • 本次变更主要涉及逻辑判断和 UI 设置,对性能影响极小,无需特别关注。

4. 代码安全审查

  • 用户体验安全:如前所述,UpdatesAvailable 显示"已是最新"会误导用户,导致用户无法感知到系统有更新,这在安全更新方面是一个隐患,可能会阻碍用户安装关键的安全补丁。

修改建议

针对上述问题,建议对代码进行如下修正:

1. 修正 updatemodel.cpp

UpdatesAvailable 状态不应显示"已是最新"。如果该状态确实需要合并处理(例如为了简化代码),必须确保提示语是动态的或正确的。通常建议分开处理:

void UpdateModel::updateCheckUpdateUi()
{
    // ... 其他 case ...
    case Updated:
        qCDebug(logDccUpdatePlugin) << "Setting UI for Updated status";
        setCheckBtnText(tr("Check Again"));
        setCheckUpdateErrTips(tr("Your system is up to date"));
        break;
    case UpdatesAvailable:
        qCDebug(logDccUpdatePlugin) << "Setting UI for UpdatesAvailable status";
        // 根据实际业务逻辑设置按钮文本,通常应该是"Update"或"Install"
        setCheckBtnText(tr("Update")); 
        // 清除错误提示或显示有可用更新的提示,而不是"已是最新"
        setCheckUpdateErrTips(tr("Updates are available")); 
        break;
    // ... 其他 case ...
}

2. 修正 updatework.cpp

关于移除 m_model->updateCheckUpdateUi()

  • 如果 setCheckUpdateStatus 方法内部已经通过信号机制(如 emit statusChanged())触发了 UI 更新,那么移除是合理的,属于代码优化。
  • 如果 setCheckUpdateStatus 仅仅修改了内部变量,而没有触发 UI 刷新,强烈建议恢复这行代码,否则 UI 将卡在检查中的状态。

建议保留或确认机制:

    } else if (value == "end") {
        refreshLastTimeAndCheckCircle();
        m_model->setCheckUpdateStatus(UpdatesStatus(m_model->lastStatus()));
        
        // 确保UI在流程结束时得到刷新。如果 setCheckUpdateStatus 没触发信号,这里必须调用
        m_model->updateCheckUpdateUi(); 
        
        deleteJob(m_checkUpdateJob);
        m_doCheckUpdates = false;
    }

总结

这次代码变更存在明显的逻辑错误(UI 提示与实际状态不符),可能会导致严重的功能缺陷。建议在合并前修复 UpdatesAvailable 分支的提示逻辑,并仔细确认 updatework.cpp 中 UI 刷新的触发机制是否完整。

@deepin-bot
Copy link

deepin-bot bot commented Feb 5, 2026

TAG Bot

New tag: 1.0.43
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #234

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.

2 participants