* Resolve escaped characters in a status
Escaped characters are now returned to their original form for
HTMLString.asRawText.
* Unescape the markdown version too
The HTMLString.asMarkdown string is now also unescaped, & and
similar are resolved.
* Fix a internal fallback
If one of the unescape(...) commands fails, the original, unescaped
text is used instead of an empty string.
* Resolve#359 Optional Missing Alt-Text warning
Add toggle in settings to require alt text (default off)
If setting is enabled, posting show an error if any attached media is missing alt text
* Re-localized strings
While SwiftUI's `Text` view won't display these in an `AttributedString` even if they get parsed from Markdown (which would also require the use of the `.full` option instead of the `.inlineOnlyPresrevingWhitespace` option), we can improve the appearance somewhat.
Currently, list elements are clumped together with no spaces between them, and there's no indication whatsoever that the author indicated these to be a list.
Change to insert Markdown list syntax with linebreaks and dashes, so users can at least understand there's a list there.
Similar change for ordered lists.
This will still be broken for nested lists, but it didn't seem worth it to put a lot of effort into this (or other revamps, like making bold/italics/code work properly) because it seems like the current text handling in Ice Cubes is suboptimal and eventually slated for improvement (according to https://github.com/Dimillian/IceCubesApp/issues/1459#issuecomment-1638562657).
So this is more designed to make lists "less broken" in some cases, rather than be a comprehensive fix for all lists in all cases.
* improve the sensitive content overlay animation and refactor subviews
* fix alt text button and refactor views
* refactor `StatusRowMediaPreviewView.onTapGesture`
* simplify `MediaPreview` and `FeaturedImagePreView`
* make alt text button adaptable
* Automatically remove spaces in server names
If a server name includes a space (which can happen if the string is pasted /
autocompleted), this space is removed, which results in the app not crashing.
Fixes#1599
Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
* Format
---------
Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
* Add simple test for escaping markdown content in statuses
* Add ~ as markdown character to be escaped in statuses
The ~ isn't documented in the original markdown syntax docs but is
commonly used (including by AttributedString) to surround text
formatted with a strikethrough.
* Allow creation of URL objects from strings containing non-ASCII characters
Adds a new initializer for creating URL objects with a flag to specify that
non-ASCII characters found in the path or query string should first be
URL encoded.
* Add basic test for creating HTMLString objects
* Encode link paths and queries when parsing statuses
It's common to use non-ASCII characters in URLs even though they're technically
invalid characters. Every modern browser handles this by silently encoding
the invalid characters on the user's behalf. However, trying to create a URL
object with un-encoded characters will result in nil so we need to encode the
invalid characters before creating the URL object. The unencoded version
should still be shown in the displayed status.
The parsing of the URL string is a little messy because we can't use the URL
class for this scenario and need to duplicate some of its work.
* Only encode link URLs as a backup
If a URL can be created from a status href, don't try URL encoding
it as this could result in double encoding. Only encode the string
if the creation of a URL fails. This is also more efficient.