547 Commits

Author SHA1 Message Date
89b35fab6d
Move pruning of offscreen rows to when the VC disappears, instead of
during scrolling

Prevents race when removing and adding cells in the willDisplay table
view delegate method.
2020-10-26 22:55:58 -04:00
d638ff513b
Fix crash when using show timeline Siri Shortcut 2020-10-26 22:13:48 -04:00
80b3585b71
Fix stautses on My Profile not appearing until scroll 2020-10-25 11:19:37 -04:00
16b02edf87
Ensure the cursor remains visible when composing posts 2020-10-24 15:46:24 -04:00
b8f169d0cd
Fix broken layout on Compose screen when replying to certain posts
Closes #115
2020-10-24 11:34:49 -04:00
62a9535394
Fix crash when ending dictation in Compose CW field
Closes #116
2020-10-24 11:26:29 -04:00
8c4ef3caa6
Fix system autocomplete not working in Compose post body and CW 2020-10-24 11:20:43 -04:00
f841854c5f
Fix crash logging into instances whose domain does not match the Instance uri field 2020-10-21 21:47:01 -04:00
8a528936b8
Fix crash when tapping My Profile tab too quickly after app launch 2020-10-19 18:41:38 -04:00
45ac40b125
Fix broken Compose layout when replying to long statuses 2020-10-18 16:31:41 -04:00
9b949af390
Add complete emoji list to Compose emoji autocomplete 2020-10-18 11:17:58 -04:00
a805da9faa
Enable picture-in-picture playback for video attachments 2020-10-17 12:56:13 -04:00
e0acb0f04a
Don't search for unnecessary data 2020-10-16 19:14:29 -04:00
5414f2329c
Fix race condition causing My Profile tab bar image to not be set 2020-10-14 19:34:30 -04:00
08045dd1e9
Prioritize followed/following accounts in mention suggestions 2020-10-14 19:28:32 -04:00
288f855e2f
Support positing large image VC controls in iPhone 12/Pro/Mini ears 2020-10-13 21:12:21 -04:00
7883b04618
Fix autocomplete bar cutting off scroll view contents 2020-10-12 22:12:35 -04:00
0687c040a0
Prevent inserting extra whitespace when autocompleting 2020-10-12 22:03:50 -04:00
58c6d508ec
Prevent caret from changing position on auto complete 2020-10-12 19:39:50 -04:00
ae272582ac
Autocomplete custom emojis in CW field 2020-10-12 19:17:57 -04:00
1a4517c43a
Cache account relationships in CoreData 2020-10-12 18:20:57 -04:00
2cfc0cf28a
Add Compose screen mention, hashtag, emoji completion
Closes #10
2020-10-11 22:14:45 -04:00
cf63384dce
Why use many DispatchQueue.main.async when few do trick? 2020-09-25 11:31:53 -04:00
733d50b642
Strip U+FFFC from status bodies when posting
Fixes #112
2020-09-23 17:20:45 -04:00
0e60e74a8a
Fix being able to rotate into landscape on iOS 14 2020-09-21 18:45:52 -04:00
fd0054addf
Correctly round corners of My Profile tab icon 2020-09-21 18:42:06 -04:00
576e4aa90d
Add conversation screen title 2020-09-21 18:24:02 -04:00
ea3de4cdda
Fix wrong icon in context menu action 2020-09-21 18:18:55 -04:00
83c7609df5
Fix crash when using app icon shortcuts 2020-09-21 18:11:28 -04:00
809584cc54
Fix crash when opening Compose screen before account/instance is loaded
Prevents when opening the Compose screen with poor network connectivity
2020-09-21 18:04:08 -04:00
6965a4c374
Remove no longer necessary iOS 13.4 availability checks 2020-09-20 11:34:46 -04:00
b6c0c02028
Remove no longer necessary conditional compilation directives 2020-09-20 11:34:09 -04:00
5906c374ba
Fix not being able to tap text view placeholders on Compose screen
Fixes #111
2020-09-17 18:40:02 -04:00
ee90b20f7f
Add swipe to remove accounts in Preferences 2020-09-16 22:21:12 -04:00
9d9ea565f1
Fix crash opening Preferences with deleted accounts 2020-09-16 17:52:00 -04:00
6df5f7fb08
Add preferences for auto-expanding CW'd posts and disabling long post
collapsing

See #105
2020-09-15 21:37:08 -04:00
02135aa0de
Use inset list style for preferences on iOS 14 2020-09-15 20:48:53 -04:00
be5a4c03a6
Fix attachments not being posted in the correct order. 2020-09-14 23:29:31 -04:00
911e66a159
Allow more browsing of instance public timelines
Closes #74
2020-09-13 15:51:08 -04:00
ab4bcfa50f
Fix profile screen title not being set 2020-09-13 15:34:45 -04:00
1c6e464a4c
Start Compose screen tests 2020-09-13 13:19:56 -04:00
8ac3deb55a
Remove old file 2020-09-12 22:04:41 -04:00
5e9cc430c6
Use cross fade transitions for displaying gallery and asset picker if
Reduce Motion/Prefer Cross Fade is enabled

Closes #108
2020-09-12 13:25:59 -04:00
0b6ef6517b
Fix gallery action buttons not being centered in device "ears" on iPhone
XR and 11
2020-09-12 12:01:16 -04:00
34a01094f7
Fix gallery expand animation description not starting at correct
position

Safe are insets weren't being taken into account when hiding the
controls, because the toVC had not yet been added to the container view
and thus didn't have anything to receive insets from.
2020-09-12 12:01:16 -04:00
95b215c6b5
Add Clear Image Cache option to Advanced prefs 2020-09-12 12:01:16 -04:00
e21dceb3b3
Tweak gallery spring animation parameters 2020-09-12 12:01:16 -04:00
9534f19262
Show BlurHash previews of attachments 2020-09-12 12:01:08 -04:00
7c4bbfd730
Improve compose posting error messages 2020-09-09 18:33:59 -04:00
e19a6528ad
Improve gallery expand animation
Use spring timing, slide in top/bottom controls
2020-09-08 23:41:15 -04:00
fe1db72f19
Fix save draft sheet showing even when draft had no content 2020-09-07 17:15:18 -04:00
b4ddb8f533
Fix safe area on Compose screen not including keyboard on iOS 13 2020-09-07 17:05:50 -04:00
9a4ddfea3f
Fix Compose reply scroll effect not working on iOS 13 2020-09-07 16:56:06 -04:00
dd8a196630
Show custom emoji in display names on Compose screen 2020-09-07 15:22:06 -04:00
3da7aacb35
Fix visiblity context menu in main text view accessory not updating 2020-09-07 14:46:17 -04:00
39c8162931
Prevent attempting to add an attachment when the possibility would be
invalid
2020-09-07 14:44:56 -04:00
fe95cb9e1a
Replace Draw Something context menu item with dedicated button
Fixes add attachment button not working on iOS 13. Adding a context menu
to a Button inside a List on iOS 13 prevents the button from ever
recognizing taps.
2020-09-07 14:41:31 -04:00
ec2d510be2
Fix crash when opening Compose screen on iOS 13 2020-09-06 23:27:43 -04:00
262aadf807
Fix very bad performance when laying out Compose reply view
Using a non-scrolling UITextView wrapped in SwiftUI combined with the
old hack of fixing its layout by passing the view controller's width
down to the wrapped view caused very slow layouts, resulting in
significant lag when typing into the main text view of the compose
screen.
2020-09-06 22:47:02 -04:00
d008b882cb
Use context menu for visibility on iOS 14 2020-08-31 23:07:41 -04:00
f0582739cc
Re-add Compose button to Profile screen
Add menu with Direct Message option
2020-08-31 21:39:36 -04:00
4c82b1a341
Rewrite Compose screen in SwiftUI 2020-08-31 19:28:50 -04:00
b55a96d649
Fix crash when resizing split view on iPad if Explore search controller
hadn't been created yet
2020-08-30 19:57:32 -04:00
3937dde2bf
Fix crash when selecting attachments on iOS 13 2020-08-17 18:52:54 -04:00
95ebca04d2
Disable automatic GIF playback in low-power mode 2020-08-16 19:14:32 -04:00
722b81dad9
Group appearance prefs into sections 2020-08-16 14:58:10 -04:00
059f7307b3
Let system uppercase section headers 2020-08-16 14:58:02 -04:00
9b04b75949
Prevent potential race condition when loading additional statuses 2020-08-16 10:29:31 -04:00
eef9b96a1a
Fix crash when showing profile for uncached account 2020-08-15 18:00:18 -04:00
090746f292
Disallow opening universal links from Open in Safari context menu action 2020-08-15 17:48:58 -04:00
79eb23ef5d
Remove unused preference 2020-08-15 17:43:31 -04:00
392e51eb3e
Remove unnecessary prefernces change notification 2020-08-15 17:31:24 -04:00
86d5a73c85
Change menu item order
Open in Safari should be the closest to the user's finger when tapping a
menu button
2020-08-15 17:20:09 -04:00
eaefa366b7
Fix displaying images on iOS 14 2020-08-15 17:03:02 -04:00
79b23127e9
Fix crash on refreshing 2020-08-15 14:15:38 -04:00
f9b85c87b4
Fix crash on launch due to unloaded sidebar VC 2020-08-15 13:55:47 -04:00
260bedcf10
Fix retain cycle between status cells and menu actions 2020-07-07 23:23:39 -04:00
fe09c5e522
Switch asset picker to use diffable data sources 2020-07-06 18:16:18 -04:00
985d30a401 Add background to image descriptions so they're visible against light backgrounds
Closes #102
2020-07-06 17:48:19 -04:00
794594805c Prevent needlessly prefetching non-image attachments 2020-07-06 00:00:55 -04:00
1c708732f2 Exclude iOS 14-specific code from compilation on Xcode 11 to allow building for TestFlight 2020-07-06 00:00:51 -04:00
db30471011 Fix not being able to refresh timelines 2020-07-05 16:30:16 -04:00
2825345c7e Add switching between Posts, Posts and Replies, and Media pages of user profiles
Closes #103
2020-07-05 16:17:56 -04:00
f3d01c47c3 Merge branch 'develop-xcode-12' into ios-14 2020-07-04 11:21:00 -04:00
2916d7a72d Add tapping the active tab bar item to scroll to top
Closes #106
2020-07-03 19:36:52 -04:00
d190636fbd Fix Preferences button not appearing (again) 2020-07-03 19:36:08 -04:00
19fa12391d Fix Preferences button not appearing 2020-07-03 18:53:19 -04:00
641ab765a7 Fix crash when displaying search results 2020-07-03 18:50:05 -04:00
986fc5b833 Prevent crash when displaying accounts with no pinned statuses 2020-07-03 18:49:55 -04:00
cf5b97d9c8 Fix crash showing custom instance on iOS 14 2020-07-03 18:49:28 -04:00
b2c7735256 Fix Preferences button not appearing 2020-07-03 18:44:38 -04:00
864fd77ecc Sync active tab and navigation stack between split view/tab bar controllers 2020-06-29 22:21:03 -04:00
2a8e970738 Use context menus as primary actions for 'More Actions' buttons on >= iOS 14 2020-06-27 00:22:14 -04:00
6cf6db6a8d Add sidebar on iPadOS 14 2020-06-24 16:40:45 -04:00
fb11e36467 Fix crash when displaying search results 2020-06-24 15:42:56 -04:00
0fa87e9177 Prevent crash when displaying accounts with no pinned statuses 2020-06-23 22:21:50 -04:00
5cb84e271a Prefer ephemeral sessions in ASWebAuthneticationSession 2020-06-23 21:35:14 -04:00
50f1a9a7de Change ComposeDrawingViewController to use drawingPolicy on iOS 14 2020-06-23 19:33:14 -04:00
154fc7cd02 Fix ASWebAuthenticationSession usage in Catalyst 2020-06-23 19:32:30 -04:00
43779e42df Fix crash showing custom instance on iOS 14 2020-06-23 19:27:34 -04:00
0e91fc239d
Fix missing anchor for Compose screen visibility popover 2020-06-22 09:53:20 -04:00
083add273b
Prevent audio from other apps pausing when showing gifv attachments
Fixes #101
2020-06-21 16:01:29 -04:00
64365bdf2b
Fix compose attachments being cut off at the bottom of the safe area 2020-06-21 10:31:40 -04:00
6adcad63b3
Add crash report helper 2020-06-20 23:11:35 -04:00
393a134648
Don't show Follow activity for user's own account 2020-06-19 23:00:59 -04:00
ba3e9e7491
Fix compose attachment description text view not expanding to fit text 2020-06-19 19:46:08 -04:00
920f926b48
Add text recognition image description for image attachments 2020-06-19 19:14:24 -04:00
6e27399e10
Fix loading additional statuses on profiles not working
This was a regression introduced in
d27bddb2caf9e22bb7adad065f356aba13d5e542 which removed the didSet
handlers which called reloadData on the pinnedStatuses/timelineSegments
property without adding the appropriate insertRows calls where they were
modified.
2020-06-18 22:39:04 -04:00
1f40cc9928
Show controls/description for gifv attachments
See #98
2020-06-17 23:33:48 -04:00
66020b7847
Add preference for always showing status visiblity icon 2020-06-17 18:00:13 -04:00
00bf99334f
Add preference for status reply icons 2020-06-17 17:45:34 -04:00
a901af6be9
Merge branch 'private-beta' into develop 2020-06-16 23:19:33 -04:00
b623e348c2 Fix crash when opening compose screen before initial network requests completed 2020-06-16 23:13:46 -04:00
056346cee9
Add reply indicator to statuses in timelines 2020-06-16 23:06:36 -04:00
d27bddb2ca Fix profile header image not showing up on first load
The issue occurred because the profile header would kick off a request
upon loading, then the profile table would request the initial set of
statuses shortly thereafter which would result in reloadData being called
which would cancel the request without removing the group, so the request
generated by the newly-reloaded header cell would attach a callback to
the cancelled request, resulting in the header image never displaying.
2020-06-15 22:34:42 -04:00
36326e4469
Make network requests in viewWillAppear instead of viewDidLoad 2020-06-15 19:41:51 -04:00
c0316f55ef
Fix crash when sharing large image on iPad 2020-06-15 18:29:04 -04:00
803ba50f53
Add pointer interaction to remove attachment, large image share/dismiss buttons 2020-06-15 18:26:56 -04:00
5d0c59e863
Prompt for Photos access before showing asset picker 2020-06-15 18:15:05 -04:00
c7b4d00da7
Fix race condition loading bookmarks 2020-06-15 18:02:07 -04:00
f2a8b91769
Provide metadata to UIActivityViewController
Closes #56
2020-05-14 22:43:56 -04:00
35a510e8ed
Add cache reset button to Advanced Preferences 2020-05-13 18:58:11 -04:00
0582812563
Remove strong references to MastodonController 2020-05-13 18:57:04 -04:00
e581f384e4
Fix account descriptions being squashed in the follows list 2020-05-12 22:24:51 -04:00
1c9b1b9ac3
Add support (sort of) for gifv attachments
See #98
2020-05-12 21:46:08 -04:00
82ad3b9fc4
Add reference counting for accounts
Closes #97
2020-05-11 22:03:17 -04:00
0a89dd3041
Don't double update accounts
Adding a status to the cache will also cache the status' account
2020-05-11 18:27:54 -04:00
cd78287a87
Fix crash when viewing instance public timelines
Use a CoreData in-memory store for public timelines.
2020-05-11 17:57:50 -04:00
04496aca1d
Apply avatar style to local account avatar images 2020-05-10 19:30:19 -04:00
5a098df931
Fix crash when searching 2020-05-10 15:47:50 -04:00
9812d4aff2
Prevent double-decrementing reference count for conversation main status 2020-05-10 15:08:45 -04:00
f4f2a5546c
Prevent race in status action account list 2020-05-10 15:04:22 -04:00
866edc472d
Show avatar and instance domain in account list in Preferences 2020-05-10 14:54:20 -04:00
88e4f52b5d
Fix crash when adding account
Adding a UserData.LocalAccountInfo with a nil username while the
PreferencesView is on screen will cause a crash, since it triggers a
Combine publish upon which the PreferencesView expects to be able to
display the username of all accounts.
2020-05-10 14:41:07 -04:00
98529ca5af
Remove notifications from the bottom when scrolling up notifications list 2020-05-10 12:56:03 -04:00
6d8c5f632c
Fix scroll-to-top sometimes not scrolling all the way to the top 2020-05-10 12:56:01 -04:00
4fdafa893e
Add drawing attachments using PencilKit 2020-05-09 22:14:48 -04:00
1e41c8fa17
Remove MastodonCache usgae from XCBActions 2020-05-06 23:05:15 -04:00
ebbfc7a132
Fix race condition on loading notifications 2020-05-06 19:32:32 -04:00
d6c506488b
Replace a bunch of MastodonCache uses with CoreData 2020-05-02 19:52:35 -04:00
ee5e049355
Use CoreData for bookmarks and search results 2020-04-27 19:25:41 -04:00
f53474ac90
Use CoreData for notifications screen 2020-04-27 19:20:09 -04:00
fa1daa682f
Convert profile VC to use CoreData objects
Does not yet remove old statuses when scrolling up, like timeline VC
2020-04-13 22:51:21 -04:00
030bee1948
Convert conversation VC to use CoreData models 2020-04-13 22:51:15 -04:00
ed37b16463
Start adding CoreData-based "reference" counting for statuses
Prune old statuses that aren't likely to be shown again when scrolling
in timeline table view
2020-04-12 23:08:33 -04:00
2c8ba878b7
Start converting UI to use CoreData backed objects instead of API
objects directly
2020-04-12 12:54:27 -04:00
465aedd43f
Make account info username optional
Onboarding view controller needs to set the account info object on the
mastodon controller before calling getOwnAccount since getOwnAccount
will upsert the user's account into the persistent container, which
requires the account info to exist to create a unique-per-account
identifier.
2020-04-12 11:14:10 -04:00
fcab6818b0
Hide large image source view during expand/shrink animation 2020-03-25 23:10:48 -04:00
80cf1850dd
Add trackpad/magic mouse support for navigation controller interactive push gesture 2020-03-25 22:29:32 -04:00
e612964464
Allow scrolling w/ trackpad/magic mouse to dismiss gallery 2020-03-25 22:12:26 -04:00
49a437583e
Fix incorrect large image size during expand/shrink animation in some
cases
2020-03-25 22:09:00 -04:00
8a513186aa
Add pointer interactions status buttons and profile header more button 2020-03-24 23:02:40 -04:00
2e8241d734
Move attachment context menu interaction to AttachmentView 2020-03-20 22:28:23 -04:00
c9c001d403
Improve attachment previewing
- Set correct preview size
- Don't show controls
2020-03-20 22:13:04 -04:00
4018d39312
Fix double gestures in attachments gallery 2020-03-17 21:56:29 -04:00
5e9caf9179
Use LoadingLargeImageViewController for account avatar/header
Prevents crash when tapping unloaded avatar/header images
2020-03-17 21:42:09 -04:00
3bbbb05083
Rename AttachmentsViewController to LoadingLargeImageViewController and
make non-specific to attachments
2020-03-17 21:24:15 -04:00
bd3e74c611
Remove unnecessary XIB 2020-03-17 21:07:44 -04:00
2e8c416e04
Merge gallery and large image animations 2020-03-17 21:05:45 -04:00
955f9e5916
Fix attachment descriptions not being set correctly 2020-03-17 21:03:29 -04:00
17f15db32d
Don't round bottom corners of asset picker
Corner radius doesn't match that used on 2019 iPad Pro, so rounding the
bottom corners results in the view controller beneath the asset picker
showing through in some split-screen configurations
2020-03-16 20:50:16 -04:00
1a11dd2a69
Present asset picker as popover in regular horizontal size class 2020-03-16 20:45:51 -04:00
b5fa0bceab
Fix pasting using compose app shortcut while app isn't running 2020-03-16 19:09:25 -04:00
bebf47f05c
Prevent incompatible items from being pasted on compose screen 2020-03-16 17:31:43 -04:00
e76b719c6a
Add context menu previews to explore VC 2020-03-15 23:54:04 -04:00
478c7b7a23
Fix crash when long-presing add attachment button 2020-03-15 22:59:43 -04:00
9ed05de3ee
Add compose attachments preview 2020-03-15 14:25:02 -04:00
64a8f6d733
Reorganize code 2020-03-15 11:43:41 -04:00
18e91feb00
Fix requires attachment descriptions preference not working 2020-03-15 11:39:35 -04:00
0691c3b9d6
Fix asset preview size 2020-03-14 23:32:54 -04:00
1ccb450477
Support dragging and dropping attachments in the compose view controller
Allos dragging in attachments from other apps and drag/dropping with the
compose VC to reorder attachments
2020-03-14 20:08:36 -04:00
7117ce6320
Support pasting images to create attachments
Closes #91
2020-03-14 16:46:50 -04:00
34dccf1f37
Extract compose attachments into separate VC 2020-03-14 15:47:15 -04:00
a3303dc8fb
Use same order for status and account preview actions 2020-03-11 22:54:38 -04:00
fadddeda7f
Fix crash when deleting draft
Closes #94
2020-03-11 22:18:31 -04:00
cd5b4c1145
Remove old code 2020-03-02 22:31:37 -05:00
c7746d3084
Add unknown notification fallback
Closes #90
2020-03-02 19:44:10 -05:00
315ea39682
Fix crash in silent action prefs 2020-03-02 19:44:10 -05:00
44fbbd6a80
Revert "Fix custom emojis in display namesnot showing in conversation main"
This reverts commit 73da828e7cec09bcfbe65295bbd2f02e3b719ff6.

Fixes #89
2020-03-02 19:44:10 -05:00
de02c73957
Fix custom emojis in display namesnot showing in conversation main
statuses

Caused by the cell updating it's UI multiple times in quick succession.
As a workaround, prevent the main cell from being reloaded.
2020-03-02 19:44:10 -05:00
2cebb6bd7d
Show custom emojis in display names (where possible) 2020-03-02 19:44:09 -05:00
53707593a6
Show custom emojis in display names (where possible) 2020-03-01 19:40:32 -05:00
af821081b0
Temporary fix for crash that occurs when switching accounts immediately
after adding a new one
2020-02-29 17:36:54 -05:00
804636dcbb
Don't show warning when loading draft on top of for empty statuses
Closes #87
2020-02-28 19:50:04 -05:00
d9bae42f81
Prevent empty drafts from being saved 2020-02-22 15:43:17 -05:00
a814ee37cc
Update SheetController
Fixes image picker losing velocity during dismiss animation
2020-02-22 15:29:42 -05:00
1a8e84f5fa
Reorganize behavior preferences 2020-02-22 13:19:31 -05:00
1f56823a17
Add preference to disable gif animation in timelines 2020-02-22 13:12:28 -05:00
65d57df949
Add interacting pushing to navigation controllers
Allows people to move forward in the navigation stack after popping
(making popping a non-destructive action).
2020-02-19 22:07:12 -05:00
d7953470e3
Add rudimentary support for audio attachments
Closes #7
2020-01-26 18:50:45 -05:00
8c7bebcce8
Fix large image controls being positioned incorrectly on notched-devices
when opening via a context menu preview.

The constraints for the top controls were being set only once, but when
showing a large image in the contxt menu preview window, the top inset
safe area is 0 and didn't become 44 (the value for notched devices)
until the preview was expanded.

Fixes #86
2020-01-26 18:28:46 -05:00
20c602f911
Disable row insertion animations 2020-01-26 18:23:18 -05:00
f2e08e96f3
Improve large image/gallery animation handling when images aren't loaded 2020-01-25 22:29:12 -05:00
d1913d7e69
Change white background when loading attachment to black 2020-01-25 22:09:00 -05:00
26c99a1a35
Improve scroll perform when loading new rows into table views
Instead of reloading the whole table view, only insert the rows for
statuses/notifications that were added.
2020-01-25 11:11:48 -05:00
6757031dcb
Hide context menus and swipe actions on instance public timelines 2020-01-25 10:44:31 -05:00
81256b7a96
Only show local posts on public instance timelines 2020-01-25 10:37:22 -05:00
d6ae51c02f Improve ImageCache loading
Keep track of the number of requests and only cancel the underlying
URLSessionTask if there are no concrete requsts remaining.

Closes #81
2020-01-25 10:30:04 -05:00
4abda02b76
Only show drafts from current account 2020-01-22 22:27:58 -05:00
59277ec64f
Change drafts to store which accounts was used to create them
When loading a draft:

If the draft was created from a different account than the current one:
    If the draft was in reply to a status, don't allow it to be loaded.
    If the draft was not in reply to a status, prompt the user whether
    or not to load the draft.
If the draft was in reply to a different status than the current one:
    Prompt the user whether or not to load the draft.
Otherwise, load the draft.

Draft replies created from other accounts can't be loaded from different
accounts because the status for inReplyToID of the draft will have a
different instance-local ID if the two accounts are on different
instances.

See #16
2020-01-20 15:26:25 -05:00