diff --git a/.firebase/hosting.YnVpbGQvd2Vi.cache b/.firebase/hosting.YnVpbGQvd2Vi.cache index 030336b2..f4d83c9f 100644 --- a/.firebase/hosting.YnVpbGQvd2Vi.cache +++ b/.firebase/hosting.YnVpbGQvd2Vi.cache @@ -1,14 +1,15 @@ sqlite3.wasm,1741271571761,8e9753999ba85942d1a9a6c04be82ee46302f3a1f0aeba058a7bebae30841625 -manifest.json,1741334354549,d140e9b4ee89585110795b5694c8810100fa767bcaae0ccd87eff4c913d13ad5 -main.dart.js,1741607022628,8bf43807bc9004d23189f50db7c3d2c28525da836241aba25e0687755cd3ad99 -functions.js,1741606095420,1c05c6a75b8f0038c721fa77d561c915f634e3736e1414cf0927237bbdbceb4f +manifest.json,1742052616326,d140e9b4ee89585110795b5694c8810100fa767bcaae0ccd87eff4c913d13ad5 +main.dart.js,1742190209674,a3b8a795e9b34e847e39638e72a5560f5fa0c01c45de09238d9d02cf7de4e2a1 +functions.js,1742052626416,c1c285b00096d7fef7dd8c06d7613cb917b93a3038a83f9be2783cc251fdd25f flutter.js,1738903988000,8d47a0ef2a70705bf7e18df9c5148574acdff9bc412554b0784f1f46ba5918a4 -favicon.png,1738903832254,fcc7c4545d5b62ad01682589e6fdc7ea03d0a3b42069963c815c344b632eb5cf +firebase-messaging-sw.js,1742052626416,eedb577a90ce796089ee56fbe936247b155b7de5f3ba19d4717b71b4bad8c426 drift_worker.dart.js,1741271571758,06ac27c648f4e1b3d5f75980fd2ffd502e43ab8a36baafa6a85f2fd0f95b1367 +icons/android-chrome-512x512.png,1742163336000,ecea49f2fa9a08b5245e9f8e6d0a45fd5388508fc280fad141e53d1e9acefff4 icons/Icon-maskable-512.png,1738903832255,e7983524dc70254adc61764657d7e03d19284de8da586b5818d737bc08c6d14e icons/Icon-maskable-192.png,1738903832254,dd96c123fdf6817cdf7e63d9693bcc246bac2e3782a41a6952fa41c0617c5573 icons/Icon-512.png,1738903832254,7a31ce91e554f1941158ca46f31c7f3f2b7c8c129229ea74a8fae1affe335033 -icons/Icon-192.png,1738903832254,d2e0131bb7851eb9d98f7885edb5ae4b4d6b7a6c7addf8a25b9b712b39274c0f +icons/Icon-192.png,1742163336000,6d7ee72aa1c5ac35e5dd1ab12f907f6d8cecce25ff518884cea0a275fb090167 canvaskit/skwasm_st.wasm,1738904552000,669c860c596b623d7c98a6b4c60d2bcadc92d13ee78b7e565612eb7d2b96b04c canvaskit/skwasm_st.js.symbols,1738904552000,dbf1ecd2987907700e49fee8eef71967eaf756e205fb2e97cd9c4b239ab4c2e2 canvaskit/skwasm_st.js,1738904552000,5099d82713c753802530620e167e0f11fb72010175acb07527e54e55b725612d @@ -52,17 +53,16 @@ assets/assets/fonts/Pretendard-ExtraLight.ttf,1741271571702,bf25b1053065297c0cac assets/assets/fonts/Pretendard-ExtraBold.ttf,1741271571695,374f1cdec1c9872bfdabfc5049437dd6334dee93700538243ef573f3b735de04 assets/assets/fonts/Pretendard-Bold.ttf,1741271571690,2e40f7edb945eec3271f1e5cd938fe774adade44641e0715a89330354b8b5262 assets/assets/fonts/Pretendard-Black.ttf,1741271571685,d54873770d0faf69253bb90d4318993b837fd7b584833d375fb53fddf2182a57 -assets/assets/characters/onboarding_character.svg,1741271571680,d7423b05fd5c5682f721ee5e366f0092ea8fd13f1794770c47b53c4f33bfd86c -version.json,1741607900550,3fe66f58c7b0080dde159d39cc063691b0918161056f5a917bf3094372849e2f -index.html,1741607900210,e6a4c3648fae56c90d8af60cad7f33c7ddbbbf0692bc549fd3b1a1b01b84f1e0 -flutter_service_worker.js,1741607902208,304395399a0af87ad797407c05f35c59b04578f8a1fa9ca77c6cdcc449af8603 -firebase-messaging-sw.js,1741607895287,eedb577a90ce796089ee56fbe936247b155b7de5f3ba19d4717b71b4bad8c426 -assets/AssetManifest.bin,1741607900637,848d912e47b25284d97d790d3e271b0de0aa5d19e3efbb90e3f95567a858255b -assets/AssetManifest.json,1741607900637,aff3e6c632d817b41f7197c38d2adcb386ee097941919f4ec4ec9774038ceebf -assets/FontManifest.json,1741607900637,0c968932010df9e5202500a7acdd4f8448d421d4017ca6afaf4335c16dc951aa -flutter_bootstrap.js,1741607900206,d703da8e50a713f8a7aec30e94eaac31242943a0a9177cf5e0091f46adf47d01 -assets/packages/cupertino_icons/assets/CupertinoIcons.ttf,1741607901627,53de5ef48304000a5bae3a08f9499510850cbb032372063e82f1f1dcd938f395 -assets/AssetManifest.bin.json,1741607900637,f4c775243f2f51d0fddd7a5678c608288f7ad1985f861fcb331178b50ad031a3 -assets/shaders/ink_sparkle.frag,1741607900734,80c6e65c75f1de434b1b22dba61e96ad82dba0f2fc5e8b3b59c2def46d794354 -assets/fonts/MaterialIcons-Regular.otf,1741607901627,9fd6dfb402eb47d98919d5fc0b5ff7fdcca2d7e8c4b66fa69ac9cabcb6f18af7 -assets/NOTICES,1741607900640,efb01c5cd600fe3ae72b5c7b44733ac570e80f528e4c1d207b16684e33e5f51d +version.json,1742196629388,3fe66f58c7b0080dde159d39cc063691b0918161056f5a917bf3094372849e2f +flutter_service_worker.js,1742196631024,702f2111014a58322d9348ae1347dc422ca892fb10869084a933b44abe544abd +flutter_bootstrap.js,1742196629054,4bf591df5ab527696b57c069974925265ec05303160fb0cf04391d21433af517 +index.html,1742196629058,8e245a51242bf7295809eb2acfe4d385ac43314cda8f950a671efc732f2389dd +assets/AssetManifest.json,1742196629484,047af0ade8f084f8d59e40e9dd3c5a2d3e1ffa3de23d50f9d4c03c4ed3b77b09 +assets/FontManifest.json,1742196629484,0c968932010df9e5202500a7acdd4f8448d421d4017ca6afaf4335c16dc951aa +favicon.ico,1742163336000,f9a33e18c8eda1a025b8bc80736ac4cb93ff348dc42f1dd19d34eb30080e4c73 +assets/AssetManifest.bin.json,1742196629484,964cf7d6b415bb1842182a8a79ab9d021ad14962a7a139633bd47a1a872677c1 +assets/AssetManifest.bin,1742196629484,010317c335c67cd05018616bd643931078fc91a96de7ed76e5544fe7ccdfb195 +assets/shaders/ink_sparkle.frag,1742196629588,80c6e65c75f1de434b1b22dba61e96ad82dba0f2fc5e8b3b59c2def46d794354 +assets/fonts/MaterialIcons-Regular.otf,1742196630435,ca9df6f14a20e3b4e1ae7b7857f56b0563ab90564b04633477e4242f948dce70 +assets/packages/cupertino_icons/assets/CupertinoIcons.ttf,1742196630435,53de5ef48304000a5bae3a08f9499510850cbb032372063e82f1f1dcd938f395 +assets/NOTICES,1742196629484,efb01c5cd600fe3ae72b5c7b44733ac570e80f528e4c1d207b16684e33e5f51d diff --git a/lib/core/services/notification_request_service/notification_request_mobile_service.dart b/lib/core/services/notification_request_service/notification_request_mobile_service.dart new file mode 100644 index 00000000..ccb013e2 --- /dev/null +++ b/lib/core/services/notification_request_service/notification_request_mobile_service.dart @@ -0,0 +1,14 @@ +import 'package:firebase_messaging/firebase_messaging.dart'; + +Future requestNotificationPermission() { + final settings = FirebaseMessaging.instance.requestPermission( + alert: true, + badge: true, + sound: true, + provisional: false, + announcement: false, + carPlay: false, + criticalAlert: false, + ); + return settings.then((value) => value.authorizationStatus.toString()); +} diff --git a/lib/core/services/notification_request_service/notification_request_web_service.dart b/lib/core/services/notification_request_service/notification_request_web_service.dart new file mode 100644 index 00000000..03bdbe10 --- /dev/null +++ b/lib/core/services/notification_request_service/notification_request_web_service.dart @@ -0,0 +1,5 @@ +import 'package:on_time_front/core/services/js_interop_service.dart'; + +Future requestNotificationPermission() { + return JsInteropService.requestNotificationPermission(); +} diff --git a/lib/core/services/notification_request_service/shared.dart b/lib/core/services/notification_request_service/shared.dart new file mode 100644 index 00000000..1fed1f39 --- /dev/null +++ b/lib/core/services/notification_request_service/shared.dart @@ -0,0 +1,2 @@ +export 'notification_request_mobile_service.dart' + if (dart.library.html) 'notification_request_web_service.dart'; diff --git a/lib/core/services/notification_service.dart b/lib/core/services/notification_service.dart index 26ceb41e..624b017c 100644 --- a/lib/core/services/notification_service.dart +++ b/lib/core/services/notification_service.dart @@ -4,7 +4,7 @@ import 'package:flutter/foundation.dart' show kIsWeb; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; -import 'package:on_time_front/core/services/js_interop_service.dart'; +import 'package:on_time_front/core/services/notification_request_service/shared.dart'; @pragma('vm:entry-point') Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {} @@ -21,7 +21,8 @@ class NotificationService { FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); // Request permission - await _requestPermission(); + final String authorizationStatus = await requestNotificationPermission(); + print('Permission status: $authorizationStatus'); // Setup message handlers await _setupMessageHandlers(); @@ -36,25 +37,6 @@ class NotificationService { print('FCM Token: $token'); } - Future _requestPermission() async { - if (kIsWeb) { - final permission = await JsInteropService.requestNotificationPermission(); - print('Permission status: $permission'); - } else { - final settings = await _messaging.requestPermission( - alert: true, - badge: true, - sound: true, - provisional: false, - announcement: false, - carPlay: false, - criticalAlert: false, - ); - - print('Permission status: ${settings.authorizationStatus}'); - } - } - Future setupFlutterNotifications() async { if (_isFlutterLocalNotificationsInitialized) { return; diff --git a/lib/data/models/sign_in_with_google_request_model.dart b/lib/data/models/sign_in_with_google_request_model.dart index 9f5f0b96..aa309c27 100644 --- a/lib/data/models/sign_in_with_google_request_model.dart +++ b/lib/data/models/sign_in_with_google_request_model.dart @@ -4,15 +4,16 @@ part 'sign_in_with_google_request_model.g.dart'; @JsonSerializable() class SignInWithGoogleRequestModel { - final String accessToken; + final String idToken; SignInWithGoogleRequestModel({ - required this.accessToken, + required this.idToken, }); Map toJson() { return { - 'accessToken': accessToken, + 'idToken': idToken, + 'refreshToken': '', }; } } diff --git a/lib/data/repositories/user_repository_impl.dart b/lib/data/repositories/user_repository_impl.dart index 6601ad5e..56a8b7cd 100644 --- a/lib/data/repositories/user_repository_impl.dart +++ b/lib/data/repositories/user_repository_impl.dart @@ -12,10 +12,17 @@ import 'package:rxdart/subjects.dart'; class UserRepositoryImpl implements UserRepository { final AuthenticationRemoteDataSource _authenticationRemoteDataSource; final TokenLocalDataSource _tokenLocalDataSource; + final GoogleSignIn _googleSignIn = GoogleSignIn( + scopes: ['email', 'profile'], + forceCodeForRefreshToken: true, + ); late final _userStreamController = BehaviorSubject.seeded( const UserEntity.empty(), ); + @override + GoogleSignIn get googleSignIn => _googleSignIn; + UserRepositoryImpl( this._authenticationRemoteDataSource, this._tokenLocalDataSource) { _tokenLocalDataSource.authenticationStream.listen((state) { @@ -70,29 +77,23 @@ class UserRepositoryImpl implements UserRepository { } @override - Future signInWithGoogle() async { - final GoogleSignIn googleSignIn = - GoogleSignIn(scopes: ['email', 'profile']); + Future signInWithGoogle(GoogleSignInAccount googleUser) async { try { - final GoogleSignInAccount? googleUser = await googleSignIn.signIn(); - if (googleUser != null) { - final GoogleSignInAuthentication googleAuth = - await googleUser.authentication; - final String? accessToken = googleAuth.accessToken; - if (accessToken != null) { - final signInWithGoogleRequestModel = SignInWithGoogleRequestModel( - accessToken: accessToken, - ); - await _tokenLocalDataSource.deleteToken(); - final result = await _authenticationRemoteDataSource - .signInWithGoogle(signInWithGoogleRequestModel); - await _tokenLocalDataSource.storeTokens(result.$2); - _userStreamController.add(result.$1); - } else { - throw Exception('Access Token is null'); - } + final GoogleSignInAuthentication googleAuth = + await googleUser.authentication; + final String? idToken = googleAuth.idToken; + if (idToken != null) { + final signInWithGoogleRequestModel = SignInWithGoogleRequestModel( + idToken: idToken, + ); + print(idToken); + await _tokenLocalDataSource.deleteToken(); + final result = await _authenticationRemoteDataSource + .signInWithGoogle(signInWithGoogleRequestModel); + await _tokenLocalDataSource.storeTokens(result.$2); + _userStreamController.add(result.$1); } else { - throw Exception('Google User is null'); + throw Exception('Access Token is null'); } } catch (e) { debugPrint(e.toString()); diff --git a/lib/domain/repositories/user_repository.dart b/lib/domain/repositories/user_repository.dart index 0f63a377..4925a3a0 100644 --- a/lib/domain/repositories/user_repository.dart +++ b/lib/domain/repositories/user_repository.dart @@ -1,8 +1,11 @@ +import 'package:google_sign_in/google_sign_in.dart'; import 'package:on_time_front/domain/entities/user_entity.dart'; abstract interface class UserRepository { Stream get userStream; + GoogleSignIn get googleSignIn; + Future signUp( {required String email, required String password, required String name}); @@ -10,7 +13,7 @@ abstract interface class UserRepository { Future signOut(); - Future signInWithGoogle(); + Future signInWithGoogle(GoogleSignInAccount account); Future getUser(); } diff --git a/lib/main.dart b/lib/main.dart index 570aac3e..5f800185 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:on_time_front/core/constants/environment_variable.dart'; import 'package:on_time_front/core/di/di_setup.dart'; -import 'package:on_time_front/core/services/notification_service.dart'; import 'package:on_time_front/firebase_options.dart'; import 'package:on_time_front/presentation/app/screens/app.dart'; diff --git a/lib/presentation/login/components/google_sign_in_button/google_sign_in_button_mobile.dart b/lib/presentation/login/components/google_sign_in_button/google_sign_in_button_mobile.dart new file mode 100644 index 00000000..0c6a527e --- /dev/null +++ b/lib/presentation/login/components/google_sign_in_button/google_sign_in_button_mobile.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:on_time_front/core/di/di_setup.dart'; +import 'package:on_time_front/domain/repositories/user_repository.dart'; + +class GoogleSignInButton extends StatelessWidget { + GoogleSignInButton({super.key}); + + final Widget googleIconSvg = SvgPicture.asset( + 'assets/google_icon.svg', + semanticsLabel: 'Google Icon', + fit: BoxFit.contain, + ); + + @override + Widget build(BuildContext context) { + final UserRepository authenticationRepository = getIt.get(); + return GestureDetector( + onTap: () async { + try { + final googleAccout = + await authenticationRepository.googleSignIn.signIn(); + if (googleAccout == null) { + throw Exception('Google Sign In Failed, Sign In Accout is null'); + } + await authenticationRepository.signInWithGoogle(googleAccout); + } catch (e) { + debugPrint(e.toString()); + } + }, + child: Container( + width: 44, + height: 44, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + border: Border.all(color: Color(0xFF747775)), + boxShadow: [ + BoxShadow( + color: Colors.black26, + blurRadius: 2, + offset: Offset(0, 1), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(9.0), + child: googleIconSvg, + ), + ), + ); + } +} diff --git a/lib/presentation/login/components/google_sign_in_button/google_sign_in_button_web.dart b/lib/presentation/login/components/google_sign_in_button/google_sign_in_button_web.dart new file mode 100644 index 00000000..545176d1 --- /dev/null +++ b/lib/presentation/login/components/google_sign_in_button/google_sign_in_button_web.dart @@ -0,0 +1,31 @@ +import 'package:flutter/widgets.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:google_sign_in_web/web_only.dart'; +import 'package:on_time_front/core/di/di_setup.dart'; +import 'package:on_time_front/domain/repositories/user_repository.dart'; + +class GoogleSignInButton extends StatefulWidget { + const GoogleSignInButton({super.key}); + + @override + State createState() => _GoogleSignInButtonState(); +} + +class _GoogleSignInButtonState extends State { + final authenticationRepository = getIt.get(); + @override + void initState() { + authenticationRepository.googleSignIn.onCurrentUserChanged + .listen((GoogleSignInAccount? account) { + if (account != null) { + getIt.get().signInWithGoogle(account); + } + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return renderButton(); + } +} diff --git a/lib/presentation/login/components/google_sign_in_button/shared.dart b/lib/presentation/login/components/google_sign_in_button/shared.dart new file mode 100644 index 00000000..ab888f48 --- /dev/null +++ b/lib/presentation/login/components/google_sign_in_button/shared.dart @@ -0,0 +1,3 @@ +export 'unsupported.dart' + if (dart.library.html) 'google_sign_in_button_web.dart' + if (dart.library.io) 'google_sign_in_button_mobile.dart'; diff --git a/lib/presentation/login/components/google_sign_in_button/unsupported.dart b/lib/presentation/login/components/google_sign_in_button/unsupported.dart new file mode 100644 index 00000000..9c014e55 --- /dev/null +++ b/lib/presentation/login/components/google_sign_in_button/unsupported.dart @@ -0,0 +1,10 @@ +import 'package:flutter/widgets.dart'; + +class GoogleSignInButton extends StatelessWidget { + const GoogleSignInButton({super.key}); + + @override + Widget build(BuildContext context) { + return SizedBox.shrink(); + } +} diff --git a/lib/presentation/login/screens/sign_in_main_screen.dart b/lib/presentation/login/screens/sign_in_main_screen.dart index ae630c53..e77e4e2a 100644 --- a/lib/presentation/login/screens/sign_in_main_screen.dart +++ b/lib/presentation/login/screens/sign_in_main_screen.dart @@ -1,23 +1,43 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; +import 'package:google_sign_in/google_sign_in.dart'; import 'package:on_time_front/core/di/di_setup.dart'; import 'package:on_time_front/domain/repositories/user_repository.dart'; -class SignInMainScreen extends StatelessWidget { +import '../components/google_sign_in_button/shared.dart'; + +class SignInMainScreen extends StatefulWidget { const SignInMainScreen({super.key}); + @override + State createState() => _SignInMainScreenState(); +} + +class _SignInMainScreenState extends State { + GoogleSignIn googleSignIn = GoogleSignIn(); + + @override + void initState() { + googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount? account) { + if (account != null) { + getIt.get().signInWithGoogle(account); + } + }); + + super.initState(); + } + @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisSize: MainAxisSize.min, - children: const [ + children: [ _Title(), SizedBox(height: 24), _CharacterImage(), SizedBox(height: 24), - _SocialSignInButtonRow() + GoogleSignInButton(), ], ), ), @@ -58,60 +78,21 @@ class _CharacterImage extends StatelessWidget { } } -class _SocialSignInButtonRow extends StatelessWidget { - const _SocialSignInButtonRow(); - - @override - Widget build(BuildContext context) { - final UserRepository authenticationRepository = getIt.get(); - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - GoogleSignInButton( - onPressed: () async { - await authenticationRepository.signInWithGoogle(); - }, - ), - ], - ); - } -} - -class GoogleSignInButton extends StatelessWidget { - final VoidCallback onPressed; +// class _SocialSignInButtonRow extends StatelessWidget { +// const _SocialSignInButtonRow(); - GoogleSignInButton({super.key, required this.onPressed}); - - final Widget googleIconSvg = SvgPicture.asset( - 'assets/google_icon.svg', - semanticsLabel: 'Google Icon', - fit: BoxFit.contain, - ); - - @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: onPressed, - child: Container( - width: 44, - height: 44, - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(20), - border: Border.all(color: Color(0xFF747775)), - boxShadow: [ - BoxShadow( - color: Colors.black26, - blurRadius: 2, - offset: Offset(0, 1), - ), - ], - ), - child: Padding( - padding: const EdgeInsets.all(9.0), - child: googleIconSvg, - ), - ), - ); - } -} +// @override +// Widget build(BuildContext context) { +// final UserRepository authenticationRepository = getIt.get(); +// return Row( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// GoogleSignInButton( +// onPressed: () async { +// await authenticationRepository.signInWithGoogle(); +// }, +// ), +// ], +// ); +// } +// } diff --git a/pubspec.lock b/pubspec.lock index 5ad0521e..59976d7d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -667,28 +667,28 @@ packages: dependency: "direct main" description: name: google_sign_in - sha256: fad6ddc80c427b0bba705f2116204ce1173e09cf299f85e053d57a55e5b2dd56 + sha256: d0a2c3bcb06e607bb11e4daca48bd4b6120f0bbc4015ccebbe757d24ea60ed2a url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.0" google_sign_in_android: dependency: transitive description: name: google_sign_in_android - sha256: "7af72e5502c313865c729223b60e8ae7bce0a1011b250c24edcf30d3d7032748" + sha256: "4e52c64366bdb3fe758f683b088ee514cc7a95e69c52b5ee9fc5919e1683d21b" url: "https://pub.dev" source: hosted - version: "6.1.35" + version: "6.2.0" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "8468465516a6fdc283ffbbb06ec03a860ee34e9ff84b0454074978705b42379b" + sha256: "29cd125f58f50ceb40e8253d3c0209e321eee3e5df16cd6d262495f7cad6a2bd" url: "https://pub.dev" source: hosted - version: "5.8.0" + version: "5.8.1" google_sign_in_platform_interface: - dependency: transitive + dependency: "direct main" description: name: google_sign_in_platform_interface sha256: "5f6f79cf139c197261adb6ac024577518ae48fdff8e53205c5373b5f6430a8aa" @@ -696,13 +696,13 @@ packages: source: hosted version: "2.5.0" google_sign_in_web: - dependency: transitive + dependency: "direct main" description: name: google_sign_in_web - sha256: ada595df6c30cead48e66b1f3a050edf0c5cf2ba60c185d69690e08adcc6281b + sha256: "460547beb4962b7623ac0fb8122d6b8268c951cf0b646dd150d60498430e4ded" url: "https://pub.dev" source: hosted - version: "0.12.4+3" + version: "0.12.4+4" graphs: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a1701652..02f7257b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -52,7 +52,7 @@ dependencies: uuid: ^4.5.1 flutter_svg: ^2.0.14 - google_sign_in: ^6.2.2 + google_sign_in: ^6.3.0 kakao_flutter_sdk_user: ^1.9.6 http: ^1.2.2 url_launcher: ^6.3.1 @@ -76,6 +76,8 @@ dependencies: firebase_messaging: ^15.2.4 firebase_core: ^3.12.1 flutter_local_notifications: ^18.0.1 + google_sign_in_web: ^0.12.4+4 + google_sign_in_platform_interface: ^2.5.0 diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 00000000..672703dc Binary files /dev/null and b/web/favicon.ico differ diff --git a/web/favicon.png b/web/favicon.png deleted file mode 100644 index 8aaa46ac..00000000 Binary files a/web/favicon.png and /dev/null differ diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png index b749bfef..b94178d4 100644 Binary files a/web/icons/Icon-192.png and b/web/icons/Icon-192.png differ diff --git a/web/icons/android-chrome-192x192.png b/web/icons/android-chrome-192x192.png new file mode 100644 index 00000000..b94178d4 Binary files /dev/null and b/web/icons/android-chrome-192x192.png differ diff --git a/web/icons/android-chrome-512x512.png b/web/icons/android-chrome-512x512.png new file mode 100644 index 00000000..08f6373c Binary files /dev/null and b/web/icons/android-chrome-512x512.png differ diff --git a/web/index.html b/web/index.html index 60699fd6..fc5e20ab 100644 --- a/web/index.html +++ b/web/index.html @@ -23,6 +23,8 @@ + + @@ -32,7 +34,8 @@ - + + on_time_front @@ -49,6 +52,7 @@ }); } + diff --git a/widgetbook/linux/flutter/generated_plugin_registrant.cc b/widgetbook/linux/flutter/generated_plugin_registrant.cc index 72164139..a35cce61 100644 --- a/widgetbook/linux/flutter/generated_plugin_registrant.cc +++ b/widgetbook/linux/flutter/generated_plugin_registrant.cc @@ -6,15 +6,11 @@ #include "generated_plugin_registrant.h" -#include #include #include #include void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) flutter_js_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterJsPlugin"); - flutter_js_plugin_register_with_registrar(flutter_js_registrar); g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); diff --git a/widgetbook/linux/flutter/generated_plugins.cmake b/widgetbook/linux/flutter/generated_plugins.cmake index d686577e..2aa89bb0 100644 --- a/widgetbook/linux/flutter/generated_plugins.cmake +++ b/widgetbook/linux/flutter/generated_plugins.cmake @@ -3,7 +3,6 @@ # list(APPEND FLUTTER_PLUGIN_LIST - flutter_js flutter_secure_storage_linux sqlite3_flutter_libs url_launcher_linux diff --git a/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift b/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift index 3c9b1790..dc3be9f8 100644 --- a/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/widgetbook/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,7 +8,7 @@ import Foundation import firebase_core import firebase_messaging import flutter_appauth -import flutter_js +import flutter_local_notifications import flutter_secure_storage_macos import flutter_web_auth import google_sign_in_ios @@ -22,7 +22,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FlutterAppauthPlugin.register(with: registry.registrar(forPlugin: "FlutterAppauthPlugin")) - FlutterJsPlugin.register(with: registry.registrar(forPlugin: "FlutterJsPlugin")) + FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FlutterWebAuthPlugin.register(with: registry.registrar(forPlugin: "FlutterWebAuthPlugin")) FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) diff --git a/widgetbook/pubspec.lock b/widgetbook/pubspec.lock index 452a5dab..6c3221fd 100644 --- a/widgetbook/pubspec.lock +++ b/widgetbook/pubspec.lock @@ -216,6 +216,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + dbus: + dependency: transitive + description: + name: dbus + sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" + url: "https://pub.dev" + source: hosted + version: "0.7.11" device_frame: dependency: transitive description: @@ -389,14 +397,6 @@ packages: url: "https://pub.dev" source: hosted version: "9.1.0" - flutter_js: - dependency: transitive - description: - name: flutter_js - sha256: "6b777cd4e468546f046a2f114d078a4596143269f6fa6bad5c29611d5b896369" - url: "https://pub.dev" - source: hosted - version: "0.8.2" flutter_lints: dependency: "direct dev" description: @@ -405,6 +405,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + flutter_local_notifications: + dependency: transitive + description: + name: flutter_local_notifications + sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 + url: "https://pub.dev" + source: hosted + version: "18.0.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" + url: "https://pub.dev" + source: hosted + version: "8.0.0" flutter_riverpod: dependency: transitive description: @@ -563,26 +587,26 @@ packages: dependency: transitive description: name: google_sign_in - sha256: fad6ddc80c427b0bba705f2116204ce1173e09cf299f85e053d57a55e5b2dd56 + sha256: d0a2c3bcb06e607bb11e4daca48bd4b6120f0bbc4015ccebbe757d24ea60ed2a url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.0" google_sign_in_android: dependency: transitive description: name: google_sign_in_android - sha256: "7af72e5502c313865c729223b60e8ae7bce0a1011b250c24edcf30d3d7032748" + sha256: "4e52c64366bdb3fe758f683b088ee514cc7a95e69c52b5ee9fc5919e1683d21b" url: "https://pub.dev" source: hosted - version: "6.1.35" + version: "6.2.0" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "8468465516a6fdc283ffbbb06ec03a860ee34e9ff84b0454074978705b42379b" + sha256: "29cd125f58f50ceb40e8253d3c0209e321eee3e5df16cd6d262495f7cad6a2bd" url: "https://pub.dev" source: hosted - version: "5.8.0" + version: "5.8.1" google_sign_in_platform_interface: dependency: transitive description: @@ -595,10 +619,10 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: ada595df6c30cead48e66b1f3a050edf0c5cf2ba60c185d69690e08adcc6281b + sha256: "460547beb4962b7623ac0fb8122d6b8268c951cf0b646dd150d60498430e4ded" url: "https://pub.dev" source: hosted - version: "0.12.4+3" + version: "0.12.4+4" graphs: dependency: transitive description: @@ -1179,14 +1203,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" - sync_http: - dependency: transitive - description: - name: sync_http - sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" - url: "https://pub.dev" - source: hosted - version: "0.3.1" table_calendar: dependency: transitive description: @@ -1211,6 +1227,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.4" + timezone: + dependency: transitive + description: + name: timezone + sha256: ffc9d5f4d1193534ef051f9254063fa53d588609418c84299956c3db9383587d + url: "https://pub.dev" + source: hosted + version: "0.10.0" timing: dependency: transitive description: diff --git a/widgetbook/windows/flutter/generated_plugin_registrant.cc b/widgetbook/windows/flutter/generated_plugin_registrant.cc index d5e562d7..aa588b48 100644 --- a/widgetbook/windows/flutter/generated_plugin_registrant.cc +++ b/widgetbook/windows/flutter/generated_plugin_registrant.cc @@ -7,7 +7,6 @@ #include "generated_plugin_registrant.h" #include -#include #include #include #include @@ -15,8 +14,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { FirebaseCorePluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); - FlutterJsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FlutterJsPlugin")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); Sqlite3FlutterLibsPluginRegisterWithRegistrar( diff --git a/widgetbook/windows/flutter/generated_plugins.cmake b/widgetbook/windows/flutter/generated_plugins.cmake index 4e45dad5..6967ac89 100644 --- a/widgetbook/windows/flutter/generated_plugins.cmake +++ b/widgetbook/windows/flutter/generated_plugins.cmake @@ -4,7 +4,6 @@ list(APPEND FLUTTER_PLUGIN_LIST firebase_core - flutter_js flutter_secure_storage_windows sqlite3_flutter_libs url_launcher_windows