| Index: src/FilterEngine.cpp |
| diff --git a/src/FilterEngine.cpp b/src/FilterEngine.cpp |
| index c7895280cf732e2bb4603849ada8d80be97d6e70..01c1f24c7a45a509c64717d2a0561ef9d997543c 100644 |
| --- a/src/FilterEngine.cpp |
| +++ b/src/FilterEngine.cpp |
| @@ -217,7 +217,7 @@ void FilterEngine::CreateAsync(const JsEnginePtr& jsEngine, |
| sync->Wait(); |
| return jsEngine->IsConnectionAllowed(); |
| }); |
| - jsEngine->SetEventCallback("_init", [jsEngine, filterEngine, onCreated, sync, isConnectionAllowedCallback](const JsValueList& params) |
| + jsEngine->SetEventCallback("_init", [jsEngine, filterEngine, onCreated, sync, isConnectionAllowedCallback](JsValueList&& params) |
| { |
| filterEngine->firstRun = params.size() && params[0].AsBool(); |
| if (isConnectionAllowedCallback) |
| @@ -388,14 +388,18 @@ void FilterEngine::ShowNextNotification(const std::string& url) const |
| func.Call(params); |
| } |
| -void FilterEngine::SetShowNotificationCallback(const ShowNotificationCallback& value) |
| +void FilterEngine::SetShowNotificationCallback(const ShowNotificationCallback& callback) |
| { |
| - if (!value) |
| + if (!callback) |
| return; |
| - jsEngine->SetEventCallback("_showNotification", |
| - std::bind(&FilterEngine::ShowNotification, this, value, |
| - std::placeholders::_1)); |
| + jsEngine->SetEventCallback("_showNotification", [this, callback](JsValueList&& params) |
| + { |
| + if (params.size() < 1 || !params[0].IsObject()) |
| + return; |
| + |
| + callback(Notification(std::move(params[0]))); |
| + }); |
| } |
| void FilterEngine::RemoveShowNotificationCallback() |
| @@ -494,9 +498,11 @@ std::string FilterEngine::GetHostFromURL(const std::string& url) const |
| void FilterEngine::SetUpdateAvailableCallback( |
| const FilterEngine::UpdateAvailableCallback& callback) |
| { |
| - jsEngine->SetEventCallback("updateAvailable", |
| - std::bind(&FilterEngine::UpdateAvailable, this, callback, |
| - std::placeholders::_1)); |
| + jsEngine->SetEventCallback("updateAvailable", [this, callback](JsValueList&& params) |
| + { |
| + if (params.size() >= 1 && !params[0].IsNull()) |
| + callback(params[0].AsString()); |
| + }); |
| } |
| void FilterEngine::RemoveUpdateAvailableCallback() |
| @@ -504,13 +510,6 @@ void FilterEngine::RemoveUpdateAvailableCallback() |
| jsEngine->RemoveEventCallback("updateAvailable"); |
| } |
| -void FilterEngine::UpdateAvailable( |
| - const FilterEngine::UpdateAvailableCallback& callback, const JsValueList& params) const |
| -{ |
| - if (params.size() >= 1 && !params[0].IsNull()) |
| - callback(params[0].AsString()); |
| -} |
| - |
| void FilterEngine::ForceUpdateCheck( |
| const FilterEngine::UpdateCheckDoneCallback& callback) |
| { |
| @@ -519,26 +518,23 @@ void FilterEngine::ForceUpdateCheck( |
| if (callback) |
| { |
| std::string eventName = "_updateCheckDone" + std::to_string(++updateCheckId); |
| - jsEngine->SetEventCallback(eventName, std::bind(&FilterEngine::UpdateCheckDone, |
| - this, eventName, callback, std::placeholders::_1)); |
| + jsEngine->SetEventCallback(eventName, [this, eventName, callback](JsValueList&& params) |
| + { |
| + std::string error(params.size() >= 1 && !params[0].IsNull() ? params[0].AsString() : ""); |
| + callback(error); |
| + jsEngine->RemoveEventCallback(eventName); |
| + }); |
| params.push_back(jsEngine->NewValue(eventName)); |
| } |
| func.Call(params); |
| } |
| -void FilterEngine::UpdateCheckDone(const std::string& eventName, |
| - const FilterEngine::UpdateCheckDoneCallback& callback, const JsValueList& params) |
| +void FilterEngine::SetFilterChangeCallback(const FilterChangeCallback& callback) |
| { |
| - jsEngine->RemoveEventCallback(eventName); |
| - |
| - std::string error(params.size() >= 1 && !params[0].IsNull() ? params[0].AsString() : ""); |
| - callback(error); |
| -} |
| - |
| -void FilterEngine::SetFilterChangeCallback(const FilterEngine::FilterChangeCallback& callback) |
| -{ |
| - jsEngine->SetEventCallback("filterChange", std::bind(&FilterEngine::FilterChanged, |
| - this, callback, std::placeholders::_1)); |
| + jsEngine->SetEventCallback("filterChange", [this, callback](JsValueList&& params) |
| + { |
| + this->FilterChanged(callback, move(params)); |
| + }); |
| } |
| void FilterEngine::RemoveFilterChangeCallback() |
| @@ -559,28 +555,13 @@ std::unique_ptr<std::string> FilterEngine::GetAllowedConnectionType() const |
| return std::unique_ptr<std::string>(new std::string(prefValue.AsString())); |
| } |
| -void FilterEngine::FilterChanged(const FilterEngine::FilterChangeCallback& callback, const JsValueList& params) const |
| +void FilterEngine::FilterChanged(const FilterEngine::FilterChangeCallback& callback, JsValueList&& params) const |
| { |
| std::string action(params.size() >= 1 && !params[0].IsNull() ? params[0].AsString() : ""); |
| JsValue item(params.size() >= 2 ? params[1] : jsEngine->NewValue(false)); |
| - callback(action, item); |
| -} |
| - |
| -void FilterEngine::ShowNotification(const ShowNotificationCallback& callback, |
| - const JsValueList& params) const |
| -{ |
| - if (params.size() < 1) |
| - return; |
| - |
| - if (!params[0].IsObject()) |
| - { |
| - return; |
| - } |
| - auto notification = Notification(JsValue(params[0])); |
| - callback(notification); |
| + callback(action, std::move(item)); |
| } |
| - |
| int FilterEngine::CompareVersions(const std::string& v1, const std::string& v2) const |
| { |
| JsValueList params; |