From d289b1195046bf162dfe688003224176b29904f4 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Mon, 25 Mar 2024 10:18:30 +0100 Subject: [PATCH] User Account avatar extension (Missing support for jpg in ScalableBitmap) --- src/slic3r/GUI/UserAccount.cpp | 4 +++- src/slic3r/GUI/UserAccount.hpp | 1 + src/slic3r/GUI/UserAccountCommunication.cpp | 2 +- src/slic3r/GUI/UserAccountCommunication.hpp | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/UserAccount.cpp b/src/slic3r/GUI/UserAccount.cpp index 1138375801..7437d1b2e3 100644 --- a/src/slic3r/GUI/UserAccount.cpp +++ b/src/slic3r/GUI/UserAccount.cpp @@ -77,7 +77,7 @@ std::string UserAccount::get_shared_session_key() boost::filesystem::path UserAccount::get_avatar_path(bool logged) const { if (logged) { - const std::string filename = "prusaslicer-avatar-" + m_instance_hash + ".png"; + const std::string filename = "prusaslicer-avatar-" + m_instance_hash + m_avatar_extension; return boost::filesystem::path(wxStandardPaths::Get().GetTempDir().utf8_str().data()) / filename; } else { return boost::filesystem::path(resources_dir()) / "icons" / "user.svg"; @@ -143,6 +143,8 @@ bool UserAccount::on_user_id_success(const std::string data, std::string& out_us out_username = public_username; // equeue GET with avatar url if (m_account_user_data.find("avatar") != m_account_user_data.end()) { + const boost::filesystem::path server_file(m_account_user_data["avatar"]); + m_avatar_extension = server_file.extension().string(); enqueue_avatar_action(); } else { diff --git a/src/slic3r/GUI/UserAccount.hpp b/src/slic3r/GUI/UserAccount.hpp index e9c746bf8a..ba8262ac94 100644 --- a/src/slic3r/GUI/UserAccount.hpp +++ b/src/slic3r/GUI/UserAccount.hpp @@ -86,6 +86,7 @@ private: std::map m_account_user_data; std::string m_username; size_t m_fail_counter { 0 }; + std::string m_avatar_extension; // first string is "printer_type" code from Connect edpoints const std::map printer_type_and_name_table = { diff --git a/src/slic3r/GUI/UserAccountCommunication.cpp b/src/slic3r/GUI/UserAccountCommunication.cpp index 56d234f9b4..eb203667e4 100644 --- a/src/slic3r/GUI/UserAccountCommunication.cpp +++ b/src/slic3r/GUI/UserAccountCommunication.cpp @@ -337,7 +337,7 @@ void UserAccountCommunication::enqueue_test_connection() wakeup_session_thread(); } -void UserAccountCommunication::enqueue_avatar_action(const std::string url) +void UserAccountCommunication::enqueue_avatar_action(const std::string& url) { { std::lock_guard lock(m_session_mutex); diff --git a/src/slic3r/GUI/UserAccountCommunication.hpp b/src/slic3r/GUI/UserAccountCommunication.hpp index db6eb05168..e05af5dd99 100644 --- a/src/slic3r/GUI/UserAccountCommunication.hpp +++ b/src/slic3r/GUI/UserAccountCommunication.hpp @@ -44,7 +44,7 @@ public: void enqueue_connect_user_data_action(); #endif void enqueue_connect_printers_action(); - void enqueue_avatar_action(const std::string url); + void enqueue_avatar_action(const std::string& url); void enqueue_test_connection(); // Callbacks - called from UI after receiving Event from Session thread. Some might use Session thread.