Fork of tommyxchow/frosty with TwitchAdSolutions (vaft) adblock https://frostyapp.io
Find a file
Tommy Chow 7be8dcd63f
Add paste button for copied messages and option to move notification to the bottom of chat (#176)
* Add paste button to "message copied" notification

* Add option to move notification to bottom of chat
2022-08-05 22:53:24 -04:00
.github Setup GitHub Actions and fastlane (#174) 2022-08-04 23:47:08 -04:00
android Setup GitHub Actions and fastlane (#174) 2022-08-04 23:47:08 -04:00
assets Fix app crashing on lower Android versions 2022-05-30 16:46:42 -04:00
ios Setup GitHub Actions and fastlane (#174) 2022-08-04 23:47:08 -04:00
lib Add paste button for copied messages and option to move notification to the bottom of chat (#176) 2022-08-05 22:53:24 -04:00
test Remove unused model fields (#167) 2022-07-31 18:23:54 -04:00
.gitignore Setup GitHub Actions and fastlane (#174) 2022-08-04 23:47:08 -04:00
.metadata Initial commit 2021-08-18 09:38:00 -04:00
analysis_options.yaml Update analysis_options.yaml 2022-03-23 20:13:45 -04:00
LICENSE Create LICENSE 2022-01-11 15:29:38 -05:00
pubspec.lock Upgrade packages 2022-07-29 12:12:19 -04:00
pubspec.yaml Bump version to 2.1.1 2022-08-04 17:06:40 -04:00
README.md Fix CI badge 2022-08-05 15:24:11 -04:00

Frosty Logo

Frosty

A Twitch client for iOS and Android with BTTV, FFZ, and 7TV support. Built with Flutter.

CI Issues Last Commit License Release

Apple App Store Badge Google Play Store Badge

Buy Me A Coffee

Followed Streams Categories Section Search Section Channel (Video/Chat) View Emote Menu Settings Section

Motivation

A major problem with the official Twitch app for many users is that emotes and badges from services such as BetterTTV (BTTV), FrankerFaceZ (FFZ), and 7TV are not officially supported. Twitch is unaffiliated with these services, hence why they haven't been integrated officially.

As a result, the millions of users of these services have an unideal viewing experience on the official Twitch app. In the stream chat, only text is positioned where emotes should be (imagine only being able to see :emoji_code: rather than the emojis themselves).

Frosty aims to bring these emotes and other general quality of life features to both iOS and Android.

Features

  • Support for BetterTTV, FrankerFaceZ, and 7TV emotes and badges
  • Browse followed streams, top streams, and top categories
  • Autocomplete for emotes and user mentions
  • Light, dark, and black (OLED) themes
  • Search for channels and categories
  • See and filter chatters in a channel
  • Local chat user message history
  • Theater and fullscreen mode
  • Watch live streams with chat
  • Picture-in-picture mode
  • Block and report users
  • Emote menu
  • Sleep timer
  • And more...

Development Setup

  1. Go to the Twitch dev console and register a new application to retrieve a Client ID and Client Secret.

  2. Clone the repo to a directory with (e.g., git clone https://github.com/tommyxchow/frosty.git).

  3. Navigate to lib/constants/constants.dart and replace the clientId and secret constants with your client ID and client secret from step 1 (if using VSCode, use --dart-define to define them as environment variables).

  4. Run flutter pub get to fetch all the dependencies.

  5. Choose an emulator or device and run the app!

Note

Frosty uses MobX for state management. Please refer to the documentation about code generation, otherwise your changes within MobX stores may not be applied.

Warning

I built Frosty while learning Flutter, so some of the code may not be optimal. I'm working on refactoring, documenting, and cleaning up various parts as much as I can.

Frequently Asked Questions (FAQ)

Can I change the quality of the stream?

Unfortunately, quality options aren't available through the native player and rely on an "auto" setting. There is no official API for getting the live stream URLs, so specific quality options are not possible currently.

Why do some animations and scrolling appear to be janky?

Due to the side effects of the Flutter framework, there may be some stutter and jank on the first installation and launch.

After using and moving around the app for a bit, the jank will be mitigated through shader warmup/caching and should be minimal on subsequent launches. Watching a stream with a fast chat for a few minutes should resolve it.

Why is there a delay between the stream and chat?

On Android, there should be no delay. Try refreshing the player if there is a delay.

On iOS, there is a delay of around 15 seconds due to the native player, so unfortunately it's out of my control. As a workaround, Frosty has a message delay option that lets you set the delay (in seconds) before each message is rendered.

Why are some GIF emotes either slow or very fast?

This seems to be caused by the Flutter framework itself (see here and here).

Why is feature "X" from Twitch not in the app as well?

I'm limited to what is available in the Twitch API, so certain features from the Twitch web or mobile app (e.g., voting on predictions and category viewer count) are sadly not available at the moment.

Other features related to ad-blocking or utilizing private APIs will likely not be implemented officially because they would violate Twitch's terms of service. My highest priority currently is staying on the app stores and focusing on making features for those builds.

Where can I report a bug or request a new feature?

You can open a new issue here with the appropriate labels (e.g., "bug" or "feature request") and I'll take a look at it.

Donate

Downloading Frosty and leaving a review or starring this repository is more than enough to show support.

If you're feeling generous and would like to support me with a donation, you can do so through the following:

If you decide to support me monetarily, it is extremely appreciated and further motivates me to continue improving and maintaining Frosty ❤️.

License

Frosty is licensed under AGPL-3.0-or-later.