From 1616261bef925d7c7d3e9b4c23b524a1db3ff2d2 Mon Sep 17 00:00:00 2001 From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com> Date: Wed, 20 Sep 2023 15:38:15 -0300 Subject: [PATCH] misc: update plugin-store after plugin uninstall Change-Id: Ibbb428e17f362f3645a530ad55fbd87d6719f98d --- src/app/pluginlistmodel.cpp | 3 +++ src/app/pluginlistmodel.h | 3 ++- src/app/pluginstorelistmodel.cpp | 10 +++------- src/app/pluginversionmanager.cpp | 2 +- .../settingsview/components/PluginPreferencesView.qml | 3 ++- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/app/pluginlistmodel.cpp b/src/app/pluginlistmodel.cpp index 46f25caee..a63ffb4a6 100644 --- a/src/app/pluginlistmodel.cpp +++ b/src/app/pluginlistmodel.cpp @@ -80,6 +80,8 @@ PluginListModel::data(const QModelIndex& index, int role) const return QVariant(pluginStatus_.value(installedPlugins_.at(index.row()))); case Role::NewPluginAvailable: return QVariant(newVersionAvailable_.value(installedPlugins_.at(index.row()))); + case Role::Id: + return QVariant(details.id); } return QVariant(); } @@ -98,6 +100,7 @@ PluginListModel::roleNames() const roles[Status] = "Status"; roles[PluginDescription] = "PluginDescription"; roles[NewPluginAvailable] = "NewPluginAvailable"; + roles[Id] = "Id"; return roles; } diff --git a/src/app/pluginlistmodel.h b/src/app/pluginlistmodel.h index 9605b3004..8bf2a0776 100644 --- a/src/app/pluginlistmodel.h +++ b/src/app/pluginlistmodel.h @@ -38,7 +38,8 @@ public: PluginIcon, NewPluginAvailable, IsLoaded, - Status + Status, + Id }; Q_ENUM(Role) diff --git a/src/app/pluginstorelistmodel.cpp b/src/app/pluginstorelistmodel.cpp index dc7c7bac3..3a9c08a5e 100644 --- a/src/app/pluginstorelistmodel.cpp +++ b/src/app/pluginstorelistmodel.cpp @@ -79,7 +79,6 @@ void PluginStoreListModel::reset() { beginResetModel(); - plugins_.clear(); endResetModel(); } @@ -88,8 +87,8 @@ PluginStoreListModel::addPlugin(const QVariantMap& plugin) { beginInsertRows(QModelIndex(), plugins_.size(), plugins_.size()); plugins_.append(plugin); - endInsertRows(); sort(); + endInsertRows(); } void @@ -97,8 +96,8 @@ PluginStoreListModel::setPlugins(const QList<QVariantMap>& plugins) { beginResetModel(); plugins_ = filterPlugins(plugins); - endResetModel(); sort(); + endResetModel(); } void @@ -109,12 +108,12 @@ PluginStoreListModel::removePlugin(const QString& pluginId) if (plugin["id"].toString() == pluginId) { beginRemoveRows(QModelIndex(), index, index); plugins_.removeAt(index); + sort(); endRemoveRows(); return; } index++; } - sort(); } void @@ -129,7 +128,6 @@ PluginStoreListModel::updatePlugin(const QVariantMap& plugin) } index++; } - sort(); } QColor @@ -221,11 +219,9 @@ PluginStoreListModel::rowFromPluginId(const QString& pluginId) const void PluginStoreListModel::sort() { - beginResetModel(); std::sort(plugins_.begin(), plugins_.end(), [](const QVariantMap& a, const QVariantMap& b) { return a["timestamp"].toString() < b["timestamp"].toString(); }); - endResetModel(); } QList<QVariantMap> diff --git a/src/app/pluginversionmanager.cpp b/src/app/pluginversionmanager.cpp index 04c850d3f..6f2c11d52 100644 --- a/src/app/pluginversionmanager.cpp +++ b/src/app/pluginversionmanager.cpp @@ -109,7 +109,7 @@ public: // `data` represents the version in this case. if (plugin.version < data) { if (isAutoUpdaterEnabled()) { - installRemotePlugin(plugin.name); + installRemotePlugin(plugin.id); return; } } diff --git a/src/app/settingsview/components/PluginPreferencesView.qml b/src/app/settingsview/components/PluginPreferencesView.qml index 35b185b50..79d8163ec 100644 --- a/src/app/settingsview/components/PluginPreferencesView.qml +++ b/src/app/settingsview/components/PluginPreferencesView.qml @@ -289,9 +289,10 @@ Item { "buttonTitles": [JamiStrings.optionOk, JamiStrings.optionCancel], "buttonStyles": [SimpleMessageDialog.ButtonStyle.TintedBlue, SimpleMessageDialog.ButtonStyle.TintedBlack], "buttonCallBacks": [function () { - PluginListModel.setVersionStatus(PluginName, PluginStatus.INSTALLABLE); + PluginListModel.setVersionStatus(Id, PluginStatus.INSTALLABLE); PluginModel.uninstallPlugin(PluginId); PluginListModel.removePlugin(index); + PluginAdapter.getPluginsFromStore(); // could not call root from here settings.ListView.view.parent.closed(); }] -- GitLab