1#ifndef YAZE_APP_PLATFORM_WASM_SETTINGS_H_
2#define YAZE_APP_PLATFORM_WASM_SETTINGS_H_
10#include "absl/status/status.h"
11#include "absl/status/statusor.h"
12#include "nlohmann/json.hpp"
34 static absl::Status SaveTheme(
const std::string& theme);
40 static std::string LoadTheme();
46 static std::string GetCurrentThemeData();
54 static absl::Status LoadUserFont(
const std::string& name,
55 const std::string& data,
float size);
65 static absl::Status AddRecentFile(
66 const std::string& filename,
67 std::chrono::system_clock::time_point timestamp =
68 std::chrono::system_clock::now());
75 static std::vector<std::string> GetRecentFiles(
size_t max_count = 10);
81 static absl::Status ClearRecentFiles();
88 static absl::Status RemoveRecentFile(
const std::string& filename);
98 static absl::Status SaveWorkspace(
const std::string& name,
99 const std::string& layout_json);
106 static absl::StatusOr<std::string> LoadWorkspace(
const std::string& name);
112 static std::vector<std::string> ListWorkspaces();
119 static absl::Status DeleteWorkspace(
const std::string& name);
126 static absl::Status SetActiveWorkspace(
const std::string& name);
132 static std::string GetActiveWorkspace();
142 static absl::Status SaveUndoHistory(
const std::string& editor_id,
143 const std::vector<uint8_t>& history);
150 static absl::StatusOr<std::vector<uint8_t>> LoadUndoHistory(
151 const std::string& editor_id);
158 static absl::Status ClearUndoHistory(
const std::string& editor_id);
164 static absl::Status ClearAllUndoHistory();
174 static absl::Status SaveSetting(
const std::string& key,
175 const nlohmann::json& value);
182 static absl::StatusOr<nlohmann::json> LoadSetting(
const std::string& key);
189 static bool HasSetting(
const std::string& key);
196 static absl::Status SaveAllSettings(
const nlohmann::json& settings);
202 static absl::StatusOr<nlohmann::json> LoadAllSettings();
208 static absl::Status ClearAllSettings();
216 static absl::StatusOr<std::string> ExportSettings();
223 static absl::Status ImportSettings(
const std::string& json_str);
229 static absl::StatusOr<std::chrono::system_clock::time_point> GetLastSaveTime();
233 static constexpr const char* kThemeKey =
"yaze_theme";
234 static constexpr const char* kRecentFilesKey =
"yaze_recent_files";
235 static constexpr const char* kActiveWorkspaceKey =
"yaze_active_workspace";
236 static constexpr const char* kSettingsPrefix =
"yaze_setting_";
237 static constexpr const char* kLastSaveTimeKey =
"yaze_last_save_time";
240 static constexpr const char* kWorkspacePrefix =
"workspace_";
241 static constexpr const char* kUndoHistoryPrefix =
"undo_";
245 std::string filename;
246 std::chrono::system_clock::time_point timestamp;
250 static nlohmann::json RecentFilesToJson(
const std::vector<RecentFile>& files);
251 static std::vector<RecentFile> JsonToRecentFiles(
const nlohmann::json& json);
254 WasmSettings() =
delete;
255 ~WasmSettings() =
delete;