WebViewPanel: JS arrow function rewritten to old function notation

This commit is contained in:
Jan Bařtipán 2024-06-20 15:49:58 +02:00 committed by Lukas Matena
parent dcfb965192
commit e6eff5f57f
2 changed files with 42 additions and 28 deletions

View File

@ -489,6 +489,7 @@ ConnectRequestHandler::ConnectRequestHandler()
m_actions["SELECT_PRINTER"] = std::bind(&ConnectRequestHandler::on_connect_action_select_printer, this, std::placeholders::_1); m_actions["SELECT_PRINTER"] = std::bind(&ConnectRequestHandler::on_connect_action_select_printer, this, std::placeholders::_1);
m_actions["PRINT"] = std::bind(&ConnectRequestHandler::on_connect_action_print, this, std::placeholders::_1); m_actions["PRINT"] = std::bind(&ConnectRequestHandler::on_connect_action_print, this, std::placeholders::_1);
m_actions["REQUEST_OPEN_IN_BROWSER"] = std::bind(&ConnectRequestHandler::on_connect_action_request_open_in_browser, this, std::placeholders::_1); m_actions["REQUEST_OPEN_IN_BROWSER"] = std::bind(&ConnectRequestHandler::on_connect_action_request_open_in_browser, this, std::placeholders::_1);
m_actions["ERROR"] = std::bind(&ConnectRequestHandler::on_connect_action_error, this, std::placeholders::_1);
} }
ConnectRequestHandler::~ConnectRequestHandler() ConnectRequestHandler::~ConnectRequestHandler()
{ {
@ -527,6 +528,11 @@ void ConnectRequestHandler::handle_message(const std::string& message)
} }
} }
void ConnectRequestHandler::on_connect_action_error(const std::string &message_data)
{
BOOST_LOG_TRIVIAL(error) << "WebKit runtime error: " << message_data;
}
void ConnectRequestHandler::resend_config() void ConnectRequestHandler::resend_config()
{ {
on_connect_action_request_config({}); on_connect_action_request_config({});
@ -579,15 +585,18 @@ ConnectWebViewPanel::~ConnectWebViewPanel()
m_browser->Unbind(EVT_UA_ID_USER_SUCCESS, &ConnectWebViewPanel::on_user_token, this); m_browser->Unbind(EVT_UA_ID_USER_SUCCESS, &ConnectWebViewPanel::on_user_token, this);
} }
void ConnectWebViewPanel::on_page_will_load() wxString ConnectWebViewPanel::get_login_script(bool refresh)
{ {
Plater* plater = wxGetApp().plater(); Plater* plater = wxGetApp().plater();
const std::string& access_token = plater->get_user_account()->get_access_token(); const std::string& access_token = plater->get_user_account()->get_access_token();
assert(!access_token.empty()); assert(!access_token.empty());
auto javascript = wxString::Format( auto javascript = wxString::Format(
#if AUTH_VIA_FETCH_OVERRIDE #if AUTH_VIA_FETCH_OVERRIDE
refresh
?
"window.__access_token = '%s';window.__access_token_version = (window.__access_token_version || 0) + 1;console.log('Updated Auth token', window.__access_token);"
:
/* /*
* Notes: * Notes:
* - The fetch() function has two distinct prototypes (i.e. input args): * - The fetch() function has two distinct prototypes (i.e. input args):
@ -620,15 +629,32 @@ void ConnectWebViewPanel::on_page_will_load()
#else #else
R"( R"(
console.log('Preparing login'); console.log('Preparing login');
window.fetch('/slicer/login', {method: 'POST', headers: {Authorization: 'Bearer %s'}}) function errorHandler(err) {
.then((resp) => { window._prusaSlicer.postMessage({
console.log('Login resp', resp); action: 'ERROR',
resp.text().then((json) => console.log('Login resp body', json)); error: err
}); });
};
window.fetch('/slicer/login', {method: 'POST', headers: {Authorization: 'Bearer %s'}})
.then(function (resp) {
console.log('Login resp', resp);
resp.text()
.then(function (json) { console.log('Login resp body', json); })
.then(function (body) {
if (resp.status >= 400) window._prusaSlicer.postMessage({action: 'ERROR', error: body});
});
})
.catch(errorHandler);
)", )",
#endif #endif
access_token access_token
); );
return javascript;
}
void ConnectWebViewPanel::on_page_will_load()
{
auto javascript = get_login_script(false);
std::cout << "RunScript " << javascript << "\n"; std::cout << "RunScript " << javascript << "\n";
m_browser->AddUserScript(javascript); m_browser->AddUserScript(javascript);
} }
@ -638,21 +664,7 @@ void ConnectWebViewPanel::on_user_token(UserAccountSuccessEvent& e)
e.Skip(); e.Skip();
auto access_token = wxGetApp().plater()->get_user_account()->get_access_token(); auto access_token = wxGetApp().plater()->get_user_account()->get_access_token();
assert(!access_token.empty()); assert(!access_token.empty());
wxString javascript = wxString::Format( wxString javascript = get_login_script(true);
#if AUTH_VIA_FETCH_OVERRIDE
"window.__access_token = '%s';window.__access_token_version = (window.__access_token_version || 0) + 1;console.log('Updated Auth token', window.__access_token);",
#else
R"(
console.log('Preparing login');
window.fetch('/slicer/login', {method: 'POST', headers: {Authorization: 'Bearer %s'}})
.then((resp) => {
console.log('Login resp', resp);
resp.text().then((json) => console.log('Login resp body', json));
});
)",
#endif
access_token
);
//m_browser->AddUserScript(javascript, wxWEBVIEW_INJECT_AT_DOCUMENT_END); //m_browser->AddUserScript(javascript, wxWEBVIEW_INJECT_AT_DOCUMENT_END);
std::cout << "RunScript " << javascript << "\n"; std::cout << "RunScript " << javascript << "\n";
m_browser->RunScriptAsync(javascript); m_browser->RunScriptAsync(javascript);
@ -687,9 +699,9 @@ void ConnectWebViewPanel::logout()
R"( R"(
console.log('Preparing login'); console.log('Preparing login');
window.fetch('/slicer/logout', {method: 'POST', headers: {Authorization: 'Bearer %s'}}) window.fetch('/slicer/logout', {method: 'POST', headers: {Authorization: 'Bearer %s'}})
.then((resp) => { .then(function (resp){
console.log('Login resp', resp); console.log('Login resp', resp);
resp.text().then((json) => console.log('Login resp body', json)); resp.text().then(function (json) { console.log('Login resp body', json) });
}); });
)", )",
plater->get_user_account()->get_access_token() plater->get_user_account()->get_access_token()

View File

@ -181,6 +181,7 @@ public:
void resend_config(); void resend_config();
protected: protected:
// action callbacs stored in m_actions // action callbacs stored in m_actions
virtual void on_connect_action_error(const std::string& message_data);
virtual void on_connect_action_request_config(const std::string& message_data); virtual void on_connect_action_request_config(const std::string& message_data);
virtual void on_connect_action_request_open_in_browser(const std::string& message_data); virtual void on_connect_action_request_open_in_browser(const std::string& message_data);
virtual void on_connect_action_select_printer(const std::string& message_data) = 0; virtual void on_connect_action_select_printer(const std::string& message_data) = 0;
@ -207,6 +208,7 @@ protected:
void run_script_bridge(const wxString& script) override {run_script(script); } void run_script_bridge(const wxString& script) override {run_script(script); }
void on_page_will_load() override; void on_page_will_load() override;
private: private:
static wxString get_login_script(bool refresh);
void on_user_token(UserAccountSuccessEvent& e); void on_user_token(UserAccountSuccessEvent& e);
bool m_reached_default_url {false}; bool m_reached_default_url {false};
}; };