mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-12-23 23:50:36 +00:00
6297a428a3
* Compile on iOS 18
* Fix more warnings
* Tweak build settings
* Migrate to Swift Tests
* better tests
* Fix
* Fix tests
* More TabView cleanup
Bump to iOS 18 only + remove custom sidebar
* Revert "More TabView cleanup"
This reverts commit e051437fcb
.
* Tabbar fix + bump to iOS 18
* Remove popToRoot
* Cleanup scrollToTop
* Support both TapBar
* Better TabView support
* Better TabView support
* Cleanup
* Disable TabView animations
* Remove id in ForEach
* Remove external init for StatusRowView
* Cleanup
* More Swift 6 concurrency
* Swift 6 mode
* Fixes
* Full Swift 6 packages support
* For now compile env in Swift 5 mode
* Fix archive
* More fix to Archive
* Address `dispatch_assert_queue_fail` (#2161)
See https://twitter.com/dimillian/status/1823089444397724003?s=61&t=SC3rvyJQWn1NQqAgMVrT0Q
* Bump Env to Swift 6
* Fix push notification
* Remove unecessary workaround
* Cleanup
* Move to @Entry
* Fix TabView on Catalyst
* Fix build
* Fix build 2
* fix warning
* Fix icons for iOS 18
---------
Co-authored-by: NachoSoto <NachoSoto@users.noreply.github.com>
89 lines
2.3 KiB
Swift
89 lines
2.3 KiB
Swift
import AppIntents
|
|
import Foundation
|
|
|
|
enum TabEnum: String, AppEnum, Sendable {
|
|
case timeline, notifications, mentions, explore, messages, settings
|
|
case trending, federated, local
|
|
case profile
|
|
case bookmarks
|
|
case favorites
|
|
case post
|
|
case followedTags
|
|
case lists
|
|
case links
|
|
|
|
static var typeDisplayName: LocalizedStringResource { "Tab" }
|
|
|
|
static let typeDisplayRepresentation: TypeDisplayRepresentation = "Tab"
|
|
|
|
nonisolated static var caseDisplayRepresentations: [TabEnum: DisplayRepresentation] {
|
|
[.timeline: .init(title: "Home Timeline"),
|
|
.trending: .init(title: "Trending Timeline"),
|
|
.federated: .init(title: "Federated Timeline"),
|
|
.local: .init(title: "Local Timeline"),
|
|
.notifications: .init(title: "Notifications"),
|
|
.mentions: .init(title: "Mentions"),
|
|
.explore: .init(title: "Explore & Trending"),
|
|
.messages: .init(title: "Private Messages"),
|
|
.settings: .init(title: "Settings"),
|
|
.profile: .init(title: "Profile"),
|
|
.bookmarks: .init(title: "Bookmarks"),
|
|
.favorites: .init(title: "Favorites"),
|
|
.followedTags: .init(title: "Followed Tags"),
|
|
.lists: .init(title: "Lists"),
|
|
.links: .init(title: "Trending Links"),
|
|
.post: .init(title: "New post")]
|
|
}
|
|
|
|
var toAppTab: AppTab {
|
|
switch self {
|
|
case .timeline:
|
|
.timeline
|
|
case .notifications:
|
|
.notifications
|
|
case .mentions:
|
|
.mentions
|
|
case .explore:
|
|
.explore
|
|
case .messages:
|
|
.messages
|
|
case .settings:
|
|
.settings
|
|
case .trending:
|
|
.trending
|
|
case .federated:
|
|
.federated
|
|
case .local:
|
|
.local
|
|
case .profile:
|
|
.profile
|
|
case .bookmarks:
|
|
.bookmarks
|
|
case .favorites:
|
|
.favorites
|
|
case .post:
|
|
.post
|
|
case .followedTags:
|
|
.followedTags
|
|
case .lists:
|
|
.lists
|
|
case .links:
|
|
.links
|
|
}
|
|
}
|
|
}
|
|
|
|
struct TabIntent: AppIntent {
|
|
static let title: LocalizedStringResource = "Open on a tab"
|
|
static let description: IntentDescription = "Open the app on a specific tab"
|
|
static let openAppWhenRun: Bool = true
|
|
|
|
@Parameter(title: "Selected tab")
|
|
var tab: TabEnum
|
|
|
|
@MainActor
|
|
func perform() async throws -> some IntentResult {
|
|
AppIntentService.shared.handledIntent = .init(intent: self)
|
|
return .result()
|
|
}
|
|
}
|