DotNameLib
Loading...
Searching...
No Matches
CustomStringsLoader.hpp
Go to the documentation of this file.
1#pragma once
2
6#include <memory>
7#include <mutex>
8
9namespace dotnamecpp::utils {
10
11 using dotnamecpp::assets::IAssetManager;
12
14 public:
15 CustomStringsLoader(std::shared_ptr<IAssetManager> assetManager,
16 std::shared_ptr<IJsonSerializer> jsonSerializer,
17 std::string filename = "customstrings.json");
18
23 ~CustomStringsLoader() override = default;
24
25 [[nodiscard]]
27
28 [[nodiscard]]
29 std::optional<std::string> getLocalizedString(const std::string &id,
30 const std::string &locale = "en") const override;
31
32 [[nodiscard]]
33 std::optional<std::string> getEmail(const std::string &id) const override;
34
35 [[nodiscard]]
36 std::optional<std::string> getUrl(const std::string &id) const override;
37
38 [[nodiscard]]
39 std::optional<std::string> getTel(const std::string &id) const override;
40
41 [[nodiscard]]
42 std::optional<std::string> getPath(const std::string &id) const override;
43
44 [[nodiscard]]
45 std::string getCustomStringSign() const override;
46
47 private:
48 std::shared_ptr<IAssetManager> assetManager_;
49 std::shared_ptr<IJsonSerializer> jsonSerializer_;
50 std::string filename_;
51
52 // Cached data
53 mutable std::mutex cacheMutex_;
54 mutable std::optional<nlohmann::json> cachedData_;
55
56 [[nodiscard]]
57 Result<nlohmann::json, JsonError> ensureLoaded() const;
58
59 [[nodiscard]]
60 std::optional<nlohmann::json> findById(const std::string &id) const;
61 };
62
63} // namespace dotnamecpp::utils
std::optional< std::string > getUrl(const std::string &id) const override
Get the Url object.
Definition CustomStringsLoader.cpp:116
CustomStringsLoader(std::shared_ptr< IAssetManager > assetManager, std::shared_ptr< IJsonSerializer > jsonSerializer, std::string filename="customstrings.json")
Definition CustomStringsLoader.cpp:6
std::optional< std::string > getTel(const std::string &id) const override
Get the Tel object.
Definition CustomStringsLoader.cpp:133
CustomStringsLoader & operator=(CustomStringsLoader &&)=delete
std::optional< std::string > getLocalizedString(const std::string &id, const std::string &locale="en") const override
Get the Localized String object.
Definition CustomStringsLoader.cpp:71
Result< nlohmann::json, JsonError > load() const override
Load the custom strings JSON data.
Definition CustomStringsLoader.cpp:17
std::optional< std::string > getEmail(const std::string &id) const override
Get the Email object.
Definition CustomStringsLoader.cpp:99
std::string getCustomStringSign() const override
Get the Custom String Sign object.
Definition CustomStringsLoader.cpp:167
std::optional< std::string > getPath(const std::string &id) const override
Get the Path object.
Definition CustomStringsLoader.cpp:150
CustomStringsLoader(CustomStringsLoader &&)=delete
CustomStringsLoader & operator=(const CustomStringsLoader &)=delete
CustomStringsLoader(const CustomStringsLoader &)=delete
Interface for loading custom strings from JSON.
Definition ICustomStringsLoader.hpp:14
Definition UtilsError.hpp:93
Definition DirectoryManager.cpp:5