commit: ccc3ac241f5b7c88b36efe60a4f9e5d791d2d49a
parent 01a5f839c58d89be802e162280bd02c577bdec89
Author: marcin mikołajczak <git@mkljczk.pl>
Date: Sat, 6 Apr 2024 10:54:59 +0200
Add hint to rules
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
Diffstat:
9 files changed, 50 insertions(+), 15 deletions(-)
diff --git a/docs/development/API/admin_api.md b/docs/development/API/admin_api.md
@@ -1764,7 +1764,8 @@ Note that this differs from the Mastodon API variant: Mastodon API only returns
{
"id": "1",
"priority": 1,
- "text": "There are no rules"
+ "text": "There are no rules",
+ "hint": null
}
]
```
@@ -1775,6 +1776,7 @@ Note that this differs from the Mastodon API variant: Mastodon API only returns
- Params:
- `text`: string, required, rule content
+ - `hint`: string, optional, rule description
- `priority`: integer, optional, rule ordering priority
- Response: JSON, a single rule
@@ -1785,6 +1787,7 @@ Note that this differs from the Mastodon API variant: Mastodon API only returns
- Params:
- `text`: string, optional, rule content
+ - `hint`: string, optional, rule description
- `priority`: integer, optional, rule ordering priority
- Response: JSON, a single rule
diff --git a/lib/pleroma/rule.ex b/lib/pleroma/rule.ex
@@ -14,13 +14,14 @@ defmodule Pleroma.Rule do
schema "rules" do
field(:priority, :integer, default: 0)
field(:text, :string)
+ field(:hint, :string)
timestamps()
end
def changeset(%Rule{} = rule, params \\ %{}) do
rule
- |> cast(params, [:priority, :text])
+ |> cast(params, [:priority, :text, :hint])
|> validate_required([:text])
end
diff --git a/lib/pleroma/web/admin_api/views/rule_view.ex b/lib/pleroma/web/admin_api/views/rule_view.ex
@@ -15,7 +15,8 @@ defmodule Pleroma.Web.AdminAPI.RuleView do
%{
id: to_string(rule.id),
priority: rule.priority,
- text: rule.text
+ text: rule.text,
+ hint: rule.hint
}
end
end
diff --git a/lib/pleroma/web/api_spec/operations/admin/report_operation.ex b/lib/pleroma/web/api_spec/operations/admin/report_operation.ex
@@ -182,7 +182,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do
type: :object,
properties: %{
id: %Schema{type: :string},
- text: %Schema{type: :string}
+ text: %Schema{type: :string},
+ hint: %Schema{type: :string, nullable: true}
}
}
}
diff --git a/lib/pleroma/web/api_spec/operations/admin/rule_operation.ex b/lib/pleroma/web/api_spec/operations/admin/rule_operation.ex
@@ -84,7 +84,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do
required: [:text],
properties: %{
priority: %Schema{type: :integer},
- text: %Schema{type: :string}
+ text: %Schema{type: :string},
+ hint: %Schema{type: :string}
}
}
end
@@ -94,7 +95,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do
type: :object,
properties: %{
priority: %Schema{type: :integer},
- text: %Schema{type: :string}
+ text: %Schema{type: :string},
+ hint: %Schema{type: :string}
}
}
end
@@ -105,7 +107,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do
properties: %{
id: %Schema{type: :string},
priority: %Schema{type: :integer},
- text: %Schema{type: :string}
+ text: %Schema{type: :string},
+ hint: %Schema{type: :string, nullable: true}
}
}
end
diff --git a/lib/pleroma/web/api_spec/operations/instance_operation.ex b/lib/pleroma/web/api_spec/operations/instance_operation.ex
@@ -364,7 +364,8 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do
type: :object,
properties: %{
id: %Schema{type: :string},
- text: %Schema{type: :string}
+ text: %Schema{type: :string},
+ hint: %Schema{type: :string}
}
}
}
diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex
@@ -85,7 +85,8 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
def render("rule.json", %{rule: rule}) do
%{
id: to_string(rule.id),
- text: rule.text
+ text: rule.text,
+ hint: rule.hint || ""
}
end
diff --git a/priv/repo/migrations/20240406000000_add_hint_to_rules.exs b/priv/repo/migrations/20240406000000_add_hint_to_rules.exs
@@ -0,0 +1,13 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Repo.Migrations.AddHintToRules do
+ use Ecto.Migration
+
+ def change do
+ alter table(:rules) do
+ add_if_not_exists(:hint, :text)
+ end
+ end
+end
diff --git a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs
@@ -129,16 +129,27 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do
end
test "get instance rules", %{conn: conn} do
- Rule.create(%{text: "Example rule"})
- Rule.create(%{text: "Second rule"})
- Rule.create(%{text: "Third rule"})
+ Rule.create(%{text: "Example rule", hint: "Rule description", priority: 1})
+ Rule.create(%{text: "Third rule", priority: 2})
+ Rule.create(%{text: "Second rule", priority: 1})
conn = get(conn, "/api/v1/instance")
assert result = json_response_and_validate_schema(conn, 200)
- rules = result["rules"]
-
- assert length(rules) == 3
+ assert [
+ %{
+ "text" => "Example rule",
+ "hint" => "Rule description"
+ },
+ %{
+ "text" => "Second rule",
+ "hint" => ""
+ },
+ %{
+ "text" => "Third rule",
+ "hint" => ""
+ }
+ ] = result["rules"]
end
end