Commit graph

992 commits

Author SHA1 Message Date
Thomas Ricouard
f2606b4614 Search users in list edit 2023-11-28 14:16:04 +01:00
Thomas Ricouard
2e2a9f5f14 Add more lists setttings 2023-11-28 09:18:52 +01:00
Thomas Ricouard
d2f7ab1464 Move AccountPopoverView 2023-11-27 09:19:43 +01:00
Nathan Reed
06a8ca67c3
Improve display of HTML ul (bullet list) and ol (numbered list) (#1690)
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.
2023-11-27 09:15:27 +01:00
Thai D. V
de83b8ec90
Fix EditTagGroupView (#1686)
* refactor data of `EditTagGroupView`

* lower case tags before saving because API is case-insensitive

* fix: "add new tag" `TextField` is not focused after adding the first tag (on both macOS and iOS)

* perf: improve symbol search performance

* improve layout and animation of symbol search

* fix: sort tags and remove duplicate tags

* fix: crash when open timeline for an empty tag group

* fix: revert concurrency code because performance issue at 1d3f271 is a false alarm

* add warning labels to help the users

* fix: state `tagGroup`

* fix: selecting symbol logic and warning labels

* refactor `EditTagGroupView.body`

* refactor warning labels

* Fix theme

* Move to its own folder

---------

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-11-27 09:13:07 +01:00
Thai D. V
ea5480ef46
add account popovers for display name and handle (#1687) 2023-11-27 09:00:52 +01:00
Thomas Ricouard
b3153289c4 Fix to account selector on iOS 2023-11-20 18:43:16 +01:00
Thomas Ricouard
47d54fd9e6 Fixes 2023-11-20 17:20:09 +01:00
Thai D. V
94172cef27
Feature: popover the account overview when hovering on the avatar (#1682)
* fix avatar scale

* refactor avatar  config data

* add `AvatarView_Previews`

* refactor shape and placeholder of avatar

* refactor `AvatarView` and add `AvatarPopup`

* add `hoverEffect` for iPad

* fix auto-dismiss bug

* fix `showPopup` bug

* disable inappropriate avatar popups
2023-11-20 10:59:49 +01:00
Thomas Ricouard
71ab8d558a Fix / simplify account content warning 2023-11-19 08:26:07 +01:00
Paul Schuetz
12d92ab1ec
Add hint if the server post options are overridden (#1679)
If the content settings specify their own post settings and override the
instance settings, a hint (and link to the content settings) is added to the
instance settings (infos) since that setting might introduce confusion (As
happened in #1677).
2023-11-19 08:10:53 +01:00
Paul Schuetz
8bf36709ea
Fix reply indentation when the post has pictures (#1678)
The size of the image is now set correctly to prevent the shifting of the
vertical bars. The handling of the compact view (regarding the indentation) is
now centrally handled in StatusDetailView.
2023-11-19 08:10:44 +01:00
Euigyom Kim
d3b52b3206
Make categorized emoji picker (#1680)
Signed-off-by: Euigyom Kim <egkim@dehol.kr>
2023-11-19 08:09:41 +01:00
Thomas Ricouard
c1c7c666cb Disable indentation in compact post 2023-11-18 10:44:27 +01:00
sh95014
11388757f3
Limit image height to screen height (#1675)
* limit image height to window height minus a hardcoded value

https://github.com/Dimillian/IceCubesApp/issues/1554

* Limit image to screen height

- limit available height to 80% of screen/window height
- if image fits in available width and height, just display it at 1x (to avoid ugly resizing artifacts)
- otherwise, shrink it proportionally to fit

https://github.com/Dimillian/IceCubesApp/issues/1554
2023-11-17 09:42:33 +01:00
Paul Schuetz
59e5eba860
Improve the display of replies (#1672)
Threads/replies are now shown more clearly. Each reply has an indentation level
(and therefore the number of vertical lines) one more than its direct parent.
This leads to siblings having the same indentation level. It makes
understanding somewhat complex thread structures way easier. Previously, a
reply was only indented if it came directly after its parent. If a toot had
more than one reply, the structure was nearly indecipherable, as it wasn't
clear which the parent post of the second (or later) toot was. An example is
"https://mastodon.social/@mhoye/110452462852364819" and all of its replies.

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-11-16 09:56:00 +01:00
Thai D. V
4b74532048
Feature: store selected notification filter (#1627) (#1663)
* store selected notification filter (#1627)

* store one filter for all accounts
2023-11-16 09:53:16 +01:00
Thomas Ricouard
f451d7cb8c Bigger media viewer window 2023-11-14 19:48:14 +01:00
Thomas Ricouard
32f96ac1ce Format 2023-11-07 11:24:03 +01:00
Théo Arrouye
4266ac4b42
Improve SoundEffectManager & HapticManager (#1662)
* Remove unnecessary vars and switches

* Improve SoundEffectManager call-site API

* Improve HapticManager call-site API
2023-11-07 11:22:36 +01:00
Thai D. V
6e1e83cace
Refactor StatusRowMediaPreviewView (#1654)
* 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
2023-11-07 11:20:35 +01:00
Thomas Ricouard
0424b62684 Fix build 2023-11-01 19:55:48 +01:00
Thomas Ricouard
3e3c69c41c format 2023-11-01 18:58:44 +01:00
Thomas Ricouard
4c7a7986c5 fix build 2023-11-01 18:58:19 +01:00
Hugo Saynac
b2933b8c75
Fix flickering issues when resizing window (#1644)
* Fix flickering issues when resizing window, or hiding notifications on macOS

* Restore processor and add debouncing to the processor updates

* Fix indentation

* Add LazyResizableImage to the Design system module
2023-11-01 18:57:13 +01:00
Paul Schuetz
f68bc3e306
Show the pending-counter in any corners (#1638)
The pending-button can now be shown in any corner the user prefers. This is
accomplished by allowing the user to move the counter left in addition to the
already present option to move it down. Fixes #1637

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-11-01 18:51:46 +01:00
Thai D. V
20ecc49e31
refactor MediaUIView state and logic (#1651) 2023-11-01 18:50:02 +01:00
Thomas Ricouard
db64dd726e Enable CloudKit sync for tag groups, local timeline and drafts 2023-10-29 08:51:20 +01:00
Thomas Ricouard
bbce55e703 MediaViewer: Add loading state for quicklook 2023-10-29 08:27:26 +01:00
Thomas Ricouard
8a49409b26 Tag group: fix first tag not being included 2023-10-27 11:39:31 +02:00
Thomas Ricouard
641853ed8d Editor: Open in window on mac catalyst 2023-10-27 11:39:11 +02:00
Thomas Ricouard
3f3ea4ff68 Editor: Properly close window on Catalyst 2023-10-27 11:39:02 +02:00
Thomas Ricouard
cf0f0fd891 Refactor + add more shortcuts on macOS 2023-10-26 06:23:00 +02:00
Thomas Ricouard
434247f3ea Fixes for macOS 2023-10-24 18:34:45 +02:00
Thomas Ricouard
07bfd8cd0e Initial macOS Catalyst support 2023-10-23 19:12:25 +02:00
Thomas Ricouard
1b228d504f Media viewer: various fixes 2023-10-18 12:19:39 +02:00
Thomas Ricouard
ccae4e0e3d Add button to save photo in the new media viewer 2023-10-17 08:52:05 +02:00
Thomas Ricouard
8ed6d548eb Always autoplay video in the new media viewer 2023-10-17 08:24:11 +02:00
Thomas Ricouard
3cee46d4ef Fix build 2023-10-16 19:40:58 +02:00
Thomas Ricouard
fd55020533 New media viewer 2023-10-16 19:08:59 +02:00
Thomas Ricouard
017275ec69 Fix status embed 2023-10-16 09:26:49 +02:00
Thomas Ricouard
f08c90f8a0 Fix #1419 2023-10-16 09:16:17 +02:00
Chanhwi Joo
1bd9d15a8f
Update Korean localization & localize the user block confirmation dialog (#1616)
* Update Korean localization

* Localize the user block confirmation dialog
2023-10-10 18:49:16 +02:00
Thomas Ricouard
1275b09f20 Add / Remove tag from tag groups from timeline view 2023-10-05 09:47:51 +02:00
Bosco Ho
1bf4d9e398
Feature: Tab bar scroll to top (#1598)
* - *WIP* Explore tab: Tap on tab to scroll to top.

* - Explore tab: Tap tab to scroll to top.

* - Explore: Tap tab again to focus on search bar.
- Explore: Set `.defaultMinListRowHeight` so scroll to view doesn't occupy more than 1pt height in grouped style list.
- Explore: Add padding to get Explore list view to look the same.

* - Explore: Minor adjust to padding.

* - Messages: Add tap tab to scroll to top.

* - Notifications: Add tap tab to scroll to top.

* - Profile: Add tap tab to scroll to top.

* Add `ScrollToView` that can be used across all views.

* Move scroll-to-top constants to ScrollToView.

* Format

---------

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-10-05 08:22:45 +02:00
Eric
4bbfdcd256
Feature request: Block user confirmation dialog (#1606)
- Using State property and Binding between ContextMenu and AccountDetailView to show a confirmation dialog when the block button is pressed.

Co-authored-by: Eric Chaing <eric@Erics-MacBook-Pro.local>
2023-10-04 09:40:54 +02:00
Yasura Dodo
e8cb090baf
Fix a crash bug at AccountsListRow (#1602)
When you long tap a `AccountsListRow`, a `contextMenu` will be called, and then the app will be crashed.
This happens because two environments are missing; `QuickLook` and `RouterPath`
2023-10-02 11:58:13 +02:00
Yasura Dodo
e3f7eb31e4
Fix a crash bug at Client.makeURL (#1601)
The crash will happen when you type something unexpected instance URL.

Example
```swift
let server = "mstdn.jp/"

var components = URLComponents()
components.scheme = "https"
components.host = server
components.path = "/api/v1/instance"
components.url! // 💥 error: Execution was interrupted, reason: EXC_BREAKPOINT (code=1, subcode=0x18c986650).
```
2023-10-02 09:31:59 +02:00
Thomas Ricouard
23a83d69cc Remove legacy migrations 2023-10-01 09:48:27 +02:00
Thomas Ricouard
d5896b95e9 format 2023-10-01 09:37:37 +02:00
Paul Schuetz
0b5e764556
Automatically remove spaces in server names (#1600)
* 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>
2023-10-01 09:37:09 +02:00
Benoît Clouet
d32c5c004c
Added the ability to display the Pending/Unread button at bottom of the screen for bigger displays or smaller hands (#1595) 2023-10-01 09:24:37 +02:00
Bosco Ho
1f44c502dd
Use NavigationLink with value to push Explore trending links" (#1594)
- Fixes trending links "see more" not getting added to navigation path.
2023-09-27 08:38:17 +02:00
Paul Schuetz
1f28595d39
Remove "Translate with DeepL"-option (#1593)
The "Translate with DeepL"-option is removed to make the app better understandable for the average user. A person who wants to use DeepL can still insert their own API key to always use DeepL.
Fixes #1583

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-09-26 14:11:00 +02:00
Thomas Ricouard
cc32845134 Revert "Switch to iOS 17 inspector"
This reverts commit 7589ab75f8.
2023-09-22 22:39:35 +02:00
Thomas Ricouard
4870b202d6 Migrate TagGroup to SwiftData 2023-09-22 19:33:53 +02:00
Thomas Ricouard
527d982dce Migrate LocalTimeline to SwiftData 2023-09-22 12:49:25 +02:00
Thomas Ricouard
0c4bde40af Migrate drafts to SwiftData 2023-09-22 09:31:35 +02:00
Thomas Ricouard
7eec1b8439 Share sheet: Fix account selector 2023-09-22 08:35:21 +02:00
Thomas Ricouard
60713101a7 Remove some .shared usage 2023-09-22 08:32:13 +02:00
Thomas Ricouard
4adbff1342 Fix avatar shape and position settings not being saved 2023-09-20 21:19:45 +02:00
Thomas Ricouard
7589ab75f8 Switch to iOS 17 inspector 2023-09-20 21:19:31 +02:00
Thomas Ricouard
15f498037d Fix thread bar in status detail 2023-09-20 21:19:02 +02:00
Thomas Ricouard
90337bd3ea Bump version to 1.8.2 2023-09-20 08:20:01 +02:00
Thomas Ricouard
46df3bb7f9 Fix #1579 2023-09-20 07:28:04 +02:00
Thomas Ricouard
3743e6d870 Fix share sheet 2023-09-19 09:25:48 +02:00
Thomas Ricouard
6c23569d15 UserPreferences -> Observable 2023-09-19 09:18:20 +02:00
Thomas Ricouard
fd09276d49 Refactor notifications count 2023-09-19 08:44:11 +02:00
Thomas Ricouard
f9c0355f1d Convert Theme to Observable 2023-09-18 21:03:52 +02:00
Thomas Ricouard
e6455304ac Fix draft label color 2023-09-18 19:07:14 +02:00
Thomas Ricouard
1b0ddf4fd9 Fix #1457 2023-09-18 19:04:54 +02:00
Thomas Ricouard
8bb102cd67 Fix #1466 2023-09-18 18:55:11 +02:00
Thomas Ricouard
27102cbae3 oops 2023-09-18 14:30:36 +02:00
Thomas Ricouard
bd3d2008c2 Fix #1483 2023-09-18 14:30:24 +02:00
Thomas Ricouard
8b445324e0 Fix #1548 2023-09-18 09:29:42 +02:00
Thomas Ricouard
379d2f36fb Fix #1545 2023-09-18 09:18:48 +02:00
Thomas Ricouard
4189a59cf6
iOS 17+ only support + migrating to Observation framework (#1571)
* Initial iOS 17 + Observable migration

* More Observation

* More observation

* Checkpoint

* Checkpoint

* Bump version to 1.8.0

* SwiftFormat

* Fix home timeline switch on login

* Fix sidebar routerPath

* Fixes on detail view

* Remove print changes

* Simply detail view

* More opt

* Migrate DisplaySettingsLocalValues

* Better post detail transition

* Status detail animation finally right

* Cleanup
2023-09-18 07:01:23 +02:00
Eslam Nahel
3853eff065
Fix text field bottom padding in EditorView (#1570) 2023-09-17 08:47:15 +02:00
Thomas Ricouard
98035e8530 Better status focused screen transition 2023-09-16 15:04:42 +02:00
Thomas Ricouard
8a3c971402 Swiftformat 2023-09-16 14:15:03 +02:00
Thomas Ricouard
584a0d0432 Composer: Fix nav bar background 2023-09-16 14:02:50 +02:00
Thomas Ricouard
8e3584ee79 Upgrade to Swift tools version 5.9 + strict Swift concurrency everywhere 2023-09-15 12:46:15 +02:00
Thomas Ricouard
1bbb0dc82d Fix sound effects + upgrade swift concurrency settings 2023-09-14 11:04:14 +02:00
Thomas Ricouard
e921f2cdd4
Fix dark secondary color (#1565) 2023-08-30 09:10:22 +02:00
Thomas Ricouard
9cffb7eda2 Add Starfield inspired themes 2023-08-30 08:02:38 +02:00
Thomas Ricouard
113b28db18 Account context menu link to web based privacy settings 2023-08-29 08:58:07 +02:00
Grant McSheffrey
077b0d269d
Bugfix 1459 - Escape ~ character as markdown (#1561)
* 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.
2023-08-24 09:58:29 +02:00
Grant McSheffrey
30f9da06c8
Support status links with non-ASCII characters (Bugfix 1546) (#1550)
* 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.
2023-08-23 07:08:12 +02:00
Thomas Durand
56b0010d6c
Poll close in … : Fixing missing space in some locales (#1536) 2023-08-10 08:59:08 +02:00
Chanhwi Joo
5fb9ab1c5e
Fix quote button not showing for unlisted posts (#1537) 2023-08-10 08:58:43 +02:00
Thomas Ricouard
04b5804c96 Video Player: Pause video when onDisappear 2023-08-09 13:53:41 +02:00
Thomas Ricouard
4280764733 Edit tag groups 2023-08-04 12:40:21 +02:00
Thomas Ricouard
0842f23d52 Keep the new keyword field focused 2023-07-22 19:21:29 +02:00
Alessio Maffeis
d7c3a54b56
Update placeholder text (#1516)
* Update placeholder text

* Add newline
2023-07-20 14:27:18 +02:00
Paul Schuetz
90b0e91c79
Allow specifying the default reply visibility (#1509)
* Allow specifying the visibility of replies

Replies can now have their own default visibility. This visibility is always at
least as restrictive as the default post visibility. When posting a reply, the
visibility is pre-populated with the more restrictive out of the default and
the visibility of the original post.

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>

* Use iOS-specific modifier

If the app is run on iOS 17, the new onChange(...)-modifier is used.

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>

* Restrict the extension of the onChange-Modifier

The extension of the view to allow the use of the version-appropriate
onChange-modifier is now only available in the relevant file.

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>

* Reset to use Xcode 14 / iOS 16

The iOS 17 specific changes are removed to allow building in the older Xcode 14.

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>

* Make the default reply visibility public

The standard default reply visibility is now public, the behavior of the app
isn't changed for a user who just updated.

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>

---------

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-07-19 11:49:06 +02:00
Thomas Ricouard
bb4453c811 Scrollable + interactive Tag Group timeline header 2023-07-19 08:30:47 +02:00
Thomas Ricouard
a2fe0511e0 Run swiftformat 2023-07-19 07:46:25 +02:00
Alejandro Martínez
5951bcec38
Tag groups (#1506)
* Implemented tag groups

* Cleanup

---------

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-07-19 07:44:35 +02:00
Thomas Ricouard
4a6f81f22e Fix Introspect warning 2023-07-18 13:58:00 +02:00
Thomas Ricouard
185f4b60e2 Update package + Switch to SwiftUIIntrospect for the Timeline 2023-07-18 09:45:39 +02:00