Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Apps Against Humanity
# Apps Against ~Humanity~ Fellowships
_Working title for 'rebrand'. The idea is to shift to a build-your-own-cards kinds of layout where users can create/import their own card sets and share them on a 'marketplace' where you can download any shared cardset. This would allow us to further de-couple the Cards Against Humanity cards and branding to better comply with the app store reviews_

A Flutter Cards Against Humanity app for Android, iOS, and Web

Expand Down
9 changes: 4 additions & 5 deletions lib/data/features/users/user_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:appsagainsthumanity/data/features/users/model/user.dart';
import 'package:appsagainsthumanity/data/firestore.dart';
import 'package:appsagainsthumanity/internal/push.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:cloud_functions/cloud_functions.dart';
// import 'package:cloud_functions/cloud_functions.dart';
import 'package:firebase_auth/firebase_auth.dart' as fb;
import 'package:firebase_storage/firebase_storage.dart';
import 'package:google_sign_in/google_sign_in.dart';
Expand Down Expand Up @@ -146,7 +146,8 @@ class UserRepository {
name = result.givenName;
}

final fb.UserCredential _result = await _auth.signInWithCredential(credential);
final fb.UserCredential _result =
await _auth.signInWithCredential(credential);
return _finishSigningInWithResult(_result, name: name);
}

Expand Down Expand Up @@ -206,9 +207,7 @@ class UserRepository {
}

DocumentReference _userDocument(fb.User user) {
return _db
.collection(FirebaseConstants.COLLECTION_USERS)
.doc(user.uid);
return _db.collection(FirebaseConstants.COLLECTION_USERS).doc(user.uid);
}

Reference _profilePhotoReference(fb.User user) {
Expand Down
12 changes: 7 additions & 5 deletions lib/internal/push.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import 'package:appsagainsthumanity/data/features/game/game_repository.dart';
import 'package:appsagainsthumanity/data/features/game/model/turn.dart';
import 'package:appsagainsthumanity/internal/dynamic_links.dart';
import 'package:appsagainsthumanity/ui/routes.dart';
import 'package:appsagainsthumanity/internal.dart';
// import 'package:appsagainsthumanity/internal.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
// import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:logging/logging.dart';

Expand Down Expand Up @@ -45,7 +45,8 @@ class PushNotifications {
Future<void> checkAndUpdateToken({bool force = false}) async {
String token = await _firebaseMessaging.getToken();
if (token != AppPreferences().pushToken || force) {
Logger.root.fine("FCM Token is different from what is stored in preferences, updating device...");
Logger.root.fine(
"FCM Token is different from what is stored in preferences, updating device...");
DeviceRepository().updatePushToken(token);
}
}
Expand Down Expand Up @@ -74,7 +75,8 @@ class _PushNavigatorState extends State<PushNavigator> {
});

/// let's go ahead and sign up here to handle dynamic links
DynamicLinks.initDynamicLinks(context, (gameId) => navigateToGame(gameId, andJoin: true));
DynamicLinks.initDynamicLinks(
context, (gameId) => navigateToGame(gameId, andJoin: true));
}

@override
Expand Down Expand Up @@ -126,7 +128,7 @@ class _PushNavigatorState extends State<PushNavigator> {
..push(GamePageRoute(game));
}
} else {
print("Unable to join the Game($gameId)");
print("Unable to join the Game($gameId)");
}
} catch (e) {
print(e);
Expand Down
285 changes: 141 additions & 144 deletions lib/internal/theme.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,170 +2,167 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

class AppColors {
AppColors._();
AppColors._();

static const primary = Color(0xFFAB47BC);
static const primaryDark = Color(0xFF790e8b);
static const primaryVariant = Color(0xFFdf78ef);
static const colorOnPrimary = Color(0xFFFFFFFF);
static const colorOnPrimaryVariant = Color(0xDD000000);
static const primary = Color(0xFFAB47BC);
static const primaryDark = Color(0xFF790e8b);
static const primaryVariant = Color(0xFFdf78ef);
static const colorOnPrimary = Color(0xFFFFFFFF);
static const colorOnPrimaryVariant = Color(0xDD000000);

static const secondary = Color(0xFF00BCD4);
static const secondaryLight = Color(0xFF80DEEA);
static const secondaryDark = Color(0xFF006064);
static const secondary = Color(0xFF00BCD4);
static const secondaryLight = Color(0xFF80DEEA);
static const secondaryDark = Color(0xFF006064);

static const surface = Color(0xFF3C3C3C);
static const surfaceLight = Color(0xFF4F4F4F);
static const surfaceDark = Color(0xFF303030);
static const responseCardBackground = Color(0xFFF2F2F2);
static const surface = Color(0xFF3C3C3C);
static const surfaceLight = Color(0xFF4F4F4F);
static const surfaceDark = Color(0xFF303030);
static const responseCardBackground = Color(0xFFF2F2F2);

static const error = Color(0xFFFF5252);
static const error = Color(0xFFFF5252);

static const addPhotoBackground = Color(0xFF666666);
static const addPhotoForeground = Colors.white70;
static const addPhotoBackground = Color(0xFF666666);
static const addPhotoForeground = Colors.white70;
}

class AppThemes {
AppThemes._();

static ThemeData get light {
final textTheme = Typography.material2018(platform: defaultTargetPlatform).white;
return ThemeData(
brightness: Brightness.light,
primaryColor: AppColors.primary,
primaryColorDark: AppColors.primaryDark,
primaryColorLight: AppColors.primaryVariant,
accentColor: AppColors.primary,
canvasColor: AppColors.surface,
cardColor: Colors.white,
textTheme: textTheme,
iconTheme: const IconThemeData(color: Colors.white),
disabledColor: Colors.white38,
unselectedWidgetColor: Colors.white70,
dialogBackgroundColor: Colors.grey[700],
appBarTheme: AppBarTheme(
color: AppColors.surfaceDark
),
snackBarTheme: SnackBarThemeData(
backgroundColor: AppColors.surfaceLight,
contentTextStyle: textTheme.subtitle1,
actionTextColor: AppColors.primary,
disabledActionTextColor: Colors.white30,
),
bottomAppBarColor: AppColors.surfaceDark,
);
}

static ThemeData get dark =>
ThemeData(
brightness: Brightness.dark,
primaryColor: AppColors.primaryVariant,
primaryColorDark: AppColors.primaryDark,
primaryColorLight: AppColors.primaryVariant,
floatingActionButtonTheme: FloatingActionButtonThemeData(
foregroundColor: Colors.white
),
accentColor: AppColors.primaryVariant,
cardColor: Colors.grey[700],
appBarTheme: AppBarTheme(
color: AppColors.surface
),
snackBarTheme: SnackBarThemeData(
backgroundColor: AppColors.surfaceDark,
contentTextStyle: Typography.material2018(platform: defaultTargetPlatform).white.subtitle1,
actionTextColor: AppColors.primary,
disabledActionTextColor: Colors.white30,
),
bottomAppBarColor: AppColors.surface,
);
AppThemes._();

static ThemeData get light {
final textTheme =
Typography.material2018(platform: defaultTargetPlatform).white;
return ThemeData(
brightness: Brightness.light,
primaryColor: AppColors.primary,
primaryColorDark: AppColors.primaryDark,
primaryColorLight: AppColors.primaryVariant,
accentColor: AppColors.primary,
canvasColor: AppColors.surface,
cardColor: Colors.white,
textTheme: textTheme,
iconTheme: const IconThemeData(color: Colors.white),
disabledColor: Colors.white38,
unselectedWidgetColor: Colors.white70,
dialogBackgroundColor: Colors.grey[700],
appBarTheme: AppBarTheme(color: AppColors.surfaceDark),
snackBarTheme: SnackBarThemeData(
backgroundColor: AppColors.surfaceLight,
contentTextStyle: textTheme.subtitle1,
// actionstyle: TextButton.styleFrom(
// primary: AppColors.primary,
// ),
disabledActionTextColor: Colors.white30,
),
bottomAppBarColor: AppColors.surfaceDark,
);
}

static ThemeData get dark => ThemeData(
brightness: Brightness.dark,
primaryColor: AppColors.primaryVariant,
primaryColorDark: AppColors.primaryDark,
primaryColorLight: AppColors.primaryVariant,
floatingActionButtonTheme:
FloatingActionButtonThemeData(foregroundColor: Colors.white),
accentColor: AppColors.primaryVariant,
cardColor: Colors.grey[700],
appBarTheme: AppBarTheme(color: AppColors.surface),
snackBarTheme: SnackBarThemeData(
backgroundColor: AppColors.surfaceDark,
contentTextStyle:
Typography.material2018(platform: defaultTargetPlatform)
.white
.subtitle1,
// actionstyle: TextButton.styleFrom(
// primary: AppColors.primary,
// ),
disabledActionTextColor: Colors.white30,
),
bottomAppBarColor: AppColors.surface,
);
}

extension TextAppearanceExt on BuildContext {

TextStyle cardTextStyle(Color textColor) {
final base = theme.textTheme.headline5;
final screenWidth = MediaQuery.of(this).size.width;

double fontSize = base.fontSize;
if (screenWidth > 360 && screenWidth <= 400) {
fontSize = 20.0; // Headline 6 Size
} else if (screenWidth > 300 && screenWidth <= 360) {
fontSize = 18.0; // Subtitle 1
} else if (screenWidth <= 300) {
fontSize = 16.0;
}

return base.copyWith(
color: textColor,
fontSize: fontSize
);
TextStyle cardTextStyle(Color textColor) {
final base = theme.textTheme.headline5;
final screenWidth = MediaQuery.of(this).size.width;

double fontSize = base.fontSize;
if (screenWidth > 360 && screenWidth <= 400) {
fontSize = 20.0; // Headline 6 Size
} else if (screenWidth > 300 && screenWidth <= 360) {
fontSize = 18.0; // Subtitle 1
} else if (screenWidth <= 300) {
fontSize = 16.0;
}

return base.copyWith(color: textColor, fontSize: fontSize);
}
}

extension ThemeExt on BuildContext {

ThemeData get theme => Theme.of(this);

Color get primaryColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return AppColors.primaryVariant;
} else {
return AppColors.primary;
}
ThemeData get theme => Theme.of(this);

Color get primaryColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return AppColors.primaryVariant;
} else {
return AppColors.primary;
}

Color get colorOnCard {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white;
} else {
return Colors.black87;
}
}

Color get colorOnCard {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white;
} else {
return Colors.black87;
}

Color get secondaryColorOnCard {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white54;
} else {
return Colors.black38;
}
}

Color get secondaryColorOnCard {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white54;
} else {
return Colors.black38;
}

Color get tertiaryColorOnCard {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white38;
} else {
return Colors.black26;
}
}

Color get tertiaryColorOnCard {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white38;
} else {
return Colors.black26;
}

Color get responseCardColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.grey[600];
} else {
return AppColors.responseCardBackground;
}
}

Color get responseCardColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.grey[600];
} else {
return AppColors.responseCardBackground;
}

Color get responseCardHandColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.grey[500];
} else {
return AppColors.responseCardBackground;
}
}

Color get responseCardHandColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.grey[500];
} else {
return AppColors.responseCardBackground;
}

Color get responseBorderColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white12;
} else {
return Colors.black12;
}
}

Color get responseBorderColor {
var brightness = theme.brightness;
if (brightness == Brightness.dark) {
return Colors.white12;
} else {
return Colors.black12;
}
}
}
Loading