Skip to content

Commit ff9c1f3

Browse files
authored
Merge pull request #314 from SPOTeam/SPOT-231-FEAT-신청승인UI수정
마이페이지 中 모집중, 대기중, 신청한 스터디 세부 페이지 구현
2 parents 6d9fd1b + a13dde9 commit ff9c1f3

37 files changed

+645
-625
lines changed

SPOTeam_android/app/src/main/java/com/example/spoteam_android/ui/mypage/AttendanceContentDialog.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,16 @@ import retrofit2.Call
1818
import retrofit2.Callback
1919
import retrofit2.Response
2020

21-
class AttendanceContentDialog(private val context: Context) {
21+
class AttendanceContentDialog(
22+
private val context: Context
23+
) {
2224

2325
private val dlg = android.app.Dialog(context)
26+
private var callback: fetchData? = null // ✅ 콜백 필드 추가
27+
28+
fun setCallback(cb: fetchData) {
29+
callback = cb
30+
}
2431

2532
fun start() {
2633
// 타이틀바 제거
@@ -33,11 +40,13 @@ class AttendanceContentDialog(private val context: Context) {
3340

3441
val btnMove1 = dlg.findViewById<ImageView>(R.id.accept_close)
3542
btnMove1.setOnClickListener {
43+
callback?.fetchAttendedData()
3644
dlg.dismiss()
3745
}
3846

3947
val btnMove2 = dlg.findViewById<TextView>(R.id.accept_tv)
4048
btnMove2.setOnClickListener {
49+
callback?.fetchAttendedData()
4150
dlg.dismiss()
4251
}
4352

SPOTeam_android/app/src/main/java/com/example/spoteam_android/ui/mypage/AttendanceDenyDialog.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,19 @@ import retrofit2.Call
1818
import retrofit2.Callback
1919
import retrofit2.Response
2020

21-
class AttendanceDenyDialog(private val context: Context) {
21+
class AttendanceDenyDialog(
22+
private val context: Context
23+
) {
2224

2325
private val dlg = android.app.Dialog(context)
2426
private var memberId : Int? = null
2527
private var studyId : Int? = null
28+
private var callback: fetchData? = null // ✅ 콜백 필드 추가
29+
30+
31+
fun setCallback(cb: fetchData) {
32+
callback = cb
33+
}
2634

2735
fun setStudyId(studyId : Int) {
2836
this.studyId = studyId
@@ -45,16 +53,17 @@ class AttendanceDenyDialog(private val context: Context) {
4553
val btnMove1 = dlg.findViewById<TextView>(R.id.reject_tv)
4654
btnMove1.setOnClickListener {
4755
denyMemberAttendance()
48-
dlg.dismiss()
4956
}
5057

5158
val btnMove2 = dlg.findViewById<TextView>(R.id.cancel_tv)
5259
btnMove2.setOnClickListener {
60+
callback?.fetchAttendedData()
5361
dlg.dismiss()
5462
}
5563

5664
val btnMove3 = dlg.findViewById<ImageView>(R.id.close_button)
5765
btnMove3.setOnClickListener {
66+
callback?.fetchAttendedData()
5867
dlg.dismiss()
5968
}
6069

@@ -74,7 +83,8 @@ class AttendanceDenyDialog(private val context: Context) {
7483
val memberAttendanceResponse = response.body()
7584
Log.d("MyStudyAttendance", "responseBody: ${memberAttendanceResponse?.isSuccess}")
7685
if (memberAttendanceResponse?.isSuccess == "true") {
77-
Log.d("MyStudyAttendance", "deny")
86+
callback?.fetchAttendedData()
87+
dlg.dismiss()
7888
} else {
7989
showError(memberAttendanceResponse?.message)
8090
}

SPOTeam_android/app/src/main/java/com/example/spoteam_android/ui/mypage/BoardAdapter.kt

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ class BoardAdapter(
3232
private val itemList: ArrayList<BoardItem>,
3333
private val onItemClick: (BoardItem) -> Unit,
3434
private val onLikeClick: (BoardItem, ImageView) -> Unit, // onLikeClick 추가
35-
private val listener: fetchProgressStudy? = null // 🔹추가
35+
private val listener: fetchProgressStudy? = null, // 🔹추가
36+
3637
) : RecyclerView.Adapter<BoardAdapter.BoardViewHolder>() {
3738

3839
private lateinit var context : Context
@@ -95,6 +96,8 @@ class BoardAdapter(
9596
if (hostResult != null) {
9697
val isHost = hostResult.isOwned // ✅ 호스트 여부 확인
9798

99+
Log.d("BoardAdapter", "StudyId : ${studyId}")
100+
98101
val popupView = LayoutInflater.from(view.context)
99102
.inflate(R.layout.modify_study_popup_menu, null)
100103

@@ -169,25 +172,21 @@ class BoardAdapter(
169172
leaveStudy.setOnClickListener {
170173
// 스터디 탈퇴 다이얼로그 띄우기
171174
if (isHost) { // 호스트 탈퇴
172-
val hostLeaveDialog = HostLeaveStudyDialog(view.context, studyId)
175+
val hostLeaveDialog = HostLeaveStudyDialog(view.context, studyId, onComplete = {
176+
listener?.fetchProgress() // ✅ 여기서 호출
177+
})
173178
hostLeaveDialog.start()
174179
popupWindow.dismiss()
175180
} else { //
176181
// 스터디 탈퇴 다이얼로그 띄우기
177182
val hostLeaveDialog = MemberLeaveStudyDialog(
178183
context = view.context,
179-
studyID = studyId,
180-
listener = object :
181-
MemberLeaveStudyDialog.OnWithdrawSuccessListener {
182-
override fun onWithdrawSuccess() {
183-
// ✅ 여기서 원하는 동작 수행
184-
// 예: 로그, 토스트, FragmentResult 등
185-
(view.context as? FragmentActivity)?.supportFragmentManager?.setFragmentResult(
186-
"study_withdraw_success", Bundle()
187-
)
188-
}
184+
studyID = studyId
185+
, onComplete = {
186+
listener?.fetchProgress() // ✅ 여기서 호출
189187
}
190188
)
189+
191190
hostLeaveDialog.start()
192191
popupWindow.dismiss()
193192
}

SPOTeam_android/app/src/main/java/com/example/spoteam_android/ui/mypage/ConsiderAttendanceMemberFragment.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ import retrofit2.Call
1919
import retrofit2.Callback
2020
import retrofit2.Response
2121

22-
class ConsiderAttendanceMemberFragment : Fragment() {
22+
interface fetchData {
23+
fun fetchAttendedData()
24+
}
25+
26+
class ConsiderAttendanceMemberFragment : Fragment(), fetchData {
2327

2428
private lateinit var binding: FragmentConsiderAttendanceMemberBinding
2529
private var studyId: Int = -1
@@ -33,7 +37,7 @@ class ConsiderAttendanceMemberFragment : Fragment() {
3337
): View {
3438
binding = FragmentConsiderAttendanceMemberBinding.inflate(inflater, container, false)
3539
studyId = arguments?.getInt("recruitingStudyId")!!
36-
Log.d("ConsiderAttendanceMemberFragment", "$studyId")
40+
// Log.d("ConsiderAttendanceMemberFragment", "$studyId")
3741

3842
attendanceMemberList = ArrayList() // ✅ 리스트 초기화
3943

@@ -150,6 +154,7 @@ class ConsiderAttendanceMemberFragment : Fragment() {
150154
val dlg = AttendanceDenyDialog(requireContext())
151155
dlg.setMemberId(data.memberId)
152156
dlg.setStudyId(studyId)
157+
dlg.setCallback(this@ConsiderAttendanceMemberFragment) // ✅ 콜백 넘기기
153158
dlg.start()
154159
}
155160

@@ -173,6 +178,7 @@ class ConsiderAttendanceMemberFragment : Fragment() {
173178
Log.d("MyStudyAttendance", "responseBody: ${memberAttendanceResponse?.isSuccess}")
174179
if (memberAttendanceResponse?.isSuccess == "true") {
175180
val dlg = AttendanceContentDialog(requireContext())
181+
dlg.setCallback(this@ConsiderAttendanceMemberFragment)
176182
dlg.start()
177183
} else {
178184
showError(memberAttendanceResponse?.message)
@@ -190,4 +196,8 @@ class ConsiderAttendanceMemberFragment : Fragment() {
190196
private fun showError(message: String?) {
191197
Toast.makeText(requireContext(), "Error: $message", Toast.LENGTH_SHORT).show()
192198
}
199+
200+
override fun fetchAttendedData() {
201+
fetchStudyAttendanceMembers()
202+
}
193203
}

SPOTeam_android/app/src/main/java/com/example/spoteam_android/ui/mypage/EndStudyFinishDialog.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ import retrofit2.Call
2424
import retrofit2.Callback
2525
import retrofit2.Response
2626

27-
interface fetchProgressStudy {
28-
fun fetchProgress()
29-
}
30-
3127
class EndStudyFinishDialog(
3228
val context: Context,
3329
val onComplete: (() -> Unit)? = null // 🔹 콜백 추가

SPOTeam_android/app/src/main/java/com/example/spoteam_android/ui/mypage/HostLeaveStudyDialog.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ import androidx.fragment.app.FragmentManager
1212
import com.example.spoteam_android.R
1313

1414

15-
class HostLeaveStudyDialog(private val context: Context,
16-
private val studyID: Int, ){
15+
class HostLeaveStudyDialog (
16+
private val context: Context,
17+
private val studyID: Int,
18+
private val onComplete: (() -> Unit)? = null // 🔹 콜백 추가
19+
){
1720

1821
private val dlg = Dialog(context)
1922

@@ -52,8 +55,8 @@ class HostLeaveStudyDialog(private val context: Context,
5255
private fun showMandateFragment(studyId: Int) {
5356
val fragmentManager: FragmentManager? = (context as? FragmentActivity)?.supportFragmentManager
5457
if (fragmentManager != null) {
55-
val mandateFragment = MandateStudyOwnerFragment(studyId)
56-
mandateFragment.show(fragmentManager, "DelegateHostFragment")
58+
val mandateFragment = MandateStudyOwnerFragment(context, studyId, onComplete)
59+
mandateFragment.start()
5760
} else {
5861
throw IllegalStateException("FragmentManager를 가져올 수 없습니다.")
5962
}

SPOTeam_android/app/src/main/java/com/example/spoteam_android/ui/mypage/HostLeaveStudySuccessDialog.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ import androidx.fragment.app.FragmentManager
1212
import com.example.spoteam_android.R
1313

1414

15-
class HostLeaveStudySuccessDialog(private val context: Context){
15+
class HostLeaveStudySuccessDialog(
16+
private val context: Context,
17+
private val onComplete: (() -> Unit)? = null // 🔹 콜백 추가
18+
19+
){
1620

1721
private val dlg = Dialog(context)
1822

@@ -30,11 +34,13 @@ class HostLeaveStudySuccessDialog(private val context: Context){
3034
// X 버튼 클릭 시 다이얼로그 닫기
3135
val ivClose: ImageView = dlg.findViewById(R.id.iv_close)
3236
ivClose.setOnClickListener {
37+
onComplete?.invoke()
3338
dlg.dismiss() // 다이얼로그 닫기
3439
}
3540

3641
val btnTakeCharge: Button = dlg.findViewById(R.id.btn_take_charge)
3742
btnTakeCharge.setOnClickListener {
43+
onComplete?.invoke()
3844
dlg.dismiss() // 다이얼로그 닫기
3945
}
4046

0 commit comments

Comments
 (0)