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
eab69ce9fa
Timeline tab accessibility uplift ( #1277 )
...
* Refine Profile tab VoiceOver order to prioritise user information
Previously, VoiceOver user would have to traverse through header image, “follows you”, and the profile image before getting to the display name of the user.
Now, this element is the first element after the navigation bar.
* Add accessibility label to Timeline Compose post button
Previously, this button was using the SF symbol fallback label.
Now, it has a localized equivalent in addition to two other options: “New”, and “Create”
* Change accessible representation of Timeline nav bar menu
Previously, this would present as a static text.
Now, it has the header trait. In addition, by changing the representation, VoiceOver will read it out as “Home, Pop-up button, Header”, indicating that it opens a menu.
* Add accessibilityHint to Timeline tab Accounts selector
* Add accessibilityLabel and hint to PendingStatusesObserver
Previously, this button would have a label equal to the count of unread posts. Now, it states “X new posts” with the hint “Scrolls the timeline”
2023-03-20 06:33:42 +01:00
Thomas Ricouard
6c307aba63
SwiftFormat
2023-03-13 13:38:28 +01:00
Thomas Ricouard
21fd0b0541
Datasource: don't return filtered hidden statuses close #1175
2023-03-07 07:23:17 +01:00
Thomas Ricouard
d2d297f019
StatusDataController: Update on timeline fetch
2023-03-02 06:42:58 +01:00
Thomas Ricouard
a3e2d3f8b3
Add sound effects
2023-02-28 18:55:08 +01:00
Thomas Ricouard
4bc2672583
Timeline: Fix trending refreshing when navigating back
2023-02-27 18:41:51 +01:00
Jim Dovey
d1209e6704
Updated to resolve all possible Sendability warnings from Swift 6 compatibility mode. ( #1072 )
...
Co-authored-by: Jim Dovey <jimdovey@apple.com>
2023-02-27 06:39:07 +01:00
Thomas Ricouard
b75dd65ac4
Timeline only clear cache if previous value was .home
2023-02-27 06:23:03 +01:00
Thomas Ricouard
f22671cc66
Fix jump to latest not working on home
2023-02-27 06:21:49 +01:00
Thomas Ricouard
8c4b286751
Timeline: Check for task cancellation before loading next page
2023-02-26 19:09:21 +01:00
Thomas Ricouard
347335f770
Move userMentioned outside of Status
2023-02-26 09:38:26 +01:00
Thomas Ricouard
83e4e74329
Swiftformat
2023-02-26 06:45:57 +01:00
Thomas Ricouard
93ee83c65d
Timeline: Cleanup
2023-02-25 19:47:15 +01:00
Thomas Ricouard
151154b335
Timeline: Enable jump to latest + in place refresh for all other timeline types
2023-02-25 19:32:47 +01:00
Thomas Ricouard
b036e90ce4
Simplify Timeline refresh
2023-02-25 10:10:27 +01:00
Thomas Durand
482d93a68d
Removed Boutique, using Bogeda directly ( #1007 )
...
* Removed Boutique, using Bogeda directly
* Updated about screen
2023-02-22 18:56:37 +01:00
Thomas Ricouard
b259b6739e
Swiftformat
2023-02-21 07:23:42 +01:00
Thomas Ricouard
1a7ef62fd6
Fix trending refresh
2023-02-19 21:37:22 +01:00
Thomas Ricouard
65e63c4586
Remove Sendable conformance on Client as it's not needed
2023-02-19 07:51:16 +01:00
Alex Grebenyuk
a8459638e9
Add image prefetch to the timeline + resize close #931 ( #930 )
...
* Add image prefectch to the timeline
* Use preview url for post with multiple attachements
* Add image resize
* Prefetch link cards
---------
Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-02-18 18:44:43 +01:00
Thomas Ricouard
7112e6515b
Timeline: wrap datasource in an actor for safety and perforamances
2023-02-18 18:04:46 +01:00
Thomas Ricouard
9bc65d5563
Enable landscape on iOS
2023-02-18 07:42:35 +01:00
Thomas Ricouard
ca4e80101f
Swiftformat
2023-02-18 07:26:48 +01:00
Thomas Ricouard
9f894858ae
Don't load new pages if the timeline changed
2023-02-16 07:28:52 +01:00
Thomas Ricouard
3843d18f2f
Fix trending timeline resetting to first page
2023-02-16 07:22:26 +01:00
Thomas Ricouard
d958d10036
Remove Client and RouterPath from StatusRowView env object
2023-02-15 08:46:14 +01:00
Thomas Ricouard
eb6050a38f
Swiftformat
2023-02-12 16:29:41 +01:00
Yusuke Arakawa
dae7b85d3d
Timeline: restore the selected timeline at the next startup ( #694 )
...
* Timeline: restore the selected timeline at the next startup
Signed-off-by: Yusuke Arakawa <nekolaboratory@users.noreply.github.com>
* Rename: UserDefaultas label name
Signed-off-by: Yusuke Arakawa <nekolaboratory@users.noreply.github.com>
* Timeline: RawRepresentable of TimelineFilter
Signed-off-by: Yusuke Arakawa <nekolaboratory@users.noreply.github.com>
* Cleanup code
* Supports RemoteTimelineFilter
* Cleanup code
* Safe saves last viewed status
---------
Signed-off-by: Yusuke Arakawa <nekolaboratory@users.noreply.github.com>
Co-authored-by: Yusuke Arakawa <nekolaboratory@users.noreply.github.com>
2023-02-09 12:27:59 +01:00
Thomas Ricouard
013410a80e
Faster / Cached ServerDate decoding
2023-02-09 09:12:44 +01:00
Sean Goldin
0c359f2b79
Add direct status highlighting ( #720 )
2023-02-08 18:47:09 +01:00
Thomas Ricouard
eb5733a90b
Handle Task Cancelling in the timeline
2023-02-08 18:46:09 +01:00
Thomas Ricouard
970305210b
Bump cache to 600 posts
2023-02-08 08:48:18 +01:00
Thomas Ricouard
49791d2c86
Fix timeline cache caching something else than home Fix #710
2023-02-08 06:52:15 +01:00
Sean Goldin
90ec3d419c
Clean up HapticManager ( #678 )
...
* Check for haptic capabilities
* Make manager do most of work
* ABC enum
* Fix spelling 😊
* Small tweak
2023-02-06 17:53:27 +01:00
Thomas Ricouard
5f76a8057c
Filter remote local timeline
2023-02-06 12:24:48 +01:00
Thomas Ricouard
b0630ae9c3
Add more safety to scroll to
2023-02-05 08:13:38 +01:00
Thomas Ricouard
f53cfd89fe
Ensure all pages are loaded when resuming session
2023-02-05 07:44:05 +01:00
Thomas Ricouard
5afd2dc73c
Add Jump to Latest to clear out cache and reload home timeline
2023-02-04 21:21:36 +01:00
Thomas Ricouard
e96c1c5da7
Fix next page state
2023-02-04 20:37:22 +01:00
Thomas Ricouard
65ed2d871c
Add settings for haptic feedbacks
2023-02-04 17:38:48 +01:00
Thomas Ricouard
6b285cdbcf
Cleanup
2023-02-04 17:17:38 +01:00
Thomas Ricouard
427452db30
Don't update the timeline is the tab is not visible
2023-02-04 16:54:03 +01:00
Thomas Ricouard
8c7efb7df5
Add settings to clear the cache
2023-02-04 15:08:54 +01:00
Thomas Ricouard
288a0eac9f
Save / Restore latest seen statuses
2023-02-04 14:42:10 +01:00
Thomas Ricouard
b57df4a9d7
Scroll to latest pending post on button tap
2023-02-04 14:05:30 +01:00
Thomas Ricouard
aae6b12666
Replace memory cache with Boutique SQLite cache
2023-02-04 12:33:28 +01:00
Thomas Ricouard
3c0ffdb1ae
Prepare disk cache for Timeline
2023-02-04 12:17:16 +01:00
Thomas Ricouard
4104fdf4f5
Fix the crash once and for all by using Introspect
2023-02-03 16:24:09 +01:00
Thomas Ricouard
eb80225bb0
Mitigate #623
2023-02-03 08:06:16 +01:00
Thomas Ricouard
fcb7ddcbdb
Fix crash when trying to cache an empty timeline
2023-02-02 21:21:07 +01:00
Thomas Ricouard
e278eae144
Reset pending statuses when reaching top
2023-02-02 17:47:35 +01:00
Thomas Ricouard
bb6910cd83
Centralize haptic feedbacks
2023-02-02 16:56:42 +01:00
Thomas Ricouard
262f7288ad
Fix the crash while restoring position?
2023-02-02 16:38:19 +01:00
Sean Goldin
10946fef10
Timeline highlight mentions ( #595 )
...
* Introduce fetchPages
* Set up highlighting
* Implement highlighting stage 1
* Implement highlighting stage 2
* Implement highlighting.
* Fix merge
* Add protocol
* Remove debug prints
2023-02-02 06:39:03 +01:00
Gareth Simpson
fdb402a065
Boost deduplicating ( #524 )
...
* Trying something with caching boosts
* Use an actual cache for caching
* Persist cache to documents folder
* Stray debugging variable
* Unpublish seen variable in the ViewModel
* Settings for deduplicating boosts.
* Changes from review / merge conflicts
2023-02-01 18:56:06 +01:00
Thomas Ricouard
43d975a27b
Better caching
2023-02-01 13:41:28 +01:00
Thomas Ricouard
ed80895fcd
Cache streamed status
2023-02-01 13:28:04 +01:00
Thomas Ricouard
4e77669181
Swiftformat
2023-02-01 12:49:59 +01:00
Thomas Ricouard
383eb84e98
Fix import
2023-02-01 12:49:47 +01:00
Thomas Ricouard
cdf45fa58c
Refactor Timeline position management + add thin cache layer + fix crashes
2023-02-01 12:43:11 +01:00
Thomas Ricouard
9bf40b262f
Various optimizations for the new timeline
2023-02-01 09:22:08 +01:00
Thomas Ricouard
2e850e9643
Bump to 1.3.2 + workaround List crash?
2023-01-31 19:43:07 +01:00
Thomas Ricouard
ed0bfb7d94
Even better refresh / timeline position management
2023-01-31 17:43:06 +01:00
Thomas Ricouard
dd4ca27a5b
Remove bogus flag
2023-01-31 13:43:27 +01:00
Thomas Ricouard
62b26fdbb7
Timeline: Do nothing if no new statuses
2023-01-31 13:19:32 +01:00
Thomas Ricouard
52eff96ab4
Iron out timeline issues with the new behaviour
2023-01-31 12:17:35 +01:00
Thomas Ricouard
c88ef750f0
Fix multiple timeline refresh on launch close #555
2023-01-31 12:17:03 +01:00
Thomas Ricouard
0695fd5733
Isolate pending statuses observer for smoother scrolling
2023-01-31 09:01:26 +01:00
Thomas Ricouard
0f98337a13
Remove test value
2023-01-31 08:20:20 +01:00
Thomas Ricouard
d9b166339d
Fixes for iPad layout
2023-01-31 08:16:36 +01:00
Thomas Ricouard
1a351eaa7c
Smoother scrolling up in the Timeline
2023-01-31 08:04:35 +01:00
Thomas Ricouard
d64d674389
Make appending new statuses safer
2023-01-30 22:11:55 +01:00
Thomas Ricouard
d88d9db1dc
Transition Timeline to List + stream post automatically + keep position + new counter UI
2023-01-30 21:41:42 +01:00
Thomas Ricouard
fbf1c30b7c
Add haptic feedback on more buttons fix #315
2023-01-24 09:19:53 +01:00
Sean Goldin
97f8dfd74d
Add localisation plurals ( #239 )
...
* Add localisation plurals
* Add more languages to plurals
* Remove unused localised keys
* Update per #225
2023-01-22 15:47:44 +01:00
Thomas Ricouard
a79c5691e0
Run SwiftFormat
2023-01-22 06:38:30 +01:00
Thomas
980b9a5dd6
Implement Localization ( #80 )
...
* Implement localization
* Fix some localization keys
* Adapt to recent changes
2023-01-19 18:14:08 +01:00
Thomas Ricouard
1b9d4e0247
Add some macOS menu & shortcuts
2023-01-18 08:27:42 +01:00
Thomas Ricouard
4143e82fbc
Multi account sidebar + scaled font size on macOS + better iPad / macOS app UX
2023-01-17 19:41:46 +01:00
Thomas Ricouard
7f6419ebae
Swiftformat
2023-01-17 11:36:01 +01:00
Thomas Ricouard
c05768c793
The Mac App
2023-01-16 14:40:23 +01:00
Thomas Ricouard
e69fcee9fb
Various small UI fixes
2023-01-12 19:12:23 +01:00
Jérôme Danthinne
d447a8fdd2
add some top padding when new posts button is shown ( #55 )
...
Co-authored-by: Jérôme Danthinne <jerome.danthinne@smile.eu>
2023-01-10 14:44:34 +01:00
Thomas Ricouard
75fda4b709
Tip jar + New display name
2023-01-07 13:44:13 +01:00
Thomas Ricouard
7f5330f284
Redesigned settings tab
2023-01-06 17:14:34 +01:00
Thomas Ricouard
f922ba344d
Search & Pin remote local timeline + general polish
2023-01-06 12:14:05 +01:00
Thomas Ricouard
88b56fe016
Timeline: Dequeue one
2023-01-05 07:07:28 +01:00
Thomas Ricouard
511717e492
Smarter timeline
2023-01-05 06:39:23 +01:00
Thomas Ricouard
dcdd8402e9
Timeline: Add filter for followed tags
2023-01-04 18:37:58 +01:00
Thomas Ricouard
a1681c3f1b
Display pinned statuses on profile
2023-01-03 18:22:08 +01:00
Sean Goldin
41d7f4ca62
Less typing padding constants ( #23 )
...
* Change enum of constants to CGFloat extension
* Use CGFloat padding extension
2023-01-03 07:41:29 +01:00
Thomas Ricouard
e0253fb439
Added lists support + bunch of bug fixes
2023-01-02 19:23:44 +01:00
Thomas Ricouard
9f009376f5
Add trending as a timeline
2023-01-01 14:28:15 +01:00
Thomas Ricouard
b324c87ae1
Timeline tab: Quick accounts switcher + new filter menu
2023-01-01 14:02:11 +01:00
Thomas Ricouard
a592341768
Account: Added filter for accounts status
2023-01-01 08:22:39 +01:00
Thomas Ricouard
a06386c1da
Fixed scroll to top
2022-12-31 15:41:44 +01:00
Thomas Ricouard
315a57b447
Tab timeline tab top scroll to top
2022-12-31 12:28:27 +01:00
Thomas Ricouard
3a076492a1
Multi accounts
2022-12-30 08:36:22 +01:00
Thomas Ricouard
d00c3e533e
Theme support + default theme
2022-12-29 10:39:34 +01:00
Thomas Ricouard
789adc8b22
Haptic feedback when refreshing timeline
2022-12-29 09:10:59 +01:00
Thomas Ricouard
d393c4b90f
Fix notifications tab + prepare multi account
2022-12-29 06:55:53 +01:00
Thomas Ricouard
2b733e6b10
Timeline: Fetch up to 10 new pages on pull to refresh
2022-12-28 19:10:13 +01:00
Thomas Ricouard
ee39840713
Account: Internal isCurrentUser
2022-12-27 13:49:54 +01:00
Thomas Ricouard
94d4db6214
Various fixes
2022-12-27 09:11:12 +01:00
Thomas Ricouard
e5fb3acd07
Quote status + embed status
2022-12-27 07:51:44 +01:00
Thomas Ricouard
bda77571b6
Editor: Simple edit
2022-12-26 08:24:55 +01:00
Thomas Ricouard
fded30bb76
Refactor live timeline + handle more events
2022-12-26 07:36:54 +01:00
Thomas Ricouard
b04ccc18fa
Ensure own status is added on top
2022-12-25 19:18:19 +01:00
Thomas Ricouard
827e06b26c
More safeguard
2022-12-25 18:48:50 +01:00
Thomas Ricouard
758fa8a6f9
Fix button
2022-12-25 18:46:54 +01:00
Thomas Ricouard
11d4d20873
Timeline scroll to top UX / Flow
2022-12-25 18:43:15 +01:00
Thomas Ricouard
93543cad6b
Post / Delete a status and watch main timeline
2022-12-25 12:46:42 +01:00
Thomas Ricouard
8df70043cb
Very basic status post
2022-12-25 08:17:16 +01:00
Thomas Ricouard
e569bb1d74
Use Nuke where relevant
2022-12-25 07:43:02 +01:00
Thomas Ricouard
70ee6e0d27
Post boosted by / favourited by
2022-12-24 13:41:25 +01:00
Thomas Ricouard
569aedeaeb
Prepend new timeline statuses and new notifications
2022-12-24 12:20:42 +01:00
Thomas Ricouard
7068ad90bb
Share + Fixed logged out mode
2022-12-23 15:53:02 +01:00
Thomas Ricouard
1a85fa19f8
Quick look support for media preview
2022-12-22 10:53:36 +01:00
Thomas Ricouard
0f2c2df624
Featured tags
2022-12-21 20:26:38 +01:00
Thomas Ricouard
2cd28c13f3
Follow tags + various enhancements
2022-12-21 12:39:29 +01:00
Thomas Ricouard
3d7042832e
Open HashTag
2022-12-20 15:37:51 +01:00
Thomas Ricouard
cab21c137b
Notification tab
2022-12-19 12:28:55 +01:00
Thomas Ricouard
e2455a472e
Generic Statuses list
2022-12-19 07:17:01 +01:00
Thomas Ricouard
4c3809a95b
Account statuses and more packages
2022-12-18 20:30:19 +01:00
Thomas Ricouard
70d28e697c
Begin profile + media preview
2022-12-17 13:37:46 +01:00
Thomas Ricouard
eb4dc011b6
A bit better timeline UI
2022-12-16 13:16:48 +01:00
Thomas Ricouard
df2d383b8a
OAuth + Home timeline
2022-12-01 09:05:26 +01:00
Thomas Ricouard
203abbcf0d
Account screen WIP
2022-11-29 12:18:06 +01:00
Thomas Ricouard
567cb4cc47
New Routeur
2022-11-29 11:46:02 +01:00
Thomas Ricouard
202bf06dc6
Split Models from Network package
2022-11-29 09:28:17 +01:00
Thomas Ricouard
4742e3112b
Remove needless fetchArray
2022-11-25 12:29:42 +01:00
Thomas Ricouard
e91a8b4b0a
Forward error
2022-11-25 12:01:55 +01:00
Thomas Ricouard
ec8de5fb83
Paginated tiemeline and refactoring
2022-11-25 12:00:01 +01:00
Thomas Ricouard
0608996bb8
Render Status as Markdown
2022-11-25 10:03:42 +01:00
Thomas Ricouard
3c1b879d1a
Better status header
2022-11-21 14:42:59 +01:00
Thomas Ricouard
a694c5d80c
Browse and connect to multiple timelines
2022-11-21 13:52:13 +01:00
Thomas Ricouard
864a0b3969
New Timeline architecture
2022-11-21 09:31:32 +01:00