Skip to content

Commit 7523b50

Browse files
authored
fix: 필요 없는 코드 수정 (#16)
* fix: 필요 없는 코드 수정
1 parent 588d6a9 commit 7523b50

File tree

12 files changed

+298
-153
lines changed

12 files changed

+298
-153
lines changed

frontend/ongi/lib/screens/signup/familycode_create_screen.dart

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
22
import 'package:ongi/core/app_colors.dart';
33
import 'package:ongi/screens/signup/ready_screen.dart';
44
import 'package:shared_preferences/shared_preferences.dart';
5-
import 'package:ongi/services/auth_service.dart';
5+
import 'package:ongi/services/code_service.dart';
66

77
class FamilycodeCreateScreen extends StatefulWidget {
88
const FamilycodeCreateScreen({super.key});
@@ -13,44 +13,38 @@ class FamilycodeCreateScreen extends StatefulWidget {
1313

1414
class _FamilycodeCreateScreenState extends State<FamilycodeCreateScreen> {
1515
final TextEditingController _familycodeCtrl = TextEditingController();
16+
bool _isCodeGenerated = false;
1617

1718
Future<void> _handleSubmit() async {
18-
final familyCode = _familycodeCtrl.text.trim();
19-
19+
if (_isCodeGenerated) {
20+
Navigator.push(
21+
context,
22+
MaterialPageRoute(builder: (context) => const ReadyScreen()),
23+
);
24+
return;
25+
}
2026

2127
try {
2228
final prefs = await SharedPreferences.getInstance();
23-
final email = prefs.getString('signup_email') ?? '';
24-
final password = prefs.getString('signup_password') ?? '';
25-
final name = prefs.getString('signup_username') ?? '';
26-
final isParent = prefs.getString('user_mode') == 'parent';
29+
final familyName = prefs.getString('family_name') ?? '';
30+
31+
final codeService = CodeService();
32+
final response = await codeService.familyCreate(name: familyName);
2733

28-
if (email.isEmpty || password.isEmpty || name.isEmpty) {
34+
final code = response['code'];
35+
if (code != null) {
36+
setState(() {
37+
_familycodeCtrl.text = code;
38+
_isCodeGenerated = true;
39+
});
40+
} else {
2941
ScaffoldMessenger.of(context).showSnackBar(
30-
const SnackBar(content: Text('회원가입 정보가 올바르지 않습니다')),
42+
const SnackBar(content: Text('코드 생성에 실패했습니다.')),
3143
);
32-
return;
3344
}
34-
35-
final authService = AuthService();
36-
await authService.register(
37-
email: email,
38-
password: password,
39-
name: name,
40-
isParent: isParent,
41-
);
42-
43-
// 회원가입 성공 후 준비 완료 화면으로 이동
44-
if (!mounted) return;
45-
Navigator.push(
46-
context,
47-
MaterialPageRoute(
48-
builder: (context) => const ReadyScreen(),
49-
),
50-
);
5145
} catch (e) {
5246
ScaffoldMessenger.of(context).showSnackBar(
53-
SnackBar(content: Text('회원가입 실패: $e')),
47+
SnackBar(content: Text('코드 생성 실패: $e')),
5448
);
5549
}
5650
}
@@ -116,6 +110,7 @@ class _FamilycodeCreateScreenState extends State<FamilycodeCreateScreen> {
116110
padding: const EdgeInsets.only(left: 40, right: 40, top: 40),
117111
child: TextField(
118112
controller: _familycodeCtrl,
113+
readOnly: true,
119114
keyboardType: TextInputType.text,
120115
style: const TextStyle(
121116
fontSize: 25,
@@ -159,9 +154,9 @@ class _FamilycodeCreateScreenState extends State<FamilycodeCreateScreen> {
159154
),
160155
),
161156
onPressed: _handleSubmit,
162-
child: const Text(
163-
'생성하기',
164-
style: TextStyle(
157+
child: Text(
158+
_isCodeGenerated ? '함께하기' : '생성하기',
159+
style: const TextStyle(
165160
fontSize: 33,
166161
fontWeight: FontWeight.w400,
167162
color: Colors.white,

frontend/ongi/lib/screens/signup/familycode_screen.dart

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:ongi/core/app_colors.dart';
33
import 'package:ongi/screens/signup/ready_screen.dart';
4-
import 'package:shared_preferences/shared_preferences.dart';
5-
import 'package:ongi/services/auth_service.dart';
4+
import 'package:ongi/services/family_join_service.dart';
65

76
class FamilycodeScreen extends StatefulWidget {
87
const FamilycodeScreen({super.key});
@@ -13,50 +12,49 @@ class FamilycodeScreen extends StatefulWidget {
1312

1413
class _FamilycodeScreenState extends State<FamilycodeScreen> {
1514
final TextEditingController _familycodeCtrl = TextEditingController();
15+
final FamilyJoinService _familyJoinService = FamilyJoinService();
16+
bool _isLoading = false;
17+
18+
void _showErrorSnackBar(String message) {
19+
ScaffoldMessenger.of(context).showSnackBar(
20+
SnackBar(
21+
content: Text(
22+
message,
23+
style: const TextStyle(color: AppColors.ongiOrange),
24+
),
25+
backgroundColor: Colors.white,
26+
behavior: SnackBarBehavior.floating,
27+
shape: RoundedRectangleBorder(
28+
borderRadius: BorderRadius.circular(20),
29+
),
30+
duration: const Duration(seconds: 2),
31+
),
32+
);
33+
}
1634

1735
Future<void> _handleSubmit() async {
1836
final familyCode = _familycodeCtrl.text.trim();
1937
if (familyCode.isEmpty) {
20-
ScaffoldMessenger.of(context).showSnackBar(
21-
const SnackBar(content: Text('가족 코드를 입력해주세요')),
22-
);
38+
_showErrorSnackBar('가족코드를 입력해주세요.');
2339
return;
2440
}
2541

26-
try {
27-
final prefs = await SharedPreferences.getInstance();
28-
final email = prefs.getString('signup_email') ?? '';
29-
final password = prefs.getString('signup_password') ?? '';
30-
final name = prefs.getString('signup_username') ?? '';
31-
final isParent = prefs.getString('user_mode') == 'parent';
32-
33-
if (email.isEmpty || password.isEmpty || name.isEmpty) {
34-
ScaffoldMessenger.of(context).showSnackBar(
35-
const SnackBar(content: Text('회원가입 정보가 올바르지 않습니다')),
36-
);
37-
return;
38-
}
42+
setState(() {
43+
_isLoading = true;
44+
});
3945

40-
final authService = AuthService();
41-
await authService.register(
42-
email: email,
43-
password: password,
44-
name: name,
45-
isParent: isParent,
46-
);
47-
48-
// 회원가입 성공 후 준비 완료 화면으로 이동
49-
if (!mounted) return;
50-
Navigator.push(
46+
try {
47+
final result = await _familyJoinService.familyJoin(code: familyCode);
48+
Navigator.pushReplacement(
5149
context,
52-
MaterialPageRoute(
53-
builder: (context) => const ReadyScreen(),
54-
),
50+
MaterialPageRoute(builder: (context) => const ReadyScreen()),
5551
);
5652
} catch (e) {
57-
ScaffoldMessenger.of(context).showSnackBar(
58-
SnackBar(content: Text('회원가입 실패: $e')),
59-
);
53+
_showErrorSnackBar('존재하지 않는 가족이에요.');
54+
} finally {
55+
setState(() {
56+
_isLoading = false;
57+
});
6058
}
6159
}
6260

@@ -163,15 +161,17 @@ class _FamilycodeScreenState extends State<FamilycodeScreen> {
163161
borderRadius: BorderRadius.circular(20),
164162
),
165163
),
166-
onPressed: _handleSubmit,
167-
child: const Text(
168-
'입력하기',
169-
style: TextStyle(
170-
fontSize: 33,
171-
fontWeight: FontWeight.w400,
172-
color: Colors.white,
173-
),
174-
),
164+
onPressed: _isLoading ? null : _handleSubmit,
165+
child: _isLoading
166+
? const CircularProgressIndicator(color: AppColors.ongiOrange)
167+
: const Text(
168+
'입력하기',
169+
style: TextStyle(
170+
fontSize: 33,
171+
fontWeight: FontWeight.w400,
172+
color: Colors.white,
173+
),
174+
),
175175
),
176176
),
177177
),

frontend/ongi/lib/screens/signup/familyname_screen.dart

Lines changed: 15 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import 'package:ongi/core/app_colors.dart';
33
import 'package:ongi/screens/signup/familycode_screen.dart';
44
import 'package:ongi/screens/signup/familycode_create_screen.dart';
55
import 'package:shared_preferences/shared_preferences.dart';
6-
import 'package:ongi/services/auth_service.dart';
76

87
class FamilynameScreen extends StatefulWidget {
98
const FamilynameScreen({super.key});
@@ -20,32 +19,25 @@ class _FamilynameScreenState extends State<FamilynameScreen> {
2019
final familyName = _familynameCtrl.text.trim();
2120
if (familyName.isEmpty) {
2221
ScaffoldMessenger.of(context).showSnackBar(
23-
const SnackBar(content: Text('가족 이름을 입력해주세요')),
22+
SnackBar(
23+
content: const Text(
24+
'가족이름을 입력해주세요.',
25+
style: TextStyle(color: AppColors.ongiOrange),
26+
),
27+
backgroundColor: Colors.white,
28+
behavior: SnackBarBehavior.floating,
29+
shape: RoundedRectangleBorder(
30+
borderRadius: BorderRadius.circular(20),
31+
),
32+
duration: const Duration(seconds: 2),
33+
),
2434
);
2535
return;
2636
}
2737

2838
try {
2939
final prefs = await SharedPreferences.getInstance();
30-
final email = prefs.getString('signup_email') ?? '';
31-
final password = prefs.getString('signup_password') ?? '';
32-
final name = prefs.getString('signup_username') ?? '';
33-
final isParent = prefs.getString('user_mode') == 'parent';
34-
35-
if (email.isEmpty || password.isEmpty || name.isEmpty) {
36-
ScaffoldMessenger.of(context).showSnackBar(
37-
const SnackBar(content: Text('회원가입 정보가 올바르지 않습니다')),
38-
);
39-
return;
40-
}
41-
42-
final authService = AuthService();
43-
await authService.register(
44-
email: email,
45-
password: password,
46-
name: name,
47-
isParent: isParent,
48-
);
40+
await prefs.setString('family_name', familyName);
4941

5042
if (!mounted) return;
5143
Navigator.push(
@@ -56,7 +48,7 @@ class _FamilynameScreenState extends State<FamilynameScreen> {
5648
);
5749
} catch (e) {
5850
ScaffoldMessenger.of(context).showSnackBar(
59-
SnackBar(content: Text('회원가입 실패: $e')),
51+
SnackBar(content: Text('오류가 발생했습니다: $e')),
6052
);
6153
}
6254
}
@@ -119,41 +111,7 @@ class _FamilynameScreenState extends State<FamilynameScreen> {
119111
),
120112
),
121113
Padding(
122-
123-
padding: const EdgeInsets.only(left: 40, right: 40, top: 40),
124-
child: Row(
125-
children: [
126-
Checkbox(
127-
value: _isChecked,
128-
activeColor: AppColors.ongiOrange,
129-
onChanged: (bool? value) {
130-
if (value == null) return;
131-
setState(() => _isChecked = value);
132-
133-
if (value) {
134-
Navigator.push(
135-
context,
136-
MaterialPageRoute(
137-
builder: (_) => const FamilycodeScreen(),
138-
),
139-
).then((_) => setState(() => _isChecked = false));
140-
}
141-
},
142-
),
143-
const Text(
144-
'이미 가입한 가족이 있어요!',
145-
style: TextStyle(
146-
fontSize: 20,
147-
fontWeight: FontWeight.w400,
148-
height: 1.2,
149-
color: AppColors.ongiOrange,
150-
),
151-
),
152-
],
153-
),
154-
),
155-
Padding(
156-
padding: const EdgeInsets.only(left: 40, right: 40, top: 5),
114+
padding: const EdgeInsets.only(left: 40, right: 40, top: 30),
157115
child: TextField(
158116
controller: _familynameCtrl,
159117
keyboardType: TextInputType.text,

0 commit comments

Comments
 (0)