Fork of tommyxchow/frosty with TwitchAdSolutions (vaft) adblock https://frostyapp.io
Find a file
2022-01-23 14:01:16 -05:00
.github Update FUNDING.yml 2022-01-15 20:28:13 -05:00
android Fix missing exported property for Android 12 2022-01-13 12:13:54 -05:00
assets Add screenshots to README.md 2022-01-17 16:06:50 -05:00
ios Tweak icon color 2022-01-06 09:56:59 -05:00
lib Increase jump delay when focusing textfield 2022-01-23 14:01:16 -05:00
test Migrate from BTTV's FFZ API to FFZ's official API 2021-12-31 20:34:12 -05:00
web Add placeholder app icon & change launch color 2022-01-05 12:56:00 -05:00
.gitignore Update .gitignore 2021-10-12 00:08:00 -04:00
.metadata Initial commit 2021-08-18 09:38:00 -04:00
analysis_options.yaml Fix CI analyzer error 2021-12-28 20:35:44 -05:00
LICENSE Create LICENSE 2022-01-11 15:29:38 -05:00
pubspec.lock Upgrade packages 2022-01-19 20:48:36 -05:00
pubspec.yaml Bump version 2022-01-20 12:31:42 -05:00
README.md Add screenshots to README.md 2022-01-17 16:06:50 -05:00

Frosty

License: AGPL v3 CI

A Twitch client for iOS and Android, built with Flutter.

Beta now available on TestFlight (iOS) and Play Store (Android)!

Features

  • Browse followed streams, top streams, and top categories
  • Search for channels and categories
  • Watch live streams with chat
  • Support for BTTV, FFZ, and 7TV emotes/badges
  • View local chat user message history
  • See the list of users in chat and filter them
  • Theater and full-screen mode
  • Block and unblock users
  • Light, dark, and black (OLED) themes
  • Customizable settings

Screenshots

Motivation

A major problem with the official Twitch app for many users is that emotes 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.

Development Setup

  1. Go to the Twitch dev console and register a new application to retrieve a client ID and client secret and add a OAuth redirect URL.

  2. Clone the repo to a directory.

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

  4. Navigate to android/app/src/main/AndroidManifest.xml and under the flutter_web_auth intent filter replace the value of android:scheme to the scheme in your OAuth redirect URL.

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

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

FAQ

Why do certain animations and scrolling appear to be janky?

Due to Flutter, 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 relatively fast chat for a couple of minutes usually resolves it for me.

Why am I getting ads even though I'm subscribed to the channel or have Turbo?

Even if you've logged in to the app, you'll still have to log in to the WebView so that you can be identified when the stream plays. You can do so by going to the settings and then under the "Account" section tap the "Log in to WebView" button.

How can I change the quality of the stream?

On Android, you can change the stream quality by turning off the custom stream overlay in the settings and tapping the gear icon on the bottom right.

On iOS, sadly 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 at this time.

Why is there a delay between the stream and chat?

On Android, the delay should be minimal. Try refreshing the player if you have a delay.

On iOS, there seems to be delays up to 15 seconds due to the native player so unfortunately it's out of my control. The best you can do for now is refreshing or pausing/playing the stream until the delay is minimized.

Why are some GIFs either slow or very fast?

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

License

Frosty is licensed under AGPLv3. See the LICENSE for more details.