Plan cloud browse decisions in app core

This commit is contained in:
2026-06-02 23:39:03 +02:00
parent 3a78361aea
commit 8a7db3bca8
9 changed files with 174 additions and 4 deletions

View File

@@ -83,8 +83,14 @@ void App::cloud_upload_all()
void App::cloud_browse()
{
if (!canvas)
const auto browse_plan = pp::app::plan_cloud_browse(canvas != nullptr);
switch (browse_plan)
{
case pp::app::CloudBrowseAction::unavailable_no_canvas:
return;
case pp::app::CloudBrowseAction::show_browser:
break;
}
// load thumbnail test
auto dialog = std::make_shared<NodeDialogCloud>();
@@ -97,7 +103,8 @@ void App::cloud_browse()
dialog->btn_ok->on_click = [this, dialog](Node*)
{
if (dialog->selected_file.empty())
const auto selection_plan = pp::app::plan_cloud_download_selection(dialog->selected_file);
if (selection_plan == pp::app::CloudDownloadSelectionAction::wait_for_selection)
return;
dialog->destroy();
std::thread([this, dialog] {

View File

@@ -1,5 +1,7 @@
#pragma once
#include <string_view>
namespace pp::app {
enum class CloudUploadAction {
@@ -8,6 +10,16 @@ enum class CloudUploadAction {
prompt_publish,
};
enum class CloudBrowseAction {
unavailable_no_canvas,
show_browser,
};
enum class CloudDownloadSelectionAction {
wait_for_selection,
start_download,
};
struct CloudUploadPlan {
CloudUploadAction action = CloudUploadAction::unavailable_no_canvas;
bool save_before_upload = false;
@@ -29,4 +41,19 @@ struct CloudUploadPlan {
return { CloudUploadAction::prompt_publish, has_unsaved_changes };
}
[[nodiscard]] constexpr CloudBrowseAction plan_cloud_browse(bool has_canvas) noexcept
{
return has_canvas
? CloudBrowseAction::show_browser
: CloudBrowseAction::unavailable_no_canvas;
}
[[nodiscard]] constexpr CloudDownloadSelectionAction plan_cloud_download_selection(
std::string_view selected_file) noexcept
{
return selected_file.empty()
? CloudDownloadSelectionAction::wait_for_selection
: CloudDownloadSelectionAction::start_download;
}
}