fix: create user's mimeapp when it doesn't exists

issue: https://github.com/linuxdeepin/developer-center/issues/6794

Signed-off-by: ComixHe <heyuming@deepin.org>
This commit is contained in:
ComixHe
2024-01-09 15:16:01 +08:00
committed by Comix
parent 75c333366a
commit 9833dd24eb
2 changed files with 34 additions and 11 deletions

View File

@ -90,9 +90,21 @@ QString MimeManager1Service::queryDefaultApplication(const QString &content, QDB
void MimeManager1Service::setDefaultApplication(const QStringMap &defaultApps) noexcept
{
auto &app = m_infos.front().appsList();
if (app.empty()) {
sendErrorReply(QDBusError::InternalError);
return;
}
auto userConfig = std::find_if(
app.begin(), app.end(), [](const MimeApps &config) { return !config.isDesktopSpecific(); }); // always find this
if (userConfig == app.end()) {
qWarning() << "couldn't find user mimeApps";
sendErrorReply(QDBusError::InternalError);
return;
}
for (auto it = defaultApps.constKeyValueBegin(); it != defaultApps.constKeyValueEnd(); ++it) {
userConfig->setDefaultApplication(it->first, it->second);
}