Skip to content
Open
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
@@ -0,0 +1,10 @@
package jin.contest.ta_android.data.model

data class TodayDiaryResponse(
val title: String,
val createdAt: String,
val weather: String,
val content: String,
val emotion: String,
val emotionPoint: Int,
)
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import jin.contest.ta_android.data.model.MissionClearResponse
import jin.contest.ta_android.data.model.MissionProgressResponse
import jin.contest.ta_android.data.model.DiaryDetailResponse
import jin.contest.ta_android.data.model.CounselListResponse
import jin.contest.ta_android.data.model.TodayDiaryResponse
import jin.contest.ta_android.data.model.UserInfoResponse

import retrofit2.Response
Expand Down Expand Up @@ -85,8 +86,13 @@ interface ApiService {
@Query("district") district: String? = null
): Response<CounselListResponse>


@GET("/api/diary/today")
suspend fun getTodayDiary() : Response<TodayDiaryResponse>

@GET("/api/user")
suspend fun getUserInfo(
@Header("Cookie") sessionId: String
): retrofit2.Response<UserInfoResponse>

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package jin.contest.ta_android.data.repository


import jin.contest.ta_android.data.model.DiaryResponse
import jin.contest.ta_android.data.model.PageResponse
import jin.contest.ta_android.data.model.TodayDiaryResponse
import jin.contest.ta_android.data.remote.ApiService
import jin.contest.ta_android.data.remote.RetrofitClient.apiService
import retrofit2.Response

class TodayRepository() {
suspend fun getTodayDiary(): TodayDiaryResponse? {
val response = apiService.getTodayDiary()
return if (response.isSuccessful) response.body() else null
}
}
48 changes: 37 additions & 11 deletions app/src/main/java/jin/contest/ta_android/ui/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import jin.contest.ta_android.WritingActivity
import jin.contest.ta_android.data.remote.RetrofitClient
import jin.contest.ta_android.data.repository.ReportRepository
import jin.contest.ta_android.data.repository.DiaryRepository
import jin.contest.ta_android.data.repository.TodayRepository
import jin.contest.ta_android.databinding.FragmentHomeBinding
import androidx.navigation.fragment.findNavController
import jin.contest.ta_android.R
Expand All @@ -35,7 +36,8 @@ class HomeFragment : Fragment() {
val apiService = RetrofitClient.apiService
val reportRepository = ReportRepository(apiService)
val diaryRepository = DiaryRepository(apiService)
homeViewModel = ViewModelProvider(this, HomeViewModel.Factory(reportRepository, diaryRepository))[HomeViewModel::class.java]
val todayRepository = TodayRepository()
homeViewModel = ViewModelProvider(this, HomeViewModel.Factory(reportRepository, diaryRepository, todayRepository))[HomeViewModel::class.java]

homeViewModel.weeklyReports.observe(viewLifecycleOwner, Observer { reports ->
if (reports?.content?.isNotEmpty() == true) {
Expand Down Expand Up @@ -68,21 +70,45 @@ class HomeFragment : Fragment() {
val intent = Intent(requireActivity(), WritingActivity::class.java)
startActivity(intent)
}
val title = arguments?.getString("content")
val content = arguments?.getString("content")
Log.d("test","${content}")

if(content != null){
binding.tvDiaryTitle.text=title
binding.tvDiaryContent.text=content
}
else{
binding.tvDiaryTitle.text="오늘 작성한 일기가 없습니다"
binding.tvDiaryContent.text=""
homeViewModel.todayDiary.observe(viewLifecycleOwner, Observer { diary ->
if (diary?.content?.isNotEmpty() == true) {
binding.tvDiaryTitle.text = diary.title
binding.tvDiaryDate.text = diary.createdAt.substring(0,10)
binding.tvDiaryWeather.text = "(날씨 : ${diary.weather})"
binding.tvDiaryEmotion.text = "[${getEmotion(diary.emotion)}점수 : ${diary.emotionPoint}]"
binding.tvDiaryContent.text = diary.content
Log.d("test", "${diary.content}")
}
else{
binding.tvDiaryTitle.text = "오늘의 일기가 없습니다"
}
})
homeViewModel.fetchTodayDiary()

// 주변 상담소 카드 클릭 시 CounselFragment로 이동
binding.cardCounselLink.setOnClickListener {
findNavController().navigate(R.id.action_home_to_counsel)
}

return root
}
private fun getEmotion(emotion: String): String {
return when (emotion) {
"happy" -> "행복"
"depress" -> "우울"
else -> "분노"
}
}

private fun getWeather(weather: String): String {
return when (weather) {
"SUNNY" -> "맑음"
"CLOUDY" -> "흐림"
"RAINY" -> "비"
else -> "눈"
}
}

override fun onDestroyView() {
super.onDestroyView()
Expand Down
21 changes: 18 additions & 3 deletions app/src/main/java/jin/contest/ta_android/ui/home/HomeViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package jin.contest.ta_android.ui.home

import android.graphics.pdf.PdfDocument.Page
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
Expand All @@ -11,10 +12,13 @@ import jin.contest.ta_android.data.repository.ReportRepository
import jin.contest.ta_android.data.repository.DiaryRepository
import kotlinx.coroutines.launch
import jin.contest.ta_android.data.model.PageResponse
import jin.contest.ta_android.data.model.TodayDiaryResponse
import jin.contest.ta_android.data.repository.TodayRepository

class HomeViewModel(
private val reportRepository: ReportRepository,
private val diaryRepository: DiaryRepository
private val diaryRepository: DiaryRepository,
private val todayRepository: TodayRepository
) : ViewModel() {

private val _text = MutableLiveData<String>().apply {
Expand All @@ -28,6 +32,16 @@ class HomeViewModel(
private val _weeklyDo = MutableLiveData<List<Boolean>>()
val weeklyDo: LiveData<List<Boolean>> = _weeklyDo

private val _todayDiary = MutableLiveData<TodayDiaryResponse?>()
val todayDiary : LiveData<TodayDiaryResponse?> = _todayDiary

fun fetchTodayDiary(){
viewModelScope.launch {
val result = todayRepository.getTodayDiary()
_todayDiary.value = result
}
}

fun fetchWeeklyReports(page: Int = 0, size: Int = 10) {
viewModelScope.launch {
val result = reportRepository.getWeeklyReports(page, size)
Expand All @@ -44,12 +58,13 @@ class HomeViewModel(

class Factory(
private val reportRepository: ReportRepository,
private val diaryRepository: DiaryRepository
private val diaryRepository: DiaryRepository,
private val todayRepository: TodayRepository
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(HomeViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return HomeViewModel(reportRepository, diaryRepository) as T
return HomeViewModel(reportRepository, diaryRepository, todayRepository) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
Expand Down
90 changes: 66 additions & 24 deletions app/src/main/res/layout/fragment_home.xml
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,12 @@
android:id="@+id/tv_diary_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:text="오늘 작성한 내 마음을 확인해봐요"
android:textColor="#666666"
android:textStyle="bold"
android:textSize="20sp"
android:layout_marginTop="16dp"
android:layout_marginStart="24dp" />
android:textStyle="bold" />

<androidx.cardview.widget.CardView
android:id="@+id/card_diary"
Expand All @@ -154,25 +154,67 @@
android:layout_marginTop="8dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:padding="30dp"
app:cardCornerRadius="16dp">

<TextView
android:id="@+id/tv_diary_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="일기 제목"
android:textColor="#666666"
android:textSize="20sp"
android:layout_marginTop="16dp"
android:layout_marginStart="24dp" />
<TextView
android:id="@+id/tv_diary_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=""
android:textColor="#222222"
android:textSize="17sp"
android:padding="16dp" />
android:orientation="vertical">

<TextView
android:id="@+id/tv_diary_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="20dp"
android:text="오늘 작성한 일기가 없습니다."
android:textColor="#666666"
android:textStyle="bold"
android:textSize="20sp" />

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
android:id="@+id/tv_diary_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text=""
android:textSize="18dp" />

<TextView
android:id="@+id/tv_diary_weather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text=""
android:textSize="17dp" />
<TextView
android:id="@+id/tv_diary_emotion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text=""
android:textSize="17dp" />
</LinearLayout>

<TextView
android:id="@+id/tv_diary_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:text=""
android:textSize="17dp" />
</LinearLayout>



</androidx.cardview.widget.CardView>

<TextView
Expand All @@ -189,22 +231,22 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_counsel_link"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/bg_note_page"
app:cardBackgroundColor="#FDFAF6"
app:cardBackgroundColor="#FFCFB3"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:cardCornerRadius="16dp">

<TextView
android:id="@+id/tv_counsel_link"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="50dp"
android:text="주변 상담소 찾기"
android:gravity="center"
android:textColor="#222222"
android:textSize="17sp"
android:padding="16dp" />
android:textStyle="bold"
android:textSize="18sp" />
</androidx.cardview.widget.CardView>

<!-- 스크롤을 위한 하단 여백 -->
Expand Down