diff --git a/src/app/pluginlistmodel.cpp b/src/app/pluginlistmodel.cpp index 46f25caee72205234f0268b8b5798652ad15ba7a..a63ffb4a6c54fb979224916a98f75dde05b06fa4 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 9605b3004342b2f738542a4b0e6172c2d355b490..8bf2a07760bde15fa58404042307fc1bc9f9659f 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 dc7c7bac301728c9aed889918695c1d32f0caade..3a9c08a5e522fd6de858473fe10567f96dff8dcc 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 04c850d3f57b2b61618effdd03a162e0573d08d9..6f2c11d5233458f2fd116a5efb1aca976e239bd2 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 35b185b502c725a6f9c78a7b85567fc9c5b6bc00..79d8163ec132ddbd1c830f4e82feb106f9e55bc5 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(); }]