mirror of
https://github.com/yattee/yattee.git
synced 2026-10-23 21:22:53 +00:00
101880d35f0a5e761ccab770995bef300340e894
ImportSubscriptionsView wrote every imported channel straight into the local SwiftData store via dataManager.subscribe(to:), regardless of the selected account context. Imports now go through SubscriptionService.subscribe(to:in:) aimed at a destination the user picks — the local store or any logged-in account that supports subscriptions, minus the source instance's own account, the same roster the subscribe menus offer. The already-subscribed marks are asked per destination through a new SubscriptionService.subscribedChannelIDs(in:) helper (cold server destinations fetch their list once, generation-fenced like the other reads) and reload when the destination changes. Individual adds show a per-row spinner while the server write is in flight, alreadySubscribed counts as success, and Add All runs serially with an added/failed tally. Also drop the "Invidious" wording from the import empty state — the view serves Piped sources too.
Yattee 2 is in the works! A new version of the app is being built with a refreshed experience. It pairs with the new Yattee Server — a self-hosted backend powered by yt-dlp that supports 1000+ sites. Join the TestFlight beta to try early builds, and check the new documentation site at docs.yattee.stream for guides, roadmap and changelog.
Features
- Native user interface built with SwiftUI with customization settings
- Player queue and history
- Player component with custom controls, gestures and support for 4K playback
- Fullscreen, Picture in Picture and background audio playback
- SponsorBlock, configurable categories to skip
License
Yattee and its components is shared on AGPL v3 license.
Languages
Swift
96.9%
Ruby
2.7%
C
0.3%
