squash! Expose expires_at datetime in mastoAPI only for the activity actor

NOTE: rewrite the commit msg
This commit is contained in:
Mike Verdone 2019-07-24 16:51:09 +02:00
parent 91d9fdc7de
commit 2981821db8
4 changed files with 10 additions and 6 deletions

View file

@ -25,7 +25,7 @@ Has these additional fields under the `pleroma` object:
- `in_reply_to_account_acct`: the `acct` property of User entity for replied user (if any) - `in_reply_to_account_acct`: the `acct` property of User entity for replied user (if any)
- `content`: a map consisting of alternate representations of the `content` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain` - `content`: a map consisting of alternate representations of the `content` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain`
- `spoiler_text`: a map consisting of alternate representations of the `spoiler_text` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain` - `spoiler_text`: a map consisting of alternate representations of the `spoiler_text` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain`
- `expires_on`: a datetime (iso8601) that states when the post will expire (be deleted automatically), or empty if the post won't expire - `expires_in`: the number of minutes until a post will expire (be deleted automatically), or empty if the post won't expire
## Attachments ## Attachments

View file

@ -168,11 +168,15 @@ def render("status.json", %{activity: %{data: %{"object" => _object}} = activity
client_posted_this_activity = opts[:for] && user.id == opts[:for].id client_posted_this_activity = opts[:for] && user.id == opts[:for].id
expires_at = expires_in =
with true <- client_posted_this_activity, with true <- client_posted_this_activity,
expiration when not is_nil(expiration) <- expiration when not is_nil(expiration) <-
ActivityExpiration.get_by_activity_id(activity.id) do ActivityExpiration.get_by_activity_id(activity.id) do
expires_in_seconds =
expiration.scheduled_at expiration.scheduled_at
|> NaiveDateTime.diff(NaiveDateTime.utc_now(), :second)
round(expires_in_seconds / 60)
end end
thread_muted? = thread_muted? =
@ -273,7 +277,7 @@ def render("status.json", %{activity: %{data: %{"object" => _object}} = activity
in_reply_to_account_acct: reply_to_user && reply_to_user.nickname, in_reply_to_account_acct: reply_to_user && reply_to_user.nickname,
content: %{"text/plain" => content_plaintext}, content: %{"text/plain" => content_plaintext},
spoiler_text: %{"text/plain" => summary_plaintext}, spoiler_text: %{"text/plain" => summary_plaintext},
expires_at: expires_at expires_in: expires_in
} }
} }
end end

View file

@ -170,7 +170,7 @@ test "posting a status", %{conn: conn} do
assert activity = Activity.get_by_id(fourth_id) assert activity = Activity.get_by_id(fourth_id)
assert expiration = ActivityExpiration.get_by_activity_id(fourth_id) assert expiration = ActivityExpiration.get_by_activity_id(fourth_id)
assert expiration.scheduled_at == expires_at assert expiration.scheduled_at == expires_at
assert fourth_response["pleroma"]["expires_at"] == NaiveDateTime.to_iso8601(expires_at) assert fourth_response["pleroma"]["expires_in"] > 0
end end
test "replying to a status", %{conn: conn} do test "replying to a status", %{conn: conn} do

View file

@ -134,7 +134,7 @@ test "a note activity" do
in_reply_to_account_acct: nil, in_reply_to_account_acct: nil,
content: %{"text/plain" => HtmlSanitizeEx.strip_tags(object_data["content"])}, content: %{"text/plain" => HtmlSanitizeEx.strip_tags(object_data["content"])},
spoiler_text: %{"text/plain" => HtmlSanitizeEx.strip_tags(object_data["summary"])}, spoiler_text: %{"text/plain" => HtmlSanitizeEx.strip_tags(object_data["summary"])},
expires_at: nil expires_in: nil
} }
} }