Commit Graph

352 Commits

Author SHA1 Message Date
Thomas Ricouard 717ef16628 Correctly save / restore any previously selected timeline on home tab 2023-09-25 14:43:29 +02:00
Thomas Ricouard e0663bf177 Fix #1590 2023-09-25 14:12:35 +02:00
Thomas Ricouard 7efd8ed7cb Fix #1585 2023-09-22 22:41:06 +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 60713101a7 Remove some .shared usage 2023-09-22 08:32:13 +02:00
Thomas Ricouard 7589ab75f8 Switch to iOS 17 inspector 2023-09-20 21:19:31 +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 e2f0863ff6 Fix timeline filter update 2023-09-19 18:33:13 +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 625b7f8137 Fix tab icon only on iOS 17 2023-09-18 20:14:26 +02:00
Thomas Ricouard 8bb102cd67 Fix #1466 2023-09-18 18:55:11 +02:00
Thomas Ricouard 7388cc4a86 Add two new icons 2023-09-18 09:14:51 +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
Thomas Ricouard 8a3c971402 Swiftformat 2023-09-16 14:15:03 +02:00
Thomas Ricouard 1bbb0dc82d Fix sound effects + upgrade swift concurrency settings 2023-09-14 11:04:14 +02:00
Thomas Ricouard 4280764733 Edit tag groups 2023-08-04 12:40:21 +02:00
Chanhwi Joo 559e1d0c83
Add a new 6-striped icon without white borders (#1526) 2023-08-01 09:53:10 +02:00
Simone Margio a3d497f48e
Add minimal icon app (#1525)
* Minimal icon app

Adding icons to the application on a minimal view

* Changes and add to Italian language

Insertion and modifications of some strings in the Italian language

* Revert "Changes and add to Italian language"

This reverts commit ce3c5a6a13.
2023-08-01 09:21:37 +02:00
Paul Schuetz b8af362b23
Show all symbols when adding a tag group (#1513)
* Show all symbols when adding a tag group

All the SFSymbols are shown when adding a tag group, the list is taken from
SFSafeSymbols. This includes symbols such as "swift" and "apple.logo", as seen
in https://mastodon.social/@alexito4/110742407894134083.

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

* Add credit for SFSafeSymbols

The list of used libraries is updated with SFSafeSymbols.

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

---------

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-07-20 08:01:32 +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 fbff719066 Fixes to add tag group view 2023-07-19 08:13:16 +02:00
Thomas Ricouard 8ace002e4a Add Tag Group symbol in settings 2023-07-19 07:50:19 +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 39ec8bb389 Add a new icon 2023-07-18 09:45:44 +02:00
Thomas Ricouard 4168c64d20 Add a setting to turn off auto detect language when posting close #1461 2023-07-17 20:39:53 +02:00
sebnoumea 044d3b6b84
FIXES issue#1200 (#1297) 2023-06-26 11:45:45 +02:00
Nathan Reed ffe9e7a714
Add setting to control share button default behavior (#1421)
* Add setting to control share button default behavior

This adds a setting to control the behavior of the share button on the status row actions view.
Currently, it always shares the link to the post as well as the post text.
In iOS 16.4, Apple added iMessage unfurling for Mastodon URLs.
When sharing posts from Ice Cubes via iMessage, this leads to the recipient seeing two copies of the post: one from the unfurled link and one from Ice Cubes including the post text.
Users will now have the option to exclude the post text from their sharing.
This is easier than tapping the 3-dots button on the post (which is kind of small) and then expanding the Share menu in the context menu, which is the other way to access this functionality at the
moment.

The default value for the new option will be "Link and Text", which is the current behavior - so we won't change the behavior on existing users.

* Add new strings to other language localizations
2023-06-26 11:45:14 +02:00
Thomas Ricouard ab51d57648 Cleanup debounce 2023-04-03 13:53:41 +02:00
Paul Schuetz 59b16d86a7
Fix the lag of the display setting sliders (#1342) close #1341
* Fix the lag of the display setting sliders

The sliders in the display settings were laggy because changing the value in the
theme class needs comparatively much time. This writing to the class is now
only done when the user lets go of the slider, so sliding it is responsive. I
was unable to make writing to the class more responsive, the example post needs
therefore a short time before it accepts the new values. Furthermore, all
AppStorage keys are now realized with a ThemeKey to clean the class up.
Fixes #1341

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

* Remove unnecessary changes to theme

The changing of theme keys is unnecessary for the fix oft the lag, so it's
removed.

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

* Rework fix to be more similar to other lag fixes

The fix now uses the ...LocalValues class, which published updates only every
half a second.

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

---------

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-03-31 15:34:24 +02:00
Thomas Ricouard efb255eb62 Display settings: keep example post on the top 2023-03-26 19:19:59 +02:00
Thomas Ricouard 92e15fdcc9 Settings: Add line spacing option which apply to only posts content for now 2023-03-26 18:51:15 +02:00
Paul Schuetz 731ee4c3ac
Fix icon switching on iPad (#1310)
The switching of icons didn't work on the iPad anymore (See
https://norden.social/@betamax65/110088664994961476). This might be a temporary
fix, depending on what caused the bug (which I couldn't determine). For now,
one icon in the set seemingly must have a complete iPad icon set, which is
achieved with the standard icon. Furthermore, an assert statement helps to
determine the problem with the icons. This statement won't be compiled into
release builds.

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-03-26 14:19:34 +02:00
Paul Schuetz 0874be89f8
Add an edit button to the remote timeline settings (#1304) 2023-03-25 17:16:07 +01:00
Chris Kolbu b2f594f174
Accessibility tweaks + Notifications and Messages tab uplift (#1292)
* Improve StatusRowView accessibility actions

Previously, there was no way to interact with links and hashtags.

Now, these are added to the Actions rotor

* Hide `topPaddingView`s from accessibility

* Fix accessible header rendering in non-filterable TimelineViews

Previously, all navigation title views were assumed to be popup buttons.

Now, we only change the representation for timelines that are filterable.

* Combine tagHeaderView text elements

Previously, these were two separate items

* Prefer shorter Quote action label

* Improve accessibility of StatusEmbeddedView

Previously, this element would be three different ones, and include all the actions on the `StatusRowView` proper. Now, it presents as one element with no actions.

* Add haptics to StatusRowView accessibility actions

* Improve accessibility of ConversationsListRow

This commit adds:
- A combined representation of the component views
- “Unread” as the first part of the label (if this is the case)
- All relevant actions as custom actions
- Reply as magic tap

* Remove StatusRowView accessibilityActions if viewModel.showActions is false

* Hide media attachments from accessibility if the view is not focused

* Combine NotificationRowView accessibility elements; add user actions

Previously, there was no real way to interact with these notifications.

Now, the notifications that show the actions row have the appropriate StatusRowView-derived actions, and new followers notifications have more actions that let you see each user’s profile.

* Prefer @Environment’s `accessibilityEnabled` over `isVoiceOverRunning`

This way we can cater for Voice Control, Full Keyboard Access and Switch Control as well.

---------

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-03-24 07:52:29 +01:00
Chris Kolbu c5b4a0dd07
Settings screen Accessibility tweaks (#1258)
* Remove `.button` trait from `Link`s on Account Settings screen

SwiftUI currently sets both the `.button` and `.link` traits on these elements, which is a failure for WCAG 2.1 4.12: Name, Role, Value: https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html

There is a radar for this issue: FB11507660

* Improve accessibility by making `AppAccountView`s a Button

Previously, the component elements of the `fullView` would be rendered as 3-4 individual views that would _all_ be interactive and perform the same action.

Now, as a Button, only one accessibility element is vended.

* Fix account label color

---------

Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-03-17 06:38:50 +01:00
Paul Schuetz fa090f5663
Remove an unnecessary icon. (#1256) 2023-03-17 06:06:56 +01:00
Ico Davids 5ef39e7a09
Add navigation title to the Translation Settings view (#1257) 2023-03-17 06:06:09 +01:00
Paul Schuetz baf853f46e
Add the ability to translate using deepl even if the instance offers its own service (#1237)
* Allow forced translation with DeepL

Translation with DeepL can now be forced either per post or on the system level.

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

* Require the use of a private API key

A private API key of the user is now required to allow "always translate via
DeepL".

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

* Persist a stored API key

An API key is stored even if useOnlyDeepL is disabled. If the API key is empty,
the setting is still disabled.

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

* Localize the texts

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

* Save API key while writing

The API key is now saved, even if the app is closed before leaving the
translation settings view.

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

* Fix build

* Fix theme

* Transition to KeychainSwift, clean up

KeychainHelper is replaced with the already-used KeychainSwift package, the
functions are cleaned up so that the process is easier to understand. The
deactivateToggleIfNoKey function doesn't change the behavior of the buttons or
context menus in the timeline, only demonstrates the necessity of an API key to
the user. Consequently, it's only called when the settings view is shown.

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

* Swiftformat + fixes

---------

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-03-14 18:50:19 +01:00
Paul Schuetz ff9bfe9285
Allow reordering of remote timelines (#1240)
The reordering of remote timelines is now available. See #1239

Signed-off-by: Paul Schuetz <pa.schuetz@web.de>
2023-03-14 07:22:17 +01:00
Thomas Ricouard 6c307aba63 SwiftFormat 2023-03-13 13:38:28 +01:00
Thomas Ricouard 0989f25bff Rework About Screen 2023-03-12 12:58:00 +01:00
Thomas Ricouard c36b9083ce More accurate tab selection sound / haptic 2023-03-09 08:30:13 +01:00
Thomas Ricouard f6b987a18a Display Settings: Close to live colors update, removed the "apply colors" button. 2023-03-08 19:02:00 +01:00