Browse Source

Add proper error handling for when the post exceeds character limits

tags/v1.1.4
rinpatch 5 years ago
parent
commit
c4e4f7d0e4
2 changed files with 16 additions and 1 deletions
  1. +2
    -1
      lib/pleroma/web/common_api/common_api.ex
  2. +14
    -0
      lib/pleroma/web/common_api/utils.ex

+ 2
- 1
lib/pleroma/web/common_api/common_api.ex View File

@@ -212,7 +212,7 @@ defmodule Pleroma.Web.CommonAPI do
cw <- data["spoiler_text"] || "",
sensitive <- data["sensitive"] || Enum.member?(tags, {"#nsfw", "nsfw"}),
full_payload <- String.trim(status <> cw),
length when length in 1..limit <- String.length(full_payload),
:ok <- validate_character_limit(full_payload, attachments, limit),
object <-
make_note_data(
user.ap_id,
@@ -247,6 +247,7 @@ defmodule Pleroma.Web.CommonAPI do

res
else
{:error, _} = e -> e
e -> {:error, e}
end
end


+ 14
- 0
lib/pleroma/web/common_api/utils.ex View File

@@ -504,4 +504,18 @@ defmodule Pleroma.Web.CommonAPI.Utils do
"inReplyTo" => object.data["id"]
}
end

def validate_character_limit(full_payload, attachments, limit) do
length = String.length(full_payload)

if length < limit do
if length > 0 or Enum.count(attachments) > 0 do
:ok
else
{:error, "Cannot post an empty status without attachments"}
end
else
{:error, "The status is over the character limit"}
end
end
end

Loading…
Cancel
Save