FIX: update HMS init logic

jira: [STUDIO-11136] [STUDIO-11126]
Change-Id: I2556f1ad0bcd84b6c6ba892098f8618169bf98e9
This commit is contained in:
xin.zhang 2025-03-26 15:26:57 +08:00 committed by lane.wei
parent af658c653e
commit 23aff30a20
2 changed files with 25 additions and 25 deletions

View File

@ -7,8 +7,8 @@ static const char* HMS_PATH = "hms";
static const char* HMS_LOCAL_IMG_PATH = "hms/local_image"; static const char* HMS_LOCAL_IMG_PATH = "hms/local_image";
// the local HMS info // the local HMS info
static unordered_set<string> package_dev_id_types; static unordered_set<string> package_dev_id_types {"094"};
static unordered_set<string> cloud_dev_id_types{"00M", "00W", "03W", "01P", "01S", "030", "039", "094"}; //static unordered_set<string> cloud_dev_id_types{"00M", "00W", "03W", "01P", "01S", "030", "039", "094"};
namespace Slic3r { namespace Slic3r {
namespace GUI { namespace GUI {
@ -604,38 +604,36 @@ void HMSQuery::clear_hms_info()
void HMSQuery::init_hms_info(const std::string& dev_type_id) void HMSQuery::init_hms_info(const std::string& dev_type_id)
{ {
std::unique_lock unique_lock(m_hms_mutex); std::unique_lock unique_lock(m_hms_mutex);
if (m_hms_info_jsons.count(dev_type_id) != 0)
{
return;
}
if (package_dev_id_types.count(dev_type_id) != 0) if (package_dev_id_types.count(dev_type_id) != 0)
{ {
copy_from_data_dir_to_local();// STUDIO-9512 /*the local one only load once*/
if (m_hms_info_jsons.count(dev_type_id) == 0) {
string dev_type = "094"; std::string load_version;
m_hms_info_jsons.emplace(dev_type, json()); load_from_local(QUERY_HMS_INFO, dev_type_id, &m_hms_info_jsons[dev_type_id], load_version);/*load from local first*/
m_hms_action_jsons.emplace(dev_type, json()); if (load_version.empty() || load_version == "0") {
copy_from_data_dir_to_local(); // STUDIO-9512
load_from_local(QUERY_HMS_INFO, dev_type_id, &m_hms_info_jsons[dev_type_id], load_version);/*copy files to local, and retry load*/
}
}
std::string load_version; if (m_hms_action_jsons.count(dev_type_id) == 0) {
load_from_local(QUERY_HMS_INFO, dev_type, &m_hms_info_jsons[dev_type], load_version); std::string load_version;
load_from_local(QUERY_HMS_ACTION, dev_type, &m_hms_action_jsons[dev_type], load_version); load_from_local(QUERY_HMS_ACTION, dev_type_id, &m_hms_action_jsons[dev_type_id], load_version);/*load from local first*/
if (load_version.empty() || load_version == "0") {
copy_from_data_dir_to_local(); // STUDIO-9512
load_from_local(QUERY_HMS_ACTION, dev_type_id, &m_hms_action_jsons[dev_type_id], load_version);/*copy files to local, and retry load*/
}
}
} }
if (cloud_dev_id_types.count(dev_type_id) != 0) /*download from cloud*/
time_t info_last_update_time = m_cloud_hms_last_update_time[dev_type_id];
if (time(nullptr) - info_last_update_time > (60 * 60 * 24))/*do not update in one day to reduce waiting*/
{ {
if (m_hms_info_jsons.count(dev_type_id) == 0)
{
m_hms_info_jsons.emplace(dev_type_id, json());
}
if (m_hms_action_jsons.count(dev_type_id) == 0)
{
m_hms_action_jsons.emplace(dev_type_id, json());
}
download_hms_related(QUERY_HMS_INFO, dev_type_id, &m_hms_info_jsons[dev_type_id]); download_hms_related(QUERY_HMS_INFO, dev_type_id, &m_hms_info_jsons[dev_type_id]);
download_hms_related(QUERY_HMS_ACTION, dev_type_id, &m_hms_action_jsons[dev_type_id]); download_hms_related(QUERY_HMS_ACTION, dev_type_id, &m_hms_action_jsons[dev_type_id]);
m_cloud_hms_last_update_time[dev_type_id] = time(nullptr);
} }
} }

View File

@ -31,6 +31,8 @@ protected:
std::unordered_map<wxString, wxImage> m_hms_local_images; // key-> image name std::unordered_map<wxString, wxImage> m_hms_local_images; // key-> image name
mutable std::mutex m_hms_mutex; mutable std::mutex m_hms_mutex;
std::unordered_map<string, time_t> m_cloud_hms_last_update_time;
public: public:
HMSQuery() { } HMSQuery() { }
~HMSQuery() { clear_hms_info(); }; ~HMSQuery() { clear_hms_info(); };