fix: issue #2 auto-translate only on manual save now
This commit is contained in:
@@ -503,7 +503,9 @@ defmodule BDS.Desktop.ShellLive.PostEditor do
|
||||
active_language = socket.assigns.active_language
|
||||
draft = component_current_draft(socket, post, metadata, active_language)
|
||||
|
||||
case persist(post, draft, active_language, metadata, :save) do
|
||||
action = if keep_draft?, do: :auto_save, else: :save
|
||||
|
||||
case persist(post, draft, active_language, metadata, action) do
|
||||
{:ok, record} ->
|
||||
refreshed_post = Posts.get_post!(post.id)
|
||||
_refreshed_form = persisted_form(refreshed_post, metadata, active_language)
|
||||
|
||||
@@ -17,7 +17,7 @@ defmodule BDS.Desktop.ShellLive.PostEditor.Persistence do
|
||||
canonical_language
|
||||
) do
|
||||
post
|
||||
|> save_canonical_draft(draft)
|
||||
|> save_canonical_draft(draft, action)
|
||||
|> maybe_publish_post(post.id, action)
|
||||
else
|
||||
post.id
|
||||
@@ -65,18 +65,22 @@ defmodule BDS.Desktop.ShellLive.PostEditor.Persistence do
|
||||
else: dgettext("ui", "Delete this unpublished draft")
|
||||
end
|
||||
|
||||
defp save_canonical_draft(%Post{id: post_id}, draft) do
|
||||
Posts.update_post(post_id, %{
|
||||
title: blank_to_nil(Map.get(draft, "title")),
|
||||
excerpt: blank_to_nil(Map.get(draft, "excerpt")),
|
||||
content: blank_to_nil(Map.get(draft, "content")),
|
||||
tags: csv_to_list(Map.get(draft, "tags")),
|
||||
categories: csv_to_list(Map.get(draft, "categories")),
|
||||
author: blank_to_nil(Map.get(draft, "author")),
|
||||
language: blank_to_nil(Map.get(draft, "language")),
|
||||
do_not_translate: Map.get(draft, "do_not_translate", false),
|
||||
template_slug: blank_to_nil(Map.get(draft, "template_slug"))
|
||||
})
|
||||
defp save_canonical_draft(%Post{id: post_id}, draft, action) do
|
||||
Posts.update_post(
|
||||
post_id,
|
||||
%{
|
||||
title: blank_to_nil(Map.get(draft, "title")),
|
||||
excerpt: blank_to_nil(Map.get(draft, "excerpt")),
|
||||
content: blank_to_nil(Map.get(draft, "content")),
|
||||
tags: csv_to_list(Map.get(draft, "tags")),
|
||||
categories: csv_to_list(Map.get(draft, "categories")),
|
||||
author: blank_to_nil(Map.get(draft, "author")),
|
||||
language: blank_to_nil(Map.get(draft, "language")),
|
||||
do_not_translate: Map.get(draft, "do_not_translate", false),
|
||||
template_slug: blank_to_nil(Map.get(draft, "template_slug"))
|
||||
},
|
||||
auto_translate: action != :auto_save
|
||||
)
|
||||
end
|
||||
|
||||
defp save_translation_draft(post_id, language, draft) do
|
||||
|
||||
@@ -106,7 +106,6 @@ defmodule BDS.Posts do
|
||||
{:ok, post} ->
|
||||
:ok = Embeddings.sync_post(post)
|
||||
:ok = Search.sync_post(post)
|
||||
:ok = AutoTranslation.maybe_schedule(post)
|
||||
{:ok, post}
|
||||
|
||||
error ->
|
||||
@@ -114,9 +113,9 @@ defmodule BDS.Posts do
|
||||
end
|
||||
end
|
||||
|
||||
@spec update_post(String.t(), attrs()) ::
|
||||
@spec update_post(String.t(), attrs(), keyword()) ::
|
||||
{:ok, Post.t()} | {:error, :not_found | Ecto.Changeset.t()}
|
||||
def update_post(post_id, attrs) do
|
||||
def update_post(post_id, attrs, opts \\ []) do
|
||||
case Repo.get(Post, post_id) do
|
||||
nil ->
|
||||
{:error, :not_found}
|
||||
@@ -145,7 +144,13 @@ defmodule BDS.Posts do
|
||||
:ok = Embeddings.sync_post(updated_post)
|
||||
:ok = PostLinks.sync_post_links(updated_post)
|
||||
:ok = Search.sync_post(updated_post)
|
||||
:ok = AutoTranslation.maybe_schedule(updated_post)
|
||||
|
||||
# Auto-translation only runs on an explicit manual save from the
|
||||
# editor, never on post creation or autosave.
|
||||
if Keyword.get(opts, :auto_translate, false) do
|
||||
:ok = AutoTranslation.maybe_schedule(updated_post)
|
||||
end
|
||||
|
||||
{:ok, updated_post}
|
||||
|
||||
error ->
|
||||
|
||||
Reference in New Issue
Block a user