Skip to content

Commit

Permalink
Merge branch 'release/2024-summer' into feature/separatingCameraScreen
Browse files Browse the repository at this point in the history
  • Loading branch information
AlphanoJack authored Aug 17, 2024
2 parents deac0c3 + 0b07daf commit 59cf52c
Show file tree
Hide file tree
Showing 24 changed files with 253 additions and 122 deletions.
43 changes: 21 additions & 22 deletions lib/core/TopScreen.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import 'package:blueberry_flutter_template/feature/post/PostScreen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';

import '../feature/admin/AdminUserListPage.dart';
import '../feature/login/LoginScreen.dart';
import '../feature/match/MatchScreen.dart';
import '../utils/AppStringEnglish.dart';

/// TopScreen.dart
///
Expand All @@ -15,26 +13,25 @@ import '../feature/match/MatchScreen.dart';
final selectedIndexProvider = StateProvider<int>((ref) => 0);

final List<String> routes = [
'/post',
'/match',
'/mypage',
'/admin',
];

class TopScreen extends ConsumerWidget {
static const String name = '/TopScreen';
static const String name = 'TopScreen';
final Widget child;

const TopScreen({super.key});
const TopScreen({super.key, required this.child});

@override
Widget build(BuildContext context, WidgetRef ref) {
final selectedIndex = ref.watch(selectedIndexProvider);

final List<Widget> pages = [
const PostScreen(),
const MatchScreen(),
const LoginScreen(),
const AdminUserListPage()
];

return Scaffold(
body: Center(
child: pages[selectedIndex],
),
body: child,
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
selectedIconTheme: const IconThemeData(color: Colors.black),
Expand All @@ -44,24 +41,26 @@ class TopScreen extends ConsumerWidget {
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.podcasts),
label: 'Post',
label: AppStringEnglish.postScreenLabel,
),
BottomNavigationBarItem(
icon: Icon(Icons.pets),
label: 'match',
label: AppStringEnglish.matchScreenLabel,
),
BottomNavigationBarItem(
icon: Icon(Icons.account_circle),
label: 'MyPage',
label: AppStringEnglish.myPageScreenLabel,
),
BottomNavigationBarItem(
icon: Icon(Icons.admin_panel_settings),
label: 'Admin',
label: AppStringEnglish.adminScreenLabel,
),
],
currentIndex: selectedIndex,
onTap: (index) =>
ref.read(selectedIndexProvider.notifier).state = index,
onTap: (index) {
ref.read(selectedIndexProvider.notifier).state = index;
context.go(routes[index]);
},
),
);
}
Expand Down
22 changes: 22 additions & 0 deletions lib/core/widget/SocialCompanyText.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:blueberry_flutter_template/feature/mypage/provider/MyPageSocialLoginCompany,dart.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

import '../../utils/AppStrings.dart';

class SocialCompanyTextWidget extends ConsumerWidget {
const SocialCompanyTextWidget({super.key});

@override
Widget build(BuildContext context, WidgetRef ref) {
final socialCompany = ref.watch(myPageSocialLoginCompanyProvider);
return socialCompany.when(
data: (name) => Text(
name,
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
loading: () => const Text(''),
error: (e, s) => const Text(AppStrings.nickNameTextWidgetError),
);
}
}
2 changes: 1 addition & 1 deletion lib/feature/login/LoginScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:go_router/go_router.dart';

import '../../core/widget/SquareTitleWidget.dart';
import '../../services/FirebaseAuthServiceProvider.dart';
import '../../services/SocialAuthService.dart';
import '../../services/socialauth/SocialAuthService.dart';
import '../../utils/AppStrings.dart';
import '../camera/CameraGalleryScreen.dart';
import '../camera/provider/PageProvider.dart';
Expand Down
3 changes: 3 additions & 0 deletions lib/feature/login/provider/UserInfoProvider.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:blueberry_flutter_template/model/UserDataModel.dart';
import 'package:blueberry_flutter_template/utils/AppStrings.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
Expand Down Expand Up @@ -64,6 +65,8 @@ final userInfoNotifierProvider =
mbti: 'NULL',
profileImageUrl: '',
isMemberShip: false,
socialLogin: false,
socialCompany: AppStrings.usingEmailLogin,
createdAt: DateTime.now(),
userClass: 'user',
likeGivens: [""])));
Expand Down
1 change: 1 addition & 0 deletions lib/feature/match/MatchScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'widget/MatchProfileListWidget.dart';
/// - SwipeButtonWidget: 수동으로 좌/우 스와이프를 할 수 있는 버튼
class MatchScreen extends StatelessWidget {
static const String name = 'MatchScreen';
const MatchScreen({super.key});

@override
Expand Down
3 changes: 2 additions & 1 deletion lib/feature/mypage/MyPageScreen.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'dart:io';
import 'package:blueberry_flutter_template/core/widget/SocialCompanyText.dart';
import 'package:blueberry_flutter_template/feature/mypage/provider/ProfileImageProvider.dart';
import 'package:cloud_functions/cloud_functions.dart';
import 'package:easy_engine/easy_engine.dart';
Expand Down Expand Up @@ -42,7 +43,7 @@ class MyPageScreen extends ConsumerWidget {
mainAxisAlignment: MainAxisAlignment.start,
children: [
NickNameTextWidget(),
Text("Google 로그인을 사용 중 입니다.")
SocialCompanyTextWidget(),
],
),
)
Expand Down
2 changes: 1 addition & 1 deletion lib/feature/mypage/provider/MyPageNameProvider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ final myPageNicknameProvider = StreamProvider<String>((ref) {
final userId = FirebaseAuth.instance.currentUser!.uid;

return firestore.collection('users').doc(userId).snapshots().map((snapshot) {
return snapshot['name'] as String;
return snapshot['nickName'] as String;
});
});
12 changes: 12 additions & 0 deletions lib/feature/mypage/provider/MyPageSocialLoginCompany,dart.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final myPageSocialLoginCompanyProvider = StreamProvider<String>((ref) {
final firestore = FirebaseFirestore.instance;
final userId = FirebaseAuth.instance.currentUser!.uid;

return firestore.collection('users').doc(userId).snapshots().map((snapshot) {
return snapshot['socialCompany'] as String;
});
});
2 changes: 2 additions & 0 deletions lib/feature/phoneauth/ConfirmationPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ class ConfirmationPage extends ConsumerWidget {
// 오류 뱉어내는거 하나 만들어야함 ex ) ID or Password 형식에 문제가 있다라고 쏴야할듯 ?
await firebaseService.upDateUserDB(email, name);
FirebaseAnalytics.instance.logSignUp(signUpMethod: 'email');
ref.invalidate(emailProvider);
ref.invalidate(passwordConfirmProvider);
if (context.mounted) {
context.goNamed(TopScreen.name);
}
Expand Down
1 change: 1 addition & 0 deletions lib/feature/post/PostScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import '../chat/ChatRoomScreen.dart';
import 'PostingScreen.dart';

class PostScreen extends StatelessWidget {
static const String name = 'PostScreen';
const PostScreen({super.key});

@override
Expand Down
2 changes: 2 additions & 0 deletions lib/feature/rank/provider/UserRankProvider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ Future<List<UserModel>> _fetchUsersFromFirestore() async {
isMemberShip: data['isMemberShip'] as bool,
profileImageUrl: data['profilePicture'] as String?,
createdAt: DateTime.parse(data['createdAt'] as String),
socialLogin: data['socialLogin'] as bool,
socialCompany: data['socialCompany'] as String,
mbti: data['mbti'] as String,
fcmToken: data['fcmToken'] as String?,
likeGivens: data["likeGivens"] as List<String>,
Expand Down
2 changes: 0 additions & 2 deletions lib/feature/signup/SignUpScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ class SignUpScreen extends ConsumerStatefulWidget {
class _SignUpScreenState extends ConsumerState<SignUpScreen> {
@override
Widget build(BuildContext context) {
ref.watch(emailProvider);
ref.watch(passwordConfirmProvider);
return Scaffold(
appBar: AppBar(
leading: IconButton(
Expand Down
4 changes: 2 additions & 2 deletions lib/feature/signup/provider/SignUpDataProviders.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// 이메일 인증 ( 아이디 )
import 'package:flutter_riverpod/flutter_riverpod.dart';

final emailProvider = StateProvider.autoDispose<String>((ref) => '');
final emailProvider = StateProvider<String>((ref) => '');
final emailVerificationCodeProvider = StateProvider<String>((ref) => '');

// 이름, 닉네임 생성
Expand All @@ -10,7 +10,7 @@ final nicknameProvider = StateProvider.autoDispose<String>((ref) => '');

// 비밀번호 생성
final passwordProvider = StateProvider.autoDispose<String>((ref) => '');
final passwordConfirmProvider = StateProvider.autoDispose<String>((ref) => '');
final passwordConfirmProvider = StateProvider<String>((ref) => '');

// 휴대폰 번호 인증 ( 구매할 때 휴대폰 인증 ) ( 따로 만들기 )
final residentRegistrationNumberProvider =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final emailDuplicateProvider =
StateNotifierProvider<EmailDuplicateNotifier, EmailDuplicateState>((ref) {
final emailDuplicateProvider = StateNotifierProvider.autoDispose<
EmailDuplicateNotifier, EmailDuplicateState>((ref) {
return EmailDuplicateNotifier();
});

Expand Down
7 changes: 6 additions & 1 deletion lib/gen/assets.gen.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import 'core/provider/ThemeProvider.dart';
import 'firebase_options.dart';
import 'utils/AppTheme.dart';
import 'utils/Talker.dart';
import 'package:url_strategy/url_strategy.dart';

Future<void> main() async {
runZonedGuarded(() async {
Expand All @@ -34,6 +35,8 @@ Future<void> main() async {
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
}

setPathUrlStrategy(); // Hash URL(#)을 제거하고 Path URL을 사용하도록 설정

runApp(const ProviderScope(
child: MyApp(),
));
Expand Down
27 changes: 14 additions & 13 deletions lib/model/UserModel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,20 @@ part 'generated/UserModel.g.dart';

@freezed
class UserModel with _$UserModel {
const factory UserModel({
required String userClass,
required String userId,
required String name,
required String email,
required int age,
required bool isMemberShip,
required String mbti,
required DateTime createdAt,
required List<String> likeGivens,
String? profileImageUrl,
String? fcmToken,
}) = _UserModel;
const factory UserModel(
{required String userClass,
required String userId,
required String name,
required String email,
required int age,
required bool isMemberShip,
required String mbti,
required DateTime createdAt,
required List<String> likeGivens,
String? profileImageUrl,
String? fcmToken,
required bool socialLogin,
required String socialCompany}) = _UserModel;

factory UserModel.fromJson(Map<String, dynamic> json) =>
_$UserModelFromJson(json);
Expand Down
Loading

0 comments on commit 59cf52c

Please sign in to comment.