Skip to content

Commit 6755e4b

Browse files
authored
Merge pull request #87 from tommyxchow/dev
Release v1.1.0
2 parents 2beb3e9 + 5f7b350 commit 6755e4b

File tree

22 files changed

+454
-243
lines changed

22 files changed

+454
-243
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
A [Twitch](https://www.twitch.tv/) client for iOS and Android, built with [Flutter](https://flutter.dev/).
77

88
<p>
9-
<a href="https://testflight.apple.com/join/UZLoznpr" target="_blank">
9+
<a href="https://apps.apple.com/us/app/frosty-for-twitch/id1603987585" target="_blank">
1010
<img align="center" alt="Get it on iOS (Apple TestFlight)" src="assets/badges/apple_app_store_badge.svg" width="200">
1111
</a>
1212
<a href="https://play.google.com/store/apps/details?id=com.tommychow.frosty" target="_blank">

analysis_options.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ linter:
2626
# producing the lint.
2727
rules:
2828
- directives_ordering
29-
# avoid_print: false # Uncomment to disable the `avoid_print` rule
30-
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
29+
- prefer_single_quotes
3130

3231
# Additional information about this file can be found at
3332
# https://dart.dev/guides/language/analysis-options

ios/Podfile.lock

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
PODS:
22
- Flutter (1.0.0)
3+
- flutter_native_splash (0.0.1):
4+
- Flutter
35
- flutter_secure_storage (3.3.1):
46
- Flutter
5-
- flutter_web_auth (0.4.0):
7+
- flutter_web_auth (0.4.1):
68
- Flutter
79
- FMDB (2.7.5):
810
- FMDB/standard (= 2.7.5)
@@ -11,13 +13,13 @@ PODS:
1113
- Flutter
1214
- path_provider_ios (0.0.1):
1315
- Flutter
14-
- Sentry (7.9.0):
15-
- Sentry/Core (= 7.9.0)
16-
- Sentry/Core (7.9.0)
16+
- Sentry (7.10.2):
17+
- Sentry/Core (= 7.10.2)
18+
- Sentry/Core (7.10.2)
1719
- sentry_flutter (0.0.1):
1820
- Flutter
1921
- FlutterMacOS
20-
- Sentry (~> 7.9.0)
22+
- Sentry (~> 7.10.1)
2123
- shared_preferences_ios (0.0.1):
2224
- Flutter
2325
- sqflite (0.0.2):
@@ -30,6 +32,7 @@ PODS:
3032

3133
DEPENDENCIES:
3234
- Flutter (from `Flutter`)
35+
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
3336
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
3437
- flutter_web_auth (from `.symlinks/plugins/flutter_web_auth/ios`)
3538
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
@@ -48,6 +51,8 @@ SPEC REPOS:
4851
EXTERNAL SOURCES:
4952
Flutter:
5053
:path: Flutter
54+
flutter_native_splash:
55+
:path: ".symlinks/plugins/flutter_native_splash/ios"
5156
flutter_secure_storage:
5257
:path: ".symlinks/plugins/flutter_secure_storage/ios"
5358
flutter_web_auth:
@@ -69,18 +74,19 @@ EXTERNAL SOURCES:
6974

7075
SPEC CHECKSUMS:
7176
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
77+
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
7278
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
73-
flutter_web_auth: fd071763f61703882adbb2524f5cd5251883118c
79+
flutter_web_auth: 09a0abd245f1a07a3ff4dcf1247a048d89ee12a9
7480
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
7581
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
76-
path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5
77-
Sentry: 2f7e91f247cfb05b05bd01e0b5d0692557a7687b
78-
sentry_flutter: 7c3cb050dc23563a4ea5db438c83afdb460a2ae6
82+
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
83+
Sentry: 7bf9bfe713692cf87812e55f0999260494ba7982
84+
sentry_flutter: 77ccdac346608b8ce7e428e7284e7a3e4e7f4a02
7985
shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
8086
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
8187
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
8288
webview_flutter_wkwebview: 005fbd90c888a42c5690919a1527ecc6649e1162
8389

8490
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
8591

86-
COCOAPODS: 1.11.2
92+
COCOAPODS: 1.11.3

ios/Runner.xcodeproj/project.pbxproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
archiveVersion = 1;
44
classes = {
55
};
6-
objectVersion = 50;
6+
objectVersion = 51;
77
objects = {
88

99
/* Begin PBXBuildFile section */
@@ -113,7 +113,6 @@
113113
95D7E205EE04D01F6996ECFC /* Pods-Runner.release.xcconfig */,
114114
1282DADB4DD304DDC4BC6DDE /* Pods-Runner.profile.xcconfig */,
115115
);
116-
name = Pods;
117116
path = Pods;
118117
sourceTree = "<group>";
119118
};

ios/Runner/Info.plist

Lines changed: 53 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,56 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
33
<plist version="1.0">
4-
<dict>
5-
<key>CFBundleDevelopmentRegion</key>
6-
<string>$(DEVELOPMENT_LANGUAGE)</string>
7-
<key>CFBundleDisplayName</key>
8-
<string>Frosty</string>
9-
<key>CFBundleExecutable</key>
10-
<string>$(EXECUTABLE_NAME)</string>
11-
<key>CFBundleIdentifier</key>
12-
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
13-
<key>CFBundleInfoDictionaryVersion</key>
14-
<string>6.0</string>
15-
<key>CFBundleName</key>
16-
<string>frosty</string>
17-
<key>CFBundlePackageType</key>
18-
<string>APPL</string>
19-
<key>CFBundleShortVersionString</key>
20-
<string>$(FLUTTER_BUILD_NAME)</string>
21-
<key>CFBundleSignature</key>
22-
<string>????</string>
23-
<key>CFBundleVersion</key>
24-
<string>$(FLUTTER_BUILD_NUMBER)</string>
25-
<key>LSApplicationQueriesSchemes</key>
26-
<array>
27-
<string>https</string>
28-
<string>http</string>
29-
</array>
30-
<key>LSRequiresIPhoneOS</key>
31-
<true/>
32-
<key>UILaunchStoryboardName</key>
33-
<string>LaunchScreen</string>
34-
<key>UIMainStoryboardFile</key>
35-
<string>Main</string>
36-
<key>UISupportedInterfaceOrientations</key>
37-
<array>
38-
<string>UIInterfaceOrientationPortrait</string>
39-
<string>UIInterfaceOrientationLandscapeLeft</string>
40-
<string>UIInterfaceOrientationLandscapeRight</string>
41-
</array>
42-
<key>UISupportedInterfaceOrientations~ipad</key>
43-
<array>
44-
<string>UIInterfaceOrientationPortrait</string>
45-
<string>UIInterfaceOrientationPortraitUpsideDown</string>
46-
<string>UIInterfaceOrientationLandscapeLeft</string>
47-
<string>UIInterfaceOrientationLandscapeRight</string>
48-
</array>
49-
<key>UIViewControllerBasedStatusBarAppearance</key>
50-
<true/>
51-
<key>UIStatusBarHidden</key>
52-
<false/>
53-
</dict>
54-
</plist>
4+
<dict>
5+
<key>ITSAppUsesNonExemptEncryption</key>
6+
<false/>
7+
<key>CFBundleDevelopmentRegion</key>
8+
<string>$(DEVELOPMENT_LANGUAGE)</string>
9+
<key>CFBundleDisplayName</key>
10+
<string>Frosty</string>
11+
<key>CFBundleExecutable</key>
12+
<string>$(EXECUTABLE_NAME)</string>
13+
<key>CFBundleIdentifier</key>
14+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
15+
<key>CFBundleInfoDictionaryVersion</key>
16+
<string>6.0</string>
17+
<key>CFBundleName</key>
18+
<string>frosty</string>
19+
<key>CFBundlePackageType</key>
20+
<string>APPL</string>
21+
<key>CFBundleShortVersionString</key>
22+
<string>$(FLUTTER_BUILD_NAME)</string>
23+
<key>CFBundleSignature</key>
24+
<string>????</string>
25+
<key>CFBundleVersion</key>
26+
<string>$(FLUTTER_BUILD_NUMBER)</string>
27+
<key>LSApplicationQueriesSchemes</key>
28+
<array>
29+
<string>https</string>
30+
<string>http</string>
31+
</array>
32+
<key>LSRequiresIPhoneOS</key>
33+
<true/>
34+
<key>UILaunchStoryboardName</key>
35+
<string>LaunchScreen</string>
36+
<key>UIMainStoryboardFile</key>
37+
<string>Main</string>
38+
<key>UISupportedInterfaceOrientations</key>
39+
<array>
40+
<string>UIInterfaceOrientationPortrait</string>
41+
<string>UIInterfaceOrientationLandscapeLeft</string>
42+
<string>UIInterfaceOrientationLandscapeRight</string>
43+
</array>
44+
<key>UISupportedInterfaceOrientations~ipad</key>
45+
<array>
46+
<string>UIInterfaceOrientationPortrait</string>
47+
<string>UIInterfaceOrientationPortraitUpsideDown</string>
48+
<string>UIInterfaceOrientationLandscapeLeft</string>
49+
<string>UIInterfaceOrientationLandscapeRight</string>
50+
</array>
51+
<key>UIViewControllerBasedStatusBarAppearance</key>
52+
<true/>
53+
<key>UIStatusBarHidden</key>
54+
<false/>
55+
</dict>
56+
</plist>

lib/constants/constants.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ const sampleRate = 1.0;
99

1010
/// BTTV emotes with zero width to allow for overlaying other emotes.
1111
const zeroWidthEmotes = [
12-
"SoSnowy",
13-
"IceCold",
14-
"SantaHat",
15-
"TopHat",
16-
"ReinDeer",
17-
"CandyCane",
18-
"cvMask",
19-
"cvHazmat",
12+
'SoSnowy',
13+
'IceCold',
14+
'SantaHat',
15+
'TopHat',
16+
'ReinDeer',
17+
'CandyCane',
18+
'cvMask',
19+
'cvHazmat',
2020
];
2121

2222
// Regex for matching strings that contain lower or upper case English characters.

lib/core/user/user_store.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ abstract class _UserStoreBase with Store {
1717
@readonly
1818
var _blockedUsers = ObservableList<UserBlockedTwitch>();
1919

20-
late ReactionDisposer disposeReaction;
20+
ReactionDisposer? _disposeReaction;
2121

2222
_UserStoreBase({required this.twitchApi});
2323

@@ -29,7 +29,7 @@ abstract class _UserStoreBase with Store {
2929
// Get and update the current user's list of blocked users.
3030
if (_details?.id != null) _blockedUsers = (await twitchApi.getUserBlockedList(id: _details!.id, headers: headers)).asObservable();
3131

32-
disposeReaction = autorun((_) => _blockedUsers.sort((a, b) => a.userLogin.compareTo(b.userLogin)));
32+
_disposeReaction = autorun((_) => _blockedUsers.sort((a, b) => a.userLogin.compareTo(b.userLogin)));
3333
}
3434

3535
@action
@@ -57,6 +57,6 @@ abstract class _UserStoreBase with Store {
5757
void dispose() {
5858
_details = null;
5959
_blockedUsers.clear();
60-
disposeReaction();
60+
if (_disposeReaction != null) _disposeReaction!();
6161
}
6262
}

lib/models/emotes.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ class Emote {
299299
name: emote.name,
300300
width: emote.width.first,
301301
height: emote.height.first,
302-
zeroWidth: emote.visibilitySimple.isNotEmpty ? emote.visibilitySimple.first == "ZERO_WIDTH" : false,
302+
zeroWidth: emote.visibilitySimple.isNotEmpty ? emote.visibilitySimple.first == 'ZERO_WIDTH' : false,
303303
url: emote.urls[3][1],
304304
type: type,
305305
);

lib/models/irc.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ class IRCMessage {
319319
if (nextWordIsEmoji)
320320
Text(
321321
words[index],
322-
style: textStyle?.copyWith(fontSize: emoteHeight),
322+
style: textStyle?.copyWith(fontSize: emoteHeight - 5),
323323
),
324324
...emoteStack.reversed.map(
325325
(emote) => CachedNetworkImage(
@@ -344,11 +344,12 @@ class IRCMessage {
344344
child: Column(
345345
children: [
346346
Stack(
347+
alignment: AlignmentDirectional.center,
347348
children: [
348349
if (nextWordIsEmoji)
349350
Text(
350351
words[index],
351-
style: textStyle?.copyWith(fontSize: emoteHeight),
352+
style: textStyle?.copyWith(fontSize: 75),
352353
),
353354
...emoteStack.reversed.map(
354355
(emote) => CachedNetworkImage(
@@ -393,7 +394,7 @@ class IRCMessage {
393394
}
394395
} else {
395396
if (regexEmoji.hasMatch(word)) {
396-
localSpan.add(_createEmojiSpan(emoji: word, style: textStyle?.copyWith(fontSize: emoteHeight)));
397+
localSpan.add(_createEmojiSpan(emoji: word, style: textStyle?.copyWith(fontSize: emoteHeight - 5)));
397398
} else {
398399
localSpan.add(_createTextSpan(text: word, style: textStyle));
399400
}
@@ -419,7 +420,7 @@ class IRCMessage {
419420
);
420421
} else {
421422
if (regexEmoji.hasMatch(word)) {
422-
span.add(_createEmojiSpan(emoji: word, style: textStyle?.copyWith(fontSize: emoteHeight)));
423+
span.add(_createEmojiSpan(emoji: word, style: textStyle?.copyWith(fontSize: emoteHeight - 5)));
423424
} else {
424425
span.add(_createTextSpan(text: word, style: textStyle));
425426
}

lib/screens/channel/chat/emote_menu/emote_menu.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ class _EmoteMenuState extends State<EmoteMenu> {
2525
@override
2626
Widget build(BuildContext context) {
2727
const sections = [
28-
"Recent",
29-
"Twitch",
30-
"BTTV",
31-
"FFZ",
32-
"7TV",
28+
'Recent',
29+
'Twitch',
30+
'BTTV',
31+
'FFZ',
32+
'7TV',
3333
];
3434

3535
return Column(

0 commit comments

Comments
 (0)