diff --git a/Telegram/SourceFiles/countries/countries_instance.cpp b/Telegram/SourceFiles/countries/countries_instance.cpp index 44648a26e..c0f51d5d5 100644 --- a/Telegram/SourceFiles/countries/countries_instance.cpp +++ b/Telegram/SourceFiles/countries/countries_instance.cpp @@ -248,14 +248,24 @@ const std::array FallbackList = { { } // namespace -const std::array &CountriesInstance::list() { - return FallbackList; +CountriesInstance::CountriesInstance() { +} + +const std::vector &CountriesInstance::list() { + if (_list.empty()) { + _list = (FallbackList | ranges::to_vector); + } + return _list; +} + +void CountriesInstance::setList(std::vector &&infos) { + _list = std::move(infos); } const CountriesInstance::Map &CountriesInstance::byCode() { if (_byCode.empty()) { - _byCode.reserve(FallbackList.size()); - for (const auto &entry : FallbackList) { + _byCode.reserve(list().size()); + for (const auto &entry : list()) { _byCode.insert(entry.code, &entry); } } @@ -264,8 +274,8 @@ const CountriesInstance::Map &CountriesInstance::byCode() { const CountriesInstance::Map &CountriesInstance::byISO2() { if (_byISO2.empty()) { - _byISO2.reserve(FallbackList.size()); - for (const auto &entry : FallbackList) { + _byISO2.reserve(list().size()); + for (const auto &entry : list()) { _byISO2.insert(entry.iso2, &entry); } } diff --git a/Telegram/SourceFiles/countries/countries_instance.h b/Telegram/SourceFiles/countries/countries_instance.h index 29304cd28..61b39b2e2 100644 --- a/Telegram/SourceFiles/countries/countries_instance.h +++ b/Telegram/SourceFiles/countries/countries_instance.h @@ -21,8 +21,9 @@ class CountriesInstance final { public: using Map = QHash; - CountriesInstance() = default; - [[nodiscard]] const std::array &list(); + CountriesInstance(); + [[nodiscard]] const std::vector &list(); + void setList(std::vector &&infos); [[nodiscard]] const Map &byCode(); [[nodiscard]] const Map &byISO2(); @@ -32,6 +33,8 @@ public: [[nodiscard]] QString countryISO2ByPhone(const QString &phone); private: + std::vector _list; + Map _byCode; Map _byISO2;