Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -7,63 +7,51 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.lifecycle.viewModelScope
import com.fitmate.fitmate.MainActivity
import com.fitmate.fitmate.R
import com.fitmate.fitmate.databinding.FragmentPointBinding
import com.fitmate.fitmate.domain.model.PointType
import com.fitmate.fitmate.presentation.ui.category.list.adapter.CategoryAdapter
import com.fitmate.fitmate.presentation.ui.point.list.adapter.PointHistoryAdapter
import com.fitmate.fitmate.presentation.viewmodel.PointViewModel
import com.fitmate.fitmate.util.customGetSerializable
import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch

@AndroidEntryPoint
class PointFragment : Fragment() {
class PointFragment : Fragment(R.layout.fragment_point) {
private lateinit var binding:FragmentPointBinding
private lateinit var pointOwnerType: PointType
private lateinit var adapter: PointHistoryAdapter
private val viewModel: PointViewModel by viewModels()
private var userId: Int = -1
private var pointOwnerId: Int = -1
private lateinit var createAt: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val userPreference = (activity as MainActivity).loadUserPreference()
userId = userPreference.getOrNull(2)?.toString()?.toInt() ?: -1

//번들 값에 따라 pointOwnerType 및 createAt값 설정하는 메서드
getArgumentAndSettingCreateAt(userPreference)

adapter = PointHistoryAdapter()
//번들 값에 따라 pointOwnerId, pointOwnerType, createAt값 설정하는 메서드
getArgumentAndSettingCreateAt()
}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?,
): View {
binding = FragmentPointBinding.inflate(layoutInflater)

return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding = FragmentPointBinding.bind(view)

//어뎁터 초기화 및 설정
adapter = PointHistoryAdapter()
binding.recyclerViewPointHistory.adapter = adapter

//통신 시작(포인트 정보 및 포인트 기록 데이터)
viewModel.getPointInfo(userId, pointOwnerType.value)
viewModel.getPagingPointHistory(723, pointOwnerType.value,null,null,0,10,null)
viewModel.getPointInfo(pointOwnerId, pointOwnerType.value)
viewModel.getPagingPointHistory(pointOwnerId, pointOwnerType.value,null,null,0,10,null)

//포인트 기록 데이터 통신 감시
observePointHistory()

}
private fun getArgumentAndSettingCreateAt(userInfo:List<Any>) {
private fun getArgumentAndSettingCreateAt() {
arguments?.let {
it.customGetSerializable<PointType>("pointOwnerType")?.let {
pointOwnerType = it
Expand All @@ -73,10 +61,15 @@ class PointFragment : Fragment() {
it.getString("createAt")?.let { createString ->
createAt = createString
}
it.getInt("groupId").let { groupId ->
pointOwnerId = groupId
}
}

PointType.USER -> {
createAt = userInfo[4].toString()
val userPreference = (activity as MainActivity).loadUserPreference()
pointOwnerId = userPreference.getOrNull(2)?.toString()?.toInt() ?: -1
createAt = userPreference[4].toString()
}
}
}
Expand All @@ -87,10 +80,14 @@ class PointFragment : Fragment() {
viewModelScope.launch {
pagingData.collectLatest {
if (it != null){
Log.d("tlqkf",it.toString())
adapter.submitData(lifecycle, it)
}
}
}
pointInfo.observe(viewLifecycleOwner) {
Log.d("tlqkf",it.toString())
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.fitmate.fitmate.MainActivity
import com.fitmate.fitmate.R
import com.fitmate.fitmate.databinding.FragmentUserInfoBinding
import com.fitmate.fitmate.domain.model.PointType
import com.fitmate.fitmate.presentation.viewmodel.LoginViewModel
import com.fitmate.fitmate.util.ControlActivityInterface
import com.google.android.material.snackbar.Snackbar
Expand Down Expand Up @@ -132,8 +133,11 @@ class UserInfoFragment : Fragment(R.layout.fragment_user_info) {
}

private fun navigatePoint() {
Toast.makeText(context, "추후 업데이트 예정입니다.", Toast.LENGTH_SHORT).show()
navigateTo(R.id.action_userInfoFragment_to_loginFragment)
val bundle = Bundle().apply {
putSerializable("pointOwnerType", PointType.USER)
}
findNavController().navigate(R.id.pointFragment,bundle)

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class PointViewModel @Inject constructor(
private val _pointInfo = MutableLiveData<Point>()
val pointInfo: LiveData<Point>
get() = _pointInfo
lateinit var pointData: Point

private val _pagingData = MutableStateFlow<PagingData<PointHistoryContent>?>(null)
val pagingData: StateFlow<PagingData<PointHistoryContent>?> = _pagingData
Expand All @@ -43,6 +44,9 @@ class PointViewModel @Inject constructor(
withContext(Dispatchers.Main) {
if (response.isSuccessful) {
_pointInfo.value = response.body()?.toPoint()
response.body()?.toPoint()?.let {
pointData = it
}
}
}

Expand Down
5 changes: 4 additions & 1 deletion app/src/main/res/layout/fragment_point.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto">

<data>

<variable
name="viewModel"
type="com.fitmate.fitmate.presentation.viewmodel.PointViewModel" />
</data>

<LinearLayout
Expand Down Expand Up @@ -40,6 +42,7 @@
android:id="@+id/textViewPointBalance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{@string/point_amount(viewModel.pointData.balance)}"
android:textAppearance="@style/Font.bold24"
android:textSize="32sp"
tools:text="15,000P"/>
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/item_point_history.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
android:id="@+id/textViewItemPointHistoryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="일단 보류"
android:text="@{@string/point_amount(data.amount)}"
android:textColor="@color/dark_gray"
android:textAppearance="@style/Font.medium16"
app:layout_constraintTop_toBottomOf="@+id/textViewItemPointHistoryOwnerNickName"
Expand Down
58 changes: 37 additions & 21 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@
<string name="item_my_group_message">[ recent messages.. ]</string>
<string name="item_my_group_date">[ ** : ** ]</string>


<!--그룹 만들기 화면-->
<string name="make_group_scr_toolbar">FitGroup 만들기</string>
<string name="make_group_scr_group_name">그룹 이름</string>
<string name="make_group_scr_group_name_insert">그룹 이름을 입력하세요.</string>
Expand All @@ -126,27 +128,14 @@
<string name="make_group_scr_background">그룹 배경화면 *</string>
<string name="make_group_scr_confirm">FITGROUP 만들기</string>


<string name="make_fit_off_scr_toolbar">피트오프 신청</string>
<string name="make_fit_off_scr_group_name">[ GROUP NAME ]</string>
<string name="make_fit_off_scr_reason">사유</string>
<string name="make_fit_off_scr_date">날짜</string>
<string name="make_fit_off_scr_select_date">날짜 선택하기</string>
<string name="make_fit_off_scr_duration">피트오프 기간</string>
<string name="make_fit_off_scr_submit">진단서 제출</string>
<string name="make_fit_off_scr_confirm">\t\t\t피트오프 신청\t\t\t</string>

<string name="group_fit_off_scr_toolbar">FitGroup 피트오프 열람</string>
<string name="item_fit_off_scr_name">[ Name ]</string>
<string name="item_fit_off_scr_date">20**.**.** ~ 20**.**.**</string>
<string name="item_fit_off_scr_reason">사유 : [**사유**]</string>

<!--바텀 메뉴-->
<string name="menu_home">Home</string>
<string name="menu_myfit">MyFit</string>
<string name="menu_category">Category</string>
<string name="menu_chat">Chat</string>
<string name="menu_my_page">My Page</string>

<!--채팅화면-->
<string name="chatting_scr_fit_mate_progress">운동 현황</string>
<string name="chatting_scr_fit_mate_vote">투표</string>
<string name="chatting_scr_fit_group_point">그룹포인트 현황</string>
Expand All @@ -159,13 +148,15 @@
<string name="chatting_scr_quit_group">그룹 탈퇴하기</string>
<string name="item_chatting_scr_export">추방하기</string>


<!--운동 현황 화면-->
<string name="progress_scr_toolbar">Fitmate 운동 현황</string>

<!--벌금 내역인데 삭제될 값-->
<string name="group_fine_scr_toolbar">FitGroup 벌금 내역 일람</string>
<string name="group_fine_scr_fine">[**,***]</string>
<string name="group_fine_scr_account">[**] [***-******-***]</string>

<!--운동 기록 화면-->
<string name="certificate_scr_toolbar">운동 기록하기</string>
<string name="certificate_scr_timer">00 : 00 : 00</string>
<string name="certificate_scr_confirm">\t\t FIT 기록 시작하기 \t\t</string>
Expand All @@ -178,30 +169,55 @@
<string name="certificate_scr_dialog_positive_button">권한 허용하러가기</string>
<string name="certificate_scr_dialog_negative_button">알림 없이 진행하기</string>

<!--피트오프화면-->
<string name="my_fit_off_scr_toolbar">나의 피트오프 열람</string>
<string name="my_fit_off_scr_empty_text">피트 오프 데이터가 존재하지 않습니다</string>
<string name="make_fit_off_scr_toolbar">피트오프 신청</string>
<string name="make_fit_off_scr_group_name">[ GROUP NAME ]</string>
<string name="make_fit_off_scr_reason">사유</string>
<string name="make_fit_off_scr_date">날짜</string>
<string name="make_fit_off_scr_select_date">날짜 선택하기</string>
<string name="make_fit_off_scr_duration">피트오프 기간</string>
<string name="make_fit_off_scr_submit">진단서 제출</string>
<string name="make_fit_off_scr_confirm">\t\t\t피트오프 신청\t\t\t</string>

<string name="group_vote_scr_toolbar">그룹 투표 현황</string>
<!--피트오프 열람화면-->
<string name="group_fit_off_scr_toolbar">FitGroup 피트오프 열람</string>
<string name="item_fit_off_scr_name">[ Name ]</string>
<string name="item_fit_off_scr_date">20**.**.** ~ 20**.**.**</string>
<string name="item_fit_off_scr_reason">사유 : [**사유**]</string>

<string name="permission_dialog_scr_guide_setting">저장소 권한을 항상 모두 허용해야만 갤러리에 접근할 수 있습니다!</string>
<string name="permission_dialog_scr_guide_setting_select">권한 설정하러 가기</string>
<string name="permission_dialog_scr_guide_setting_cancel">취소</string>

<!--권한 다이얼로그-->
<string name="permission_dialog_scr_guide">정말 거부하시겠습니까?</string>
<string name="permission_dialog_scr_guide_message">저장소 권한을 허용하지 않으면 사진 첨부를 할 수 없습니다!</string>
<string name="permission_dialog_scr_guide_select">권한 허용하러가기</string>
<string name="permission_dialog_scr_guide_cancel">취소</string>
<string name="my_fit_main_empty_group_guide_text">아직 FitGroup 가입이 되어있지 않으시네요.\n 더 많은 그룹에 가입해보세요!</string>
<string name="permission_dialog_scr_guide_setting">저장소 권한을 항상 모두 허용해야만 갤러리에 접근할 수 있습니다!</string>
<string name="permission_dialog_scr_guide_setting_select">권한 설정하러 가기</string>
<string name="permission_dialog_scr_guide_setting_cancel">취소</string>


<!--마이피트 메인 화면-->
<string name="fit_cycle_info">%d주/%d회</string>
<string name="fit_group_count_info">%d/%d</string>
<string name="my_fit_main_empty_group_guide_text">아직 FitGroup 가입이 되어있지 않으시네요.\n 더 많은 그룹에 가입해보세요!</string>

<!--마이피트 화면-->
<string name="my_fit_calendar_year_info">%d년</string>
<string name="my_fit_history_total_num">%d건</string>


<!--투표화면-->
<string name="vote_item_nickname">%s님이 인증을 수행하셨습니다</string>
<string name="dialog_vote_item_nickname">%s님의 운동기록에 투표하세요!</string>
<string name="vote_item_end_time">%s뒤에 종료</string>
<string name="vote_agree_percent">%d%%</string>
<string name="group_vote_scr_toolbar">그룹 투표 현황</string>


<!--포인트 화면-->
<string name="point_amount">%dP</string>


</resources>