set Share Limit Action via webui

This commit is contained in:
Mark Yu 2025-07-13 17:33:36 -04:00
commit 3b7d6adc5f

View file

@ -1362,18 +1362,22 @@ void TorrentsController::setDownloadLimitAction()
void TorrentsController::setShareLimitsAction()
{
requireParams({u"hashes"_s, u"ratioLimit"_s, u"seedingTimeLimit"_s, u"inactiveSeedingTimeLimit"_s});
requireParams({u"hashes"_s, u"ratioLimit"_s, u"seedingTimeLimit"_s, u"inactiveSeedingTimeLimit"_s, u"shareLimitAction"_s});
const qreal ratioLimit = params()[u"ratioLimit"_s].toDouble();
const qlonglong seedingTimeLimit = params()[u"seedingTimeLimit"_s].toLongLong();
const qlonglong inactiveSeedingTimeLimit = params()[u"inactiveSeedingTimeLimit"_s].toLongLong();
const int shareLimitActionParamValue = params()[u"shareLimitAction"_s].toInt();
const BitTorrent::ShareLimitAction shareLimitAction = shareLimitActionParamValue >= 0 && shareLimitActionParamValue <= 3 ? static_cast<BitTorrent::ShareLimitAction>(shareLimitActionParamValue) : BitTorrent::ShareLimitAction::Default;
const QStringList hashes = params()[u"hashes"_s].split(u'|');
applyToTorrents(hashes, [ratioLimit, seedingTimeLimit, inactiveSeedingTimeLimit](BitTorrent::Torrent *const torrent)
applyToTorrents(hashes, [ratioLimit, seedingTimeLimit, inactiveSeedingTimeLimit, shareLimitAction](BitTorrent::Torrent *const torrent)
{
torrent->setRatioLimit(ratioLimit);
torrent->setSeedingTimeLimit(seedingTimeLimit);
torrent->setInactiveSeedingTimeLimit(inactiveSeedingTimeLimit);
torrent->setShareLimitAction(shareLimitAction);
});
setResult(QString());