end
end
- def make_context(_, %Participation{} = participation) do
+ def make_context(%{in_reply_to_conversation: %Participation{} = participation}) do
Repo.preload(participation, :conversation).conversation.ap_id
end
- def make_context(%Activity{data: %{"context" => context}}, _), do: context
- def make_context(_, _), do: Utils.generate_context_id()
+ def make_context(%{in_reply_to: %Activity{data: %{"context" => context}}}), do: context
+ def make_context(%{quote: %Activity{data: %{"context" => context}}}), do: context
+ def make_context(_), do: Utils.generate_context_id()
def maybe_add_attachments(parsed, _attachments, false = _no_links), do: parsed
def format_input(text, "text/x.misskeymarkdown", options) do
text
- |> Formatter.markdown_to_html()
+ |> Formatter.markdown_to_html(%{breaks: true})
|> MfmParser.Parser.parse()
|> MfmParser.Encoder.to_html()
|> Formatter.linkify(options)
end
def to_masto_date(%NaiveDateTime{} = date) do
- date
- |> NaiveDateTime.to_iso8601()
- |> String.replace(~r/(\.\d+)?$/, ".000Z", global: false)
+ # NOTE: Elixir’s ISO 8601 format is a superset of the real standard
+ # It supports negative years for example.
+ # ISO8601 only supports years before 1583 with mutual agreement
+ if date.year < 1583 do
+ "1970-01-01T00:00:00Z"
+ else
+ date
+ |> NaiveDateTime.to_iso8601()
+ |> String.replace(~r/(\.\d+)?$/, ".000Z", global: false)
+ end
end
def to_masto_date(date) when is_binary(date) do
with {:ok, date} <- NaiveDateTime.from_iso8601(date) do
to_masto_date(date)
else
- _ -> ""
+ _ -> "1970-01-01T00:00:00Z"
end
end
- def to_masto_date(_), do: ""
+ def to_masto_date(_), do: "1970-01-01T00:00:00Z"
defp shortname(name) do
with max_length when max_length > 0 <-