Commit Graph

6331 Commits

Author SHA1 Message Date
Nathan Mattes c2d0701062
Improve Multi-User Account Sheet (IOS-245) (#1273)
* Copynpaste cell to logout all accounts (IOS-245)

* Show cell (IOS-245)

* Logout of all accounts (IOS-245)

* Use iOS-formsheet to present account-list (IOS-245)

* Remove dead code (IOS-245)

* Don't animate account-switches (IOS-245)

* Remove panModal (IOS-245)

* UI-fixes (IOS-245)

* Add swipe-to-logout-action (IOS-245)

* Localize (IOS-245)

* Add a little bit of margin (IOS-245)

* Fix separator-insets (IOS-245)

* Don't crash on iPad when logging out of all accounts (IOS-245)
2024-04-30 09:22:27 +02:00
Marcus Kida ddb3211641
Fix array oob crash (IOS-257) (#1279)
Fix array oob crash
2024-04-25 16:14:08 +02:00
Renaud Chaput ae02dd2994
Fix CI badge (#1264)
This PR fixes the CI badge in README. It seems that main.yml has been
renamed to build-only.yml.
2024-04-24 10:42:20 +02:00
Nathan Mattes cdced03c27
Fix 💊-Issues (#1278)
* Remove pill after scrolling to top (#1275)

* Don't show pill after switching timelines (#1275)
2024-04-23 09:39:33 +02:00
Nathan Mattes 235499ec10 Bump version 2024-04-21 20:43:04 +02:00
Nathan Mattes 099411b435 Fix relative date time formatter
Thanks to @renchap
2024-04-17 17:44:06 +02:00
Eugen Rochko 2b204bf9df
New Crowdin updates (#1262)
* New translations app.json (Spanish)

* New translations app.json (Spanish)

* New translations app.json (Italian)

* New translations app.json (Italian)

* New translations app.json (Hungarian)

* New translations ios-infoplist.json (Hungarian)

* New translations localizable.stringsdict (Hungarian)

* New translations intents.strings (Hungarian)

* New translations intents.stringsdict (Hungarian)

* New translations app.json (Hungarian)

* New translations intents.strings (Hungarian)

* New translations app.json (Hungarian)

* New translations app.json (Hungarian)

* New translations intents.strings (Hungarian)

* New translations app.json (Hungarian)

* New translations app.json (Hungarian)

* New translations intents.strings (Hungarian)

* New translations intents.strings (Hungarian)

* New translations app.json (Hungarian)

* New translations app.json (Hungarian)

* New translations intents.strings (Hungarian)

* New translations app.json (Polish)

* New translations app.json (Polish)

* New translations ios-infoplist.json (Polish)

* New translations app.json (Portuguese)

* New translations app.json (Romanian)

* New translations app.json (Danish)

* New translations app.json (Hebrew)

* New translations app.json (Armenian)

* New translations app.json (English)

* New translations app.json (Hindi)

* New translations app.json (English, United States)

* New translations app.json (Sinhala)

* New translations app.json (English)

* New translations app.json (English, United States)

* New translations app.json (Greek)

* New translations app.json (Hungarian)

* New translations app.json (Portuguese)

* New translations app.json (Thai)

* New translations app.json (Romanian)

* New translations app.json (French)

* New translations app.json (Spanish)

* New translations app.json (Arabic)

* New translations app.json (Belarusian)

* New translations app.json (Catalan)

* New translations app.json (Czech)

* New translations app.json (Danish)

* New translations app.json (German)

* New translations app.json (Greek)

* New translations app.json (Basque)

* New translations app.json (Finnish)

* New translations app.json (Hebrew)

* New translations app.json (Armenian)

* New translations app.json (Italian)

* New translations app.json (Japanese)

* New translations app.json (Korean)

* New translations app.json (Dutch)

* New translations app.json (Polish)

* New translations app.json (Russian)

* New translations app.json (Slovenian)

* New translations app.json (Swedish)

* New translations app.json (Turkish)

* New translations app.json (Ukrainian)

* New translations app.json (Chinese Simplified)

* New translations app.json (Chinese Traditional)

* New translations app.json (English)

* New translations app.json (Vietnamese)

* New translations app.json (Galician)

* New translations app.json (Icelandic)

* New translations app.json (Portuguese, Brazilian)

* New translations app.json (Indonesian)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Latvian)

* New translations app.json (Hindi)

* New translations app.json (English, United States)

* New translations app.json (Burmese)

* New translations app.json (Welsh)

* New translations app.json (Sinhala)

* New translations app.json (Scottish Gaelic)

* New translations app.json (Aragonese)

* New translations app.json (Kurmanji (Kurdish))

* New translations app.json (Sorani (Kurdish))

* New translations app.json (Kabyle)

* New translations app.json (Hungarian)

* New translations app.json (Italian)

* New translations app.json (Vietnamese)

* New translations app.json (Icelandic)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Japanese)

* New translations app.json (Chinese Traditional)

* New translations app.json (Galician)

* New translations app.json (Kurmanji (Kurdish))

* New translations app.json (Thai)

* New translations app.json (Greek)

* New translations app.json (Belarusian)

* New translations app.json (Portuguese)

* New translations app.json (Thai)

* New translations app.json (Romanian)

* New translations app.json (French)

* New translations app.json (Spanish)

* New translations app.json (Arabic)

* New translations app.json (Belarusian)

* New translations app.json (Catalan)

* New translations app.json (Czech)

* New translations app.json (Danish)

* New translations app.json (German)

* New translations app.json (Greek)

* New translations app.json (Basque)

* New translations app.json (Finnish)

* New translations app.json (Hebrew)

* New translations app.json (Armenian)

* New translations app.json (Italian)

* New translations app.json (Japanese)

* New translations app.json (Korean)

* New translations app.json (Dutch)

* New translations app.json (Polish)

* New translations app.json (Russian)

* New translations app.json (Slovenian)

* New translations app.json (Swedish)

* New translations app.json (Turkish)

* New translations app.json (Ukrainian)

* New translations app.json (Chinese Simplified)

* New translations app.json (Chinese Traditional)

* New translations app.json (English)

* New translations app.json (Vietnamese)

* New translations app.json (Galician)

* New translations app.json (Icelandic)

* New translations app.json (Portuguese, Brazilian)

* New translations app.json (Indonesian)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Latvian)

* New translations app.json (Hindi)

* New translations app.json (English, United States)

* New translations app.json (Burmese)

* New translations app.json (Welsh)

* New translations app.json (Sinhala)

* New translations app.json (Scottish Gaelic)

* New translations app.json (Aragonese)

* New translations app.json (Kurmanji (Kurdish))

* New translations app.json (Sorani (Kurdish))

* New translations app.json (Kabyle)

* New translations app.json (Hungarian)

* New translations app.json (Swedish)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Hungarian)

* New translations app.json (Italian)

* New translations app.json (Icelandic)

* New translations app.json (Chinese Traditional)

* New translations app.json (Galician)

* New translations app.json (Belarusian)

* New translations app.json (Thai)

* New translations app.json (Vietnamese)

* New translations app.json (Dutch)

* New translations app.json (Hungarian)

* Update translations

---------

Co-authored-by: Nathan Mattes <hallo@bullenscheisse.de>
2024-04-17 16:45:42 +02:00
Marcus Kida 24e573d9e2
Refactor Polls to not use Core Data (#1265) 2024-04-17 16:36:03 +02:00
Nathan Mattes b120d32efa
Post cell cleanup (IOS-232) and other fixes (#1272)
* Replace icons with SF Symbols (IOS-232)

* Remove visibility-icon from Status (IOS-232)

* Use relative time formatter and switch position of timestamp/user (IOS-232)

* Set TimelineSelector-Button-Position (IOS-232)

Shouldn't switch now any longer. Also: Refactoring.

* Fix position of the Home-icon in TabBar (IOS-232)

TIL: Don't set an empty string, otherwise the position of the TabBarItem-icon breaks
2024-04-16 13:19:49 +02:00
Nathan Mattes 6b32e5e4aa
Re-enable option to post unlisted/"Quiet public" (#1271)
* Add unlisted as option to post (#250)

* Replace menu-icons with SF Symbols to match other platforms (#250)

* Replace earth with SF-symbol (#250)

* Use SF Symbols for visibility (#250)
2024-04-12 10:58:18 +02:00
Nathan Mattes a9792878e9
Show domain-block not for my instance (#1269) (#1270)
Show domain-block not for my instance (#1259)
2024-04-10 18:17:56 +02:00
Nathan Mattes 1a2cf272a6
New 💊 (IOS-234) (#1268)
- Replaces the view previously in the Navigation Bar with the new,
so-called Timeline Status Pill
- We use it to show three states: When a post has been published
(successfully), when new statuses are available or when five (I slightly
increased the limit) requests failed
- The Timeline Status Pill features some fancy animations and a little
shadow
- For further details have a look at IOS-234 🙂 


![ios_234_iphone](https://github.com/mastodon/mastodon-ios/assets/2580019/c77df339-aa72-406f-8be3-572acb244246)

![ios_234_ipad](https://github.com/mastodon/mastodon-ios/assets/2580019/f2fafc4c-ed5a-4afb-86a7-5de69325997b)

To simulate the different reasons I used this snippet. When you press
the Settings-button, you should see the 💊 :

```diff
diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift
index 8559025d4..0eb27d0e8 100644
--- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift
+++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift
@@ -488,9 +488,14 @@ extension HomeTimelineViewController {
     }
     
     @objc private func settingBarButtonItemPressed(_ sender: UIBarButtonItem) {
-        guard let setting = context.settingService.currentSetting.value else { return }
+        // don't commit
+        timelinePill.update(with: .newPosts)
+        showTimelinePill()
 
-        _ = coordinator.present(scene: .settings(setting: setting), from: self, transition: .none)
+//        guard let setting = context.settingService.currentSetting.value else { return }
+//
+//        _ = coordinator.present(scene: .settings(setting: setting), from: self, transition: .none)
+        // don't commit
     }
 
     @objc private func refreshControlValueChanged(_ sender: RefreshControl) {

```
2024-04-10 15:06:22 +02:00
Nathan Mattes 0b282c44ad Go to top when post was sent (IOS-234) 2024-04-10 14:47:48 +02:00
Nathan Mattes 8bb9bca4b9 Sprinkle in localization (IOS-234) 2024-04-10 14:03:13 +02:00
Nathan Mattes bef0536e72 add a little shadow (IOS-234) 2024-04-09 19:24:15 +02:00
Nathan Mattes c1c6ef44e9 Add some styling (IOS-234) 2024-04-09 18:44:42 +02:00
Nathan Mattes 6e61e3ca25 Scale pill when pressing (IOS-234) 2024-04-09 17:23:09 +02:00
Marcus Kida 4ea600403b
Move all UI*FeedbackGenerators to FeedbackGenerator and disable them for now (IOS-247) (#1267)
* Move all UI*FeedbackGenerators to FeedbackGenerator and disable them for now (IOS-247)

* Fix copyright header

* Remove empty private constructor
2024-04-09 16:41:47 +02:00
Nathan Mattes 8884b326fc Re-enable offlineness-hint (IOS-234) 2024-04-09 16:12:32 +02:00
Nathan Mattes 6c0faede75 Show " Post Sent!"-pill if post was sent successfully (IOS-234)
Maybe we could think about an error-message here, too?
2024-04-08 10:40:16 +02:00
Nathan Mattes 527d250024 Show "New Post 💊" if new posts (IOS-234) 2024-04-07 13:53:13 +02:00
Nathan Mattes 6f58c277c7 Fix initial layout (IOS-234) 2024-04-07 13:04:33 +02:00
Nathan Mattes 985eb68766 Improve animations (IOS-234) 2024-04-05 18:35:51 +02:00
Nathan Mattes 33653911c3 Basic animation to show/hide 💊 (IOS-234) 2024-04-05 17:06:54 +02:00
Nathan Mattes 6af94352e2 Remove NavigationBarTitleView and add first draft of TimelineStatusPill (IOS-234) 2024-04-05 14:27:06 +02:00
Nathan Mattes eace1ea815
Explore Tab: Use a segmented picker under the search bar (IOS-237) (#1261)
* Remove custom tab-bar from explore-tab (IOS-237)

* Add scope-bar to SearchBar on discovery-screen and attach scrolling etc. (IOS-237)

* Replace searchbar-scopes with proper segmented control (IOS-237)

The reason for this is that scopes didn't work on iPad in DetailView of the UISplitViewController.
I should blog about this.

* kill some whitespace
2024-04-05 09:55:46 +02:00
Marcus Kida cc9faf5aea
Improve Number Formatting (#1266)
* Improves number formatting (IOS-246)

* Implement formatting > 1T (IOS-246)

* Fix typo (IOS-246)

* Update MastodonTests/MetricFormatterTests.swift

Co-authored-by: Nathan Mattes <hallo@bullenscheisse.de>

* Improve decimal formatting and add tests (IOS-246)

---------

Co-authored-by: Nathan Mattes <hallo@bullenscheisse.de>
2024-04-04 16:55:19 +02:00
Nathan Mattes 5925436bc5
NavigationBar-Update (IOS-235) (#1263)
Adds a menu to switch between different timelines. And it looks like
this:

![Simulator Screenshot - iPhone 15 Pro - 2024-04-01 at 20 12
09](https://github.com/mastodon/mastodon-ios/assets/2580019/68fe01d5-2207-42d4-9896-210beff82f78)

And it works like this:



https://github.com/mastodon/mastodon-ios/assets/2580019/b7468285-4f23-41c2-b814-5612dbf159a0
2024-04-04 13:48:44 +02:00
Nathan Mattes 3fe855273b Rename a few things here and there (IOS-235) 2024-04-04 13:28:07 +02:00
Nathan Mattes 26f3b5a7ce Sprinkle in some localization (IOS-235) 2024-04-04 12:19:44 +02:00
Nathan Mattes 1583ce0d9a Add a new loading-state for timeline-switches (IOS-235)
Gosh, this took longer than expected. It didn't work for quite some time but the trick is to check for the states in several places, like in HomeTimelineViewModel+Diffable or when the timeline reached the end. Those triggered a reload and we don't want that in case the state is `contextSwitch`.
2024-04-04 12:19:44 +02:00
Nathan Mattes 86ab9101a3 Fix loading of older posts (IOS-235)
i.e. consider different timelines there as well
2024-04-04 12:19:44 +02:00
Nathan Mattes 4ae69c9036 Add selection to menu (IOS-235)
also refactor it into a function as we need to re-generate it for an updated version
2024-04-04 12:19:44 +02:00
Nathan Mattes ceca4f6887 Style elements (IOS-235) 2024-04-04 12:19:44 +02:00
Nathan Mattes 67786e1675 Use correct icon for settings (IOS-235) 2024-04-04 12:19:44 +02:00
Nathan Mattes 1d2c08b997 Add basic implementation of timeline-switch (IOS-235) 2024-04-04 12:19:44 +02:00
Nathan Mattes 5e1bb2cfaa Differ between local and following-timeline (IOS-235) 2024-04-04 12:19:44 +02:00
Nathan Mattes 4eed7df729 Remove dead code (IOS-235) 2024-04-04 12:19:44 +02:00
Marcus Kida 344385f5ef Improve button image 2024-04-04 12:19:44 +02:00
Marcus Kida 66f6ee9bd0 Begin updating NavigationBar Layout 2024-04-04 12:19:44 +02:00
woxtu 6c9ce0de88 Fix CI badge 2024-03-29 19:37:32 +09:00
Nathan Mattes 07cab9b9ad Bump version 2024-03-27 10:34:35 +01:00
Eugen Rochko ecf816d15d
New Crowdin updates (#1242)
* New translations app.json (Portuguese)

* New translations app.json (Thai)

* New translations app.json (Romanian)

* New translations app.json (French)

* New translations app.json (Spanish)

* New translations app.json (Arabic)

* New translations app.json (Belarusian)

* New translations app.json (Catalan)

* New translations app.json (Czech)

* New translations app.json (Danish)

* New translations app.json (German)

* New translations app.json (Greek)

* New translations app.json (Basque)

* New translations app.json (Finnish)

* New translations app.json (Hebrew)

* New translations app.json (Armenian)

* New translations app.json (Italian)

* New translations app.json (Japanese)

* New translations app.json (Korean)

* New translations app.json (Dutch)

* New translations app.json (Polish)

* New translations app.json (Russian)

* New translations app.json (Slovenian)

* New translations app.json (Swedish)

* New translations app.json (Turkish)

* New translations app.json (Ukrainian)

* New translations app.json (Chinese Simplified)

* New translations app.json (Chinese Traditional)

* New translations app.json (English)

* New translations app.json (Vietnamese)

* New translations app.json (Galician)

* New translations app.json (Icelandic)

* New translations app.json (Portuguese, Brazilian)

* New translations app.json (Indonesian)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Latvian)

* New translations app.json (Hindi)

* New translations app.json (English, United States)

* New translations app.json (Burmese)

* New translations app.json (Welsh)

* New translations app.json (Sinhala)

* New translations app.json (Scottish Gaelic)

* New translations app.json (Aragonese)

* New translations app.json (Kurmanji (Kurdish))

* New translations app.json (Sorani (Kurdish))

* New translations app.json (Kabyle)

* New translations app.json (German)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Icelandic)

* New translations app.json (Thai)

* New translations app.json (Swedish)

* New translations app.json (Thai)

* New translations app.json (Dutch)

* New translations app.json (Chinese Traditional)

* New translations app.json (Dutch)

* New translations app.json (Slovenian)

* New translations app.json (Galician)

* New translations app.json (Icelandic)

* New translations app.json (Italian)

* New translations app.json (Vietnamese)

* New translations app.json (Japanese)

* New translations app.json (Japanese)

* New translations app.json (Greek)

* New translations app.json (Kabyle)

* New translations app.json (Kabyle)

* New translations app.json (Kabyle)

* New translations app.json (Kabyle)

* New translations app.json (Scottish Gaelic)

* New translations localizable.stringsdict (French)

* New translations app.json (Chinese Simplified)

* New translations app.json (Chinese Simplified)

* New translations ios-infoplist.json (Chinese Simplified)

* New translations app.json (Belarusian)

* New translations app.json (Chinese Simplified)

* New translations app.json (Dutch)

* New translations app.json (Portuguese)

* New translations app.json (Thai)

* New translations app.json (Romanian)

* New translations app.json (French)

* New translations app.json (Spanish)

* New translations app.json (Arabic)

* New translations app.json (Belarusian)

* New translations app.json (Catalan)

* New translations app.json (Czech)

* New translations app.json (Danish)

* New translations app.json (German)

* New translations app.json (Greek)

* New translations app.json (Basque)

* New translations app.json (Finnish)

* New translations app.json (Hebrew)

* New translations app.json (Armenian)

* New translations app.json (Italian)

* New translations app.json (Japanese)

* New translations app.json (Korean)

* New translations app.json (Dutch)

* New translations app.json (Polish)

* New translations app.json (Russian)

* New translations app.json (Slovenian)

* New translations app.json (Swedish)

* New translations app.json (Turkish)

* New translations app.json (Ukrainian)

* New translations app.json (Chinese Simplified)

* New translations app.json (Chinese Traditional)

* New translations app.json (English)

* New translations app.json (Vietnamese)

* New translations app.json (Galician)

* New translations app.json (Icelandic)

* New translations app.json (Portuguese, Brazilian)

* New translations app.json (Indonesian)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Latvian)

* New translations app.json (Hindi)

* New translations app.json (English, United States)

* New translations app.json (Burmese)

* New translations app.json (Welsh)

* New translations app.json (Sinhala)

* New translations app.json (Scottish Gaelic)

* New translations app.json (Aragonese)

* New translations app.json (Kurmanji (Kurdish))

* New translations app.json (Sorani (Kurdish))

* New translations app.json (Kabyle)

* New translations app.json (German)

* New translations app.json (English)

* New translations app.json (Icelandic)

* New translations ios-infoplist.json (English)

* New translations localizable.stringsdict (English)

* New translations intents.strings (English)

* New translations app.json (Chinese Traditional)

* New translations app.json (Thai)

* New translations app.json (Dutch)

* New translations app.json (Korean)

* New translations app.json (Japanese)

* New translations app.json (Galician)

* New translations app.json (Galician)

* New translations app.json (Spanish, Argentina)

* New translations app.json (Belarusian)

* New translations app.json (Vietnamese)

* New translations app.json (Swedish)

* New translations app.json (English)

* New translations ios-infoplist.json (English)

* New translations localizable.stringsdict (English)

* New translations intents.strings (English)

* Update translations

---------

Co-authored-by: Nathan Mattes <hallo@bullenscheisse.de>
2024-03-21 17:00:09 +01:00
Nathan Mattes ab39c6ef87
Fix Profile Editing again (IOS-239, #1244) (#1259)
* Fix Profile Editing again (IOS-239, #1244)

This needs a bit of explanation, I guess, so please don't squash if possible? I didn't take into consideration, that the `ProfileViewController.viewModel` changes. And when it changes, all the combine-connections just ... disappear. This PR changes that (but probably I oversaw something again).

* Disable pull to refresh for editing mode (IOS-239)

* In case of nothing change, cancel editing (IOS-239)
2024-03-21 08:35:18 +01:00
Nathan Mattes 83fd4a89fa
Remove Community-tab from Explore-tab (IOS-236) (#1260) 2024-03-20 14:03:01 +01:00
woxtu 27353a3bdb
Change user agent (#1250) 2024-03-19 16:16:42 +01:00
woxtu f911aa9432 Fix localization update script 2024-03-19 15:46:24 +01:00
Nathan Mattes 6da37e2156
Use static cursor color (#1253) 2024-03-19 11:59:44 +01:00
Nathan Mattes 13cc2bdbec
Don't add my own handle to a reply (#1254) (#1256)
* Don't add my own handle (#1254)

* Remove CoreData-stuff (#1254(

* Remove MastodonMentionContainer (#1254)

This is a left over from the status-refactoring. The Core Data-persistence-stuff for Status needed that, but as we don't use that any more say byebye
2024-03-19 10:28:16 +01:00
Marcus Kida 484d72fbdd
Adjust Server Rules Screen (IOS-220) (#1251)
* Adjust Server Rules Screen (IOS-220)

* Update Server Rules (IOS-220)

* Use new server rules UI in Server Details (IOS-220)

* Improve disclaimer usage (IOS-220)

* Fix background in server details (IOS-220)
2024-03-19 09:55:42 +01:00