Route prepared file targets through platform services

This commit is contained in:
2026-06-04 16:58:05 +02:00
parent dc369c89b0
commit cabfa44729
9 changed files with 122 additions and 25 deletions

View File

@@ -152,35 +152,34 @@ void App::pick_file(std::vector<std::string> types, std::function<void (std::str
active_platform_services().pick_file(std::move(types), std::move(callback));
}
#if __IOS__
void App::pick_file_save(const std::string& type, const std::string& default_name,
std::function<void(std::string)> writer, std::function<void(const std::string& path, bool saved)> callback)
{
redraw = true;
std::string ext = "." + type;
std::string path = tmp_path + "/" + default_name + ext;
std::thread([=]{
writer(path);
save_prepared_file(path, default_name + ext, callback);
}).detach();
const auto target = active_platform_services().prepare_writable_file(type, default_name, data_path, tmp_path);
if (target.path.empty())
{
callback({}, false);
return;
}
LOG("App::pick_file_save %s", target.path.c_str());
auto write_and_save = [=] {
writer(target.path);
save_prepared_file(target.path, target.suggested_name, callback);
};
if (target.write_on_background_thread)
std::thread(write_and_save).detach();
else
write_and_save();
}
#elif __WEB__
void App::pick_file_save(const std::string& type, const std::string& default_name,
std::function<void(std::string)> writer, std::function<void(const std::string& path, bool saved)> callback)
{
redraw = true;
auto path = data_path + "/" + default_name + "." + type;
LOG("App::pick_file_save %s", path.c_str());
writer(path);
save_prepared_file(path, default_name + "." + type, std::move(callback));
}
#else
void App::pick_file_save(std::vector<std::string> types, std::function<void(std::string)> callback)
{
redraw = true;
active_platform_services().pick_save_file(std::move(types), std::move(callback));
}
#endif
void App::pick_dir(std::function<void(std::string path)> callback)
{