Skip to content

Commit

Permalink
Merge pull request #26 from NaJuDoRyeong/feature/#23-story-api
Browse files Browse the repository at this point in the history
Feature/#23 story api
  • Loading branch information
KDW03 authored Mar 8, 2023
2 parents 0e00482 + 972379b commit 20fe572
Show file tree
Hide file tree
Showing 43 changed files with 757 additions and 115 deletions.
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
android:theme="@style/Theme.Mineme"
tools:targetApi="33">
<activity
android:windowSoftInputMode="adjustPan"
android:name=".MainActivity"
android:exported="false">

Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:paddingHorizontal="8dp"
app:elevation="0dp">

<com.google.android.material.appbar.MaterialToolbar
Expand Down
1 change: 0 additions & 1 deletion common-ui/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ dependencies {
implementation 'com.github.bumptech.glide:glide:4.14.2'
kapt 'com.github.bumptech.glide:compiler:4.14.2'


implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'com.google.android.material:material:1.8.0'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.najudoryeong.mineme.common_ui

import android.os.Bundle
import android.util.Log
import android.view.*
import androidx.core.view.MenuHost
import androidx.core.view.MenuProvider
Expand All @@ -18,6 +19,7 @@ abstract class BaseFragment<T : ViewDataBinding>(val fragment: FragmentInfoUtil)
abstract fun initView()

open fun menuClick(){}
open fun backClick() : Boolean = false

override fun onCreateView(
inflater: LayoutInflater,
Expand Down Expand Up @@ -71,7 +73,9 @@ abstract class BaseFragment<T : ViewDataBinding>(val fragment: FragmentInfoUtil)
with(navController) {
when (menuItem.itemId) {
android.R.id.home -> {
popBackStack()
if (!backClick()){
popBackStack()
}
}
else -> {
menuClick()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ import android.widget.ImageView
import androidx.databinding.BindingAdapter
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import com.bumptech.glide.Glide


@BindingAdapter("photoUrl")
fun bindImageView(imageView: ImageView, photoUrl: String?) {
Glide.with(imageView.context)
.load(photoUrl)
.placeholder(R.drawable.img_profile)
.placeholder(R.drawable.img_no_img)
.into(imageView)
}

Expand All @@ -24,6 +25,14 @@ fun bindImageView(imageView: ImageView, uri: Uri?) {
.into(imageView)
}

@BindingAdapter("adapter", "submitList", requireAll = true)
fun bindViewPager(view: ViewPager2, adapter: RecyclerView.Adapter<*>, submitList: List<Any>) {
view.adapter = adapter.apply {
stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY
(this as ListAdapter<Any, *>).submitList(submitList.toMutableList())
}
}

@BindingAdapter("visible")
fun setVisibility(view: View, flag: Boolean) {
view.visibility = if (flag) View.VISIBLE else View.GONE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class CalendarUtil {
companion object {

private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.KOREA)
private val dateFormatNoDay = SimpleDateFormat("yyyy-MM", Locale.KOREA)

private fun Calendar.getYear() = get(Calendar.YEAR)
private fun Calendar.getMonth() = get(Calendar.MONTH)+1
Expand All @@ -19,13 +20,22 @@ class CalendarUtil {
return "${it.getYear()}-${it.getMonth()}-${it.getDay()}"
}

fun getTodayDateNoDay() : String = Calendar.getInstance().let {
return "${it.getYear()}-${it.getMonth()}"
}

// private fun getDateFormat(year : String, month: String, day: String) : String = "${year} ${getMonthFormat(month)}"

fun DatePicker.getDate() = "$year-${month+1}-$dayOfMonth"

fun DatePicker.getDateNoDay() = "$year-${month+1}"

fun parseStringToDate(textView: TextView): Date? =
dateFormat.parse(textView.text.toString())

fun parseStringToDateNoDay(textView: TextView):Date? =
dateFormatNoDay.parse(textView.text.toString()+"-01")

fun getMonthFormat(month: String): String {
return when (month.toInt()) {
Calendar.FEBRUARY -> "Feb"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package com.najudoryeong.mineme.common_ui

import android.app.Dialog
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import com.najudoryeong.mineme.common_ui.CalendarUtil.Companion.getDate
import com.najudoryeong.mineme.common_ui.databinding.DialogForDatepickerBinding
import java.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.najudoryeong.mineme.common_ui

import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import android.widget.NumberPicker
import com.najudoryeong.mineme.common_ui.CalendarUtil.Companion.getDateNoDay
import com.najudoryeong.mineme.common_ui.databinding.DialogForDatepickerBinding
import java.util.*

class DialogForDatePickerNoDay(
context: Context,
private val initDate: Date,
private val onClickPositiveButton: (String) -> Unit
) : Dialog(context) {
private lateinit var binding: DialogForDatepickerBinding
private var calendar: Calendar = Calendar.getInstance()

init {
calendar.time = initDate
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = DialogForDatepickerBinding.inflate(layoutInflater).apply {
datePicker.init(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),1,null)

val daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android")
val daySpinner = datePicker.findViewById<NumberPicker>(daySpinnerId)
daySpinner.visibility = View.GONE
positiveButton.setOnClickListener {
onClickPositiveButton.invoke(datePicker.getDateNoDay())
dismiss()
}
negativeButton.setOnClickListener {
dismiss()
}
}
setContentView(binding.root)

window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}

class Builder(private val context: Context) {
private lateinit var initDate: Date
private var onClickPositiveButton : (String) -> Unit = {}


fun setInitDate(initDate: Date) = apply {
this.initDate = initDate
}

fun setOnClickPositiveButton(onClickPositiveButton: (String) -> Unit) = apply {
this.onClickPositiveButton = onClickPositiveButton
}


fun build() = DialogForDatePicker(
context,
initDate,
onClickPositiveButton
)
}
}
Binary file added common-ui/src/main/res/drawable/img_no_img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions common-ui/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
<color name="soft_text_color">#505050</color>
<color name="butter">#FFDB94</color>
<color name="kakao">#FFE55F</color>
<color name="white">#FFFFFF</color>
</resources>
2 changes: 0 additions & 2 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,7 @@ android {
}

dependencies {

api project(path: ':foundation')

// Preferences DataStore
implementation("androidx.datastore:datastore-preferences:$rootProject.dataStorePreferences_version")

Expand Down

This file was deleted.

3 changes: 2 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.nonTransitiveRClass=true
android.enableJetifier=true
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ interface HomeService {

@GET("api/test/main/info")
suspend fun readHomeInfo(
@Header("Authorization") token: String,
@Header("Authorization") token: String
): CommonResponse<HomeData>


Expand Down
22 changes: 17 additions & 5 deletions home/src/main/java/com/najudoryeong/mineme/home/ui/HomeFragment.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
package com.najudoryeong.mineme.home.ui

import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.najudoryeong.mineme.common_ui.BaseFragment
import com.najudoryeong.mineme.home.Home
import com.najudoryeong.mineme.home.databinding.FragmentHomeBinding
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch


@AndroidEntryPoint
class HomeFragment : BaseFragment<FragmentHomeBinding>(Home) {

private val viewModel: HomeViewModel by viewModels()
private val homeViewModel: HomeViewModel by viewModels()



Expand All @@ -27,10 +31,10 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(Home) {
*/

binding.lifecycleOwner =viewLifecycleOwner
binding.vm = viewModel
binding.vm = homeViewModel
//todo recycle

viewModel.settingHomeData()
homeViewModel.settingHomeData()

val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Expand All @@ -41,10 +45,18 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(Home) {
requireActivity().onBackPressedDispatcher.addCallback(
viewLifecycleOwner, callback
)
toastObserve()
}




private fun toastObserve() {
lifecycleScope.launch {
homeViewModel.toastMessage.collectLatest {
if (it.isNotEmpty()) {
Toast.makeText(context, it, Toast.LENGTH_SHORT).show()
}
}
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,35 @@ class HomeViewModel @Inject constructor(
private val _homeData = MutableStateFlow<HomeData?>(null)
val homeData: StateFlow<HomeData?> = _homeData

private val _toastMessage = MutableStateFlow("")
val toastMessage: StateFlow<String> = _toastMessage


fun settingHomeData() {
viewModelScope.launch {
var jwt = dataStoreUseCase.bearerJsonWebToken.first()
//todo 삭제
if (jwt == null) jwt = "bearer test"
homeUseCase.readHomeInfo(jwt).let {
if (it != null){
if (it.newStory.postId == -1){
_isNewStory.value = true
try {
homeUseCase.readHomeInfo(jwt).let {
if (it != null){
if (it.newStory.postId == -1){
_isNewStory.value = true
}
_homeData.value = it
} else {
Log.d("TESTAPI","API실패")
}
_homeData.value = it
} else {
Log.d("TESTAPI","API실패")
}
}catch (e : Exception) {
setToastMessage("메인 가져오는 거 실패")
}
}
}

private fun setToastMessage(newMessage : String){
_toastMessage.value = ""
_toastMessage.value = newMessage
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ class OnBoardingViewPagerFragment : Fragment(), PermissionCallback {
//todo ViewBindingPropertyDelegate
private var _binding: FragmentOnBoardingViewPagerBinding? = null
private val binding get() = _binding!!

private val requestPermissionLauncher = PermissionObject.checkPermission(this, { onSuccess() }, { onFail() })


Expand Down
Loading

0 comments on commit 20fe572

Please sign in to comment.