Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release : version 2.1.0 ๐ŸŽ‰ #273

Merged
merged 19 commits into from
Feb 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
8e6c0be
chore : :warning: TargetSdk 33 -> 34
hoyahozz Aug 28, 2024
25dccad
Merge pull request #260 from TeamDMU/chore/target-sdk-34
hoyahozz Aug 28, 2024
88d70a3
release : version 2.0.1
hoyahozz Aug 28, 2024
57bcfba
Merge pull request #262 from TeamDMU/release/2.0.1
hoyahozz Aug 28, 2024
1a1c3a3
feat: ๋ถˆํ•„์š”ํ•œ API_KEY ์ œ๊ฑฐ
m6z1 Sep 13, 2024
4fdabbd
feat: ํ•™์‹ ์šด์˜ ์‹œ๊ฐ„ ์ˆ˜์ •
m6z1 Sep 13, 2024
7d74204
feat: ์ผํ’ˆ ์‹๋‹จ ๋ฉ”๋‰ด ์ˆ˜์ •
m6z1 Sep 13, 2024
a2793d3
refactor: ๋ฉ”์„œ๋“œ ๋„ค์ด๋ฐ ์ˆ˜์ •
m6z1 Sep 13, 2024
cae03bb
refactor: ๋ฉ”์„œ๋“œ ๋„ค์ด๋ฐ ์ˆ˜์ •
m6z1 Sep 13, 2024
7565dab
refactor: ๋ถˆํ•„์š”ํ•œ ์ด๋„˜ ๊ฐ’ ํ”„๋กœํผํ‹ฐ ์ œ๊ฑฐ
m6z1 Sep 13, 2024
a457da4
build: ์—๋Ÿฌ๋ฉ”์‹œ์ง€ ๋ช…ํ™•ํžˆ ์ž‘์„ฑ
m6z1 Sep 15, 2024
f0430cd
refactor: ๋ณ€์ˆ˜๋ช… ๋ณต์ˆ˜ํ˜•์œผ๋กœ ์ˆ˜์ •
m6z1 Sep 15, 2024
38bcccb
Merge pull request #265 from TeamDMU/feat/update-days-food
m6z1 Sep 15, 2024
6cf7d66
release : version 2.0.2
m6z1 Sep 24, 2024
54f58b1
Merge pull request #268 from TeamDMU/release-version-2.0.2
m6z1 Sep 24, 2024
5ff5094
refactor: ๋กœ์ปฌ ์ €์žฅ ๋ฐฉ์‹ ๋ณ€๊ฒฝ
huiwoo-jo Jan 16, 2025
d5a98a0
refactor: ์ตœ์†Œ, ์ตœ๋Œ€ ๋‚ ์งœ ์ง€์ • ๋ฐฉ์‹ ์ˆ˜์ •
huiwoo-jo Jan 16, 2025
ce50fee
Merge pull request #271 from TeamDMU/chore/schedule-date-range
m6z1 Feb 6, 2025
d415ba2
release : version 2.1.0
m6z1 Feb 6, 2025
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
9 changes: 4 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,18 @@ plugins {
}

android {
compileSdk 33
compileSdk 34

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

defaultConfig {
applicationId "com.dongyang.android.youdongknowme"
minSdk 24
targetSdk 33
versionCode 10
versionName "2.0.0"
targetSdk 34
versionCode 13
versionName "2.1.0"

buildConfigField "String", "API_KEY", properties['API_KEY']
buildConfigField "String", "BASE_URL", properties['BASE_URL']
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,42 @@ import com.dongyang.android.youdongknowme.data.remote.service.CafeteriaService
import com.dongyang.android.youdongknowme.standard.network.ErrorResponseHandler
import com.dongyang.android.youdongknowme.standard.network.NetworkResult
import com.dongyang.android.youdongknowme.standard.network.RetrofitObject
import com.dongyang.android.youdongknowme.standard.util.Weekdays

class CafeteriaRepository(
private val errorResponseHandler: ErrorResponseHandler
) {
suspend fun fetchMenuList(): NetworkResult<List<Cafeteria>> {
return try {
val response = RetrofitObject.getNetwork().create(CafeteriaService::class.java).getMenuList()
val response =
RetrofitObject.getNetwork().create(CafeteriaService::class.java).getMenuList()
NetworkResult.Success(response)
} catch (exception: Exception) {
val error = errorResponseHandler.getError(exception)
NetworkResult.Error(error)
}
}

fun fetchDaysMenus(todayDay: Weekdays): List<DaysMenu> {
return DaysMenu.values().filter { menu ->
menu.operatingDays.contains(todayDay)
}
}

enum class DaysMenu(
val menuNameKr: String,
val price: Int,
val operatingDays: List<Weekdays>,
) {
PORKCUTLET("๋ˆ๊นŒ์Šค", 5_000, Weekdays.values().toList()),
CHEESE_PORKCUTLET("์น˜์ฆˆ๋ˆ๊นŒ์Šค", 5_500, Weekdays.values().toList()),
SWEET_POTATO_CHEESE_PORKCUTLET("๊ณ ๊ตฌ๋งˆ์น˜์ฆˆ๋ˆ๊นŒ์Šค", 6_000, Weekdays.values().toList()),
RAMEN("๋ผ๋ฉด", 3_500, Weekdays.values().toList()),
CHEESE_RAMEN("์น˜์ฆˆ๋ผ๋ฉด", 4_000, Weekdays.values().toList()),
SEAFOOD_RAMEN("ํ•ด๋ฌผ๋ผ๋ฉด", 4_500, Weekdays.values().toList()),
SPAM_KIMCHI_FRIED_RICE("์ŠคํŒธ๊น€์น˜๋ณถ์Œ๋ฐฅ", 4_900, listOf(Weekdays.MONDAY, Weekdays.TUESDAY)),
HOT_CHICKEN_MAYO_RICE("๋ถˆ๋‹ญ๋งˆ์š”๋ฎ๋ฐฅ", 4_500, listOf(Weekdays.WEDNESDAY, Weekdays.THURSDAY)),
CHICKEN_MAYO_RICE("์น˜ํ‚จ๋งˆ์š”๋ฎ๋ฐฅ", 4_500, listOf(Weekdays.WEDNESDAY, Weekdays.THURSDAY)),
OMELET_RICE("์˜ค๋ฏ€๋ผ์ด์Šค", 5_500, listOf(Weekdays.FRIDAY));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ object RetrofitObject {
val request = chain.request().newBuilder()
val originalHttpUrl = chain.request().url

val url = originalHttpUrl.newBuilder().addQueryParameter("api_key", BuildConfig.API_KEY)
val url = originalHttpUrl.newBuilder()
.build()
request.url(url)
chain.proceed(request.build())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.dongyang.android.youdongknowme.standard.util

import java.time.DayOfWeek

enum class Weekdays {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY;

companion object {

fun from(dayOfWeek: DayOfWeek): Weekdays {
return when (dayOfWeek) {
DayOfWeek.MONDAY -> MONDAY
DayOfWeek.TUESDAY -> TUESDAY
DayOfWeek.WEDNESDAY -> WEDNESDAY
DayOfWeek.THURSDAY -> THURSDAY
DayOfWeek.FRIDAY -> FRIDAY
else -> throw IllegalArgumentException("์›”์š”์ผ - ๊ธˆ์š”์ผ์„ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.")
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import android.annotation.SuppressLint
import android.util.TypedValue
import android.view.MotionEvent
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import androidx.window.layout.WindowMetricsCalculator
import com.dongyang.android.youdongknowme.R
import com.dongyang.android.youdongknowme.databinding.FragmentCafeteriaBinding
Expand All @@ -17,12 +16,11 @@ import com.kizitonwose.calendarview.model.CalendarDay
import com.kizitonwose.calendarview.ui.DayBinder
import com.kizitonwose.calendarview.utils.Size
import org.koin.androidx.viewmodel.ext.android.viewModel
import java.time.DayOfWeek
import java.time.DayOfWeek.*
import java.time.LocalDate
import java.time.YearMonth
import java.time.temporal.TemporalAdjusters


class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding, CafeteriaViewModel>(),
CalendarInterface {

Expand Down Expand Up @@ -60,9 +58,9 @@ class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding, CafeteriaViewMo
binding.cvCafeteriaCalendar.apply {
val dayWidth = wmc.bounds.width() / 5
val dayHeight: Int = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
124f,
resources.displayMetrics
TypedValue.COMPLEX_UNIT_DIP,
124f,
resources.displayMetrics
).toInt()

daySize = Size(dayWidth, dayHeight)
Expand All @@ -74,10 +72,11 @@ class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding, CafeteriaViewMo

override fun bind(container: CafeteriaContainer, day: CalendarDay) = container.bind(day)
}

viewModel.updateDaysMenu(findNearestMonday(LocalDate.now()))
}

override fun initDataBinding() {

viewModel.isLoading.observe(viewLifecycleOwner) {
if (it) showLoading()
else dismissLoading()
Expand All @@ -87,10 +86,12 @@ class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding, CafeteriaViewMo
showToast(getString(resId))
})

viewModel.menus.observe(viewLifecycleOwner) {
viewModel.koreaMenus.observe(viewLifecycleOwner) {
koreanMenuAdapter.submitList(it)
// ์ผํ’ˆ ๋ฉ”๋‰ด : ์ผํ’ˆ ๋ฉ”๋‰ด๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ์ œ์ž‘ํ•˜์—ฌ ๋“ฑ๋ก
anotherMenuAdapter.submitList(getString(R.string.cafeteria_another_list).split("/").map { it.trim() })
}

viewModel.daysMenus.observe(viewLifecycleOwner) {
anotherMenuAdapter.submitList(it)
}
}

Expand All @@ -101,13 +102,14 @@ class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding, CafeteriaViewMo
binding.cvCafeteriaCalendar.setup(
YearMonth.from(nearestMonday),
YearMonth.from(nearestMonday.plusDays(4)),
DayOfWeek.MONDAY
MONDAY
)

binding.cvCafeteriaCalendar.scrollToDate(nearestMonday)

binding.cafeteriaErrorContainer.refresh.setOnClickListener {
viewModel.fetchCafeteria()
viewModel.updateDaysMenu(findNearestMonday(LocalDate.now()))
}

binding.cvCafeteriaCalendar.setOnTouchListener { _, event ->
Expand All @@ -123,27 +125,27 @@ class CafeteriaFragment : BaseFragment<FragmentCafeteriaBinding, CafeteriaViewMo

private fun findNearestMonday(currentDate: LocalDate): LocalDate {
return when (currentDate.dayOfWeek) {
DayOfWeek.SATURDAY, DayOfWeek.SUNDAY -> {
currentDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY))
SATURDAY, SUNDAY -> {
currentDate.with(TemporalAdjusters.next(MONDAY))
}

DayOfWeek.MONDAY -> {
MONDAY -> {
currentDate
}

else -> {
currentDate.with(TemporalAdjusters.previous(DayOfWeek.MONDAY))
currentDate.with(TemporalAdjusters.previous(MONDAY))
}
}
}

override fun onPause() {
super.onPause()
notifyDateChanged(
viewModel,
binding.cvCafeteriaCalendar,
viewModel.selectedDate.value,
LocalDate.now()
viewModel = viewModel,
calendarView = binding.cvCafeteriaCalendar,
oldDate = viewModel.selectedDate.value,
selectedDate = findNearestMonday(LocalDate.now())
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ import com.dongyang.android.youdongknowme.data.remote.entity.Cafeteria
import com.dongyang.android.youdongknowme.data.repository.CafeteriaRepository
import com.dongyang.android.youdongknowme.standard.base.BaseViewModel
import com.dongyang.android.youdongknowme.standard.network.NetworkResult
import com.dongyang.android.youdongknowme.standard.util.Weekdays
import com.dongyang.android.youdongknowme.ui.view.util.Event
import com.dongyang.android.youdongknowme.ui.view.util.ResourceProvider
import kotlinx.coroutines.launch
import java.text.DecimalFormat
import java.time.LocalDate

class CafeteriaViewModel(
Expand All @@ -33,8 +35,11 @@ class CafeteriaViewModel(
private val _cafeteriaList: MutableLiveData<List<Cafeteria>> = MutableLiveData()
val cafeteriaList: LiveData<List<Cafeteria>> = _cafeteriaList

private val _menus: MutableLiveData<List<String>> = MutableLiveData()
val menus: LiveData<List<String>> = _menus
private val _koreaMenus: MutableLiveData<List<String>> = MutableLiveData()
val koreaMenus: LiveData<List<String>> = _koreaMenus

private val _daysMenus: MutableLiveData<List<String>> = MutableLiveData()
val daysMenus: LiveData<List<String>> = _daysMenus

private val emptyMenu = listOf(resourceProvider.getString(R.string.cafeteria_no_menu))

Expand Down Expand Up @@ -68,12 +73,27 @@ class CafeteriaViewModel(
val cafeteriaList = _cafeteriaList.value ?: emptyList()
_selectedDate.value = selectedDate
val selectedMenu = cafeteriaList.find { it.date == selectedDate.toString() }?.menus
_menus.postValue(
_koreaMenus.postValue(
if (selectedMenu.isNullOrEmpty()) {
emptyMenu
} else {
selectedMenu
}
)
}

fun updateDaysMenu(selectedDate: LocalDate) {
viewModelScope.launch {
val dateToWeekday: Weekdays = Weekdays.from(selectedDate.dayOfWeek)
runCatching {
cafeteriaRepository.fetchDaysMenus(dateToWeekday)
}.onSuccess { daysMenus ->
val formatter = DecimalFormat("#,###")
val formattedMenuWithPrice = daysMenus.map { "${it.menuNameKr} ${formatter.format(it.price)}์›" }
_daysMenus.value = formattedMenuWithPrice
}.onFailure {
_isError.value = true
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ interface CalendarInterface {
selectedDate: LocalDate
) {
viewModel.updateMenuList(selectedDate)
viewModel.updateDaysMenu(selectedDate)
calendarView.notifyDateChanged(selectedDate)
oldDate?.let { calendarView.notifyDateChanged(it) }
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
package com.dongyang.android.youdongknowme.ui.view.schedule

import android.content.res.ColorStateList
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.PorterDuff
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.drawable.DrawableCompat
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.dongyang.android.youdongknowme.R
Expand Down Expand Up @@ -75,10 +68,16 @@ class ScheduleFragment : BaseFragment<FragmentScheduleBinding, ScheduleViewModel
}

// ์ตœ์†Œ ๋‚ ์งœ, ์ตœ๋Œ€ ๋‚ ์งœ ์ง€์ •
if(viewModel.currentYear.value == null || viewModel.currentYear.value != LocalDate.now().year){
viewModel.setCurrentYear(LocalDate.now())
}

binding.mvScheduleCalendar.apply {
this.state().edit().setMinimumDate(CalendarDay.from(2023, 1, 1))
.setMaximumDate(CalendarDay.from(2025, 2, 28))
.commit()
viewModel.currentYear.value?.let{
this.state().edit().setMinimumDate(CalendarDay.from(it-1, 1, 1))
.setMaximumDate(CalendarDay.from(it+1, 2, 28))
.commit()
}
}

// ์—ฐ/์›” ๋ฐฉ์‹์œผ๋กœ ํƒ€์ดํ‹€ ์ฒ˜๋ฆฌ
Expand Down
Loading
Loading