Skip to content

Commit

Permalink
Merge branch 'develop' into feat/mypage_registered
Browse files Browse the repository at this point in the history
  • Loading branch information
soopeach authored Aug 27, 2023
2 parents d9f7393 + 91432aa commit f13b6fc
Show file tree
Hide file tree
Showing 26 changed files with 459 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import org.gdsc.domain.FoodCategory
import org.gdsc.domain.SortType
import org.gdsc.domain.model.Location
import org.gdsc.domain.model.RestaurantLocationInfo
import org.gdsc.domain.model.request.ModifyRestaurantInfoRequest
import org.gdsc.domain.model.request.RestaurantRegistrationRequest
import org.gdsc.domain.model.request.RestaurantSearchMapRequest
import org.gdsc.domain.model.response.RestaurantInfoResponse

interface RestaurantDataSource {

Expand All @@ -18,6 +20,8 @@ interface RestaurantDataSource {
longitude: String, page: Int
): List<RestaurantLocationInfo>

suspend fun getRecommendRestaurantInfo(recommendRestaurantId: Int): RestaurantInfoResponse

suspend fun checkRestaurantRegistration(kakaoSubId: String): Boolean

suspend fun postRestaurantLocationInfo(restaurantLocationInfo: RestaurantLocationInfo): String
Expand All @@ -27,4 +31,7 @@ interface RestaurantDataSource {
suspend fun getRestaurants(
userId: Int, locationData: Location, sortType: SortType, foodCategory: FoodCategory, drinkPossibility: DrinkPossibility
): Flow<PagingData<RegisteredRestaurant>>

suspend fun putRestaurantInfo(putRestaurantInfoRequest: ModifyRestaurantInfoRequest): String

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@ import org.gdsc.domain.SortType
import org.gdsc.domain.model.Filter
import org.gdsc.domain.model.Location
import org.gdsc.domain.model.RestaurantLocationInfo
import org.gdsc.domain.model.request.ModifyRestaurantInfoRequest
import org.gdsc.domain.model.request.RestaurantRegistrationRequest
import org.gdsc.domain.model.request.RestaurantSearchMapRequest
import org.gdsc.domain.model.response.RestaurantInfoResponse
import retrofit2.HttpException
import javax.inject.Inject

Expand All @@ -38,6 +40,10 @@ class RestaurantDataSourceImpl @Inject constructor(
return restaurantAPI.getRestaurantLocationInfo(query, latitude, longitude, page).data
}

override suspend fun getRecommendRestaurantInfo(recommendRestaurantId: Int): RestaurantInfoResponse {
return restaurantAPI.getRecommendRestaurantInfo(recommendRestaurantId).data
}

override suspend fun checkRestaurantRegistration(kakaoSubId: String): Boolean {
runCatching {
restaurantAPI.checkRestaurantRegistration(kakaoSubId)
Expand Down Expand Up @@ -127,4 +133,11 @@ class RestaurantDataSourceImpl @Inject constructor(

}.flow
}
}

override suspend fun putRestaurantInfo(putRestaurantInfoRequest: ModifyRestaurantInfoRequest): String {
return restaurantAPI.putRestaurantInfo(putRestaurantInfoRequest).data
}


}
14 changes: 14 additions & 0 deletions data/src/main/java/org/gdsc/data/network/RestaurantAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ import org.gdsc.data.database.RegisteredRestaurantPaging
import org.gdsc.data.model.Response
import org.gdsc.domain.model.RestaurantLocationInfo
import org.gdsc.domain.model.request.RestaurantSearchMapRequest
import org.gdsc.domain.model.request.ModifyRestaurantInfoRequest
import org.gdsc.domain.model.response.RestaurantInfoResponse
import org.gdsc.domain.model.response.RestaurantRegistrationResponse
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Part
import retrofit2.http.PartMap
import retrofit2.http.Path
Expand All @@ -26,6 +29,11 @@ interface RestaurantAPI {
@Query("page") page: Int,
): Response<List<RestaurantLocationInfo>>

@GET("api/v1/restaurant/{recommendRestaurantId}")
suspend fun getRecommendRestaurantInfo(
@Path("recommendRestaurantId") recommendRestaurantId: Int,
): Response<RestaurantInfoResponse>

@GET("api/v1/restaurant/registration/{kakaoSubId}")
suspend fun checkRestaurantRegistration(
@Path("kakaoSubId") kakaoSubId: String,
Expand All @@ -51,4 +59,10 @@ interface RestaurantAPI {
@Query("sort") sort: String? = null,
@Body restaurantSearchMapRequest: RestaurantSearchMapRequest,
): Response<RegisteredRestaurantPaging>

@PUT("api/v1/restaurant")
suspend fun putRestaurantInfo(
@Body putRestaurantInfoRequest: ModifyRestaurantInfoRequest,
): Response<String>

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ import org.gdsc.domain.SortType
import org.gdsc.domain.model.Location
import org.gdsc.domain.model.RegisteredRestaurant
import org.gdsc.domain.model.RestaurantLocationInfo
import org.gdsc.domain.model.request.ModifyRestaurantInfoRequest
import org.gdsc.domain.model.request.RestaurantRegistrationRequest
import org.gdsc.domain.model.request.RestaurantSearchMapRequest
import org.gdsc.domain.model.response.RestaurantInfoResponse
import org.gdsc.domain.repository.RestaurantRepository
import javax.inject.Inject

Expand All @@ -26,6 +28,10 @@ class RestaurantRepositoryImpl @Inject constructor(
return restaurantDataSource.getRestaurantLocationInfo(query, latitude, longitude, page)
}

override suspend fun getRecommendRestaurantInfo(recommendRestaurantId: Int): RestaurantInfoResponse {
return restaurantDataSource.getRecommendRestaurantInfo(recommendRestaurantId)
}

override suspend fun checkRestaurantRegistration(kakaoSubId: String): Boolean {
return restaurantDataSource.checkRestaurantRegistration(kakaoSubId)
}
Expand Down Expand Up @@ -65,5 +71,9 @@ class RestaurantRepositoryImpl @Inject constructor(
}
pagingTemp
}

override suspend fun putRestaurantInfo(putRestaurantInfoRequest: ModifyRestaurantInfoRequest): String {
return restaurantDataSource.putRestaurantInfo(putRestaurantInfoRequest)

}
}
1 change: 1 addition & 0 deletions domain/src/main/java/org/gdsc/domain/FoodCategory.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,6 @@ enum class FoodCategory(val id: Long, val text: String, val key:String) {

val ALL = values().toList().dropLast(1)
fun fromId(id: Long) = values().first { it.id == id }
fun fromName(name: String) = values().first { it.text == name }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.gdsc.domain.model.request

data class ModifyRestaurantInfoRequest(
val canDrinkLiquor: Boolean,
val categoryId: Int,
val goWellWithLiquor: String,
val id: Int,
val introduce: String,
val recommendMenu: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.gdsc.domain.model.response

data class RestaurantInfoResponse(
val address: String,
val canDrinkLiquor: Boolean,
val category: String,
val goWellWithLiquor: String,
val introduce: String,
val name: String,
val phone: String,
val pictures: List<String>,
val placeUrl: String,
val recommendMenu: String,
val roadAddress: String,
val userId: Int,
val userNickName: String,
val userProfileImageUrl: String,
val x: Double,
val y: Double
)
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import org.gdsc.domain.SortType
import org.gdsc.domain.model.Location
import org.gdsc.domain.model.RegisteredRestaurant
import org.gdsc.domain.model.RestaurantLocationInfo
import org.gdsc.domain.model.request.ModifyRestaurantInfoRequest
import org.gdsc.domain.model.request.RestaurantRegistrationRequest
import org.gdsc.domain.model.request.RestaurantSearchMapRequest
import org.gdsc.domain.model.response.RestaurantInfoResponse

interface RestaurantRepository {

Expand All @@ -18,6 +20,8 @@ interface RestaurantRepository {
longitude: String, page: Int
): List<RestaurantLocationInfo>

suspend fun getRecommendRestaurantInfo(recommendRestaurantId: Int): RestaurantInfoResponse

suspend fun checkRestaurantRegistration(kakaoSubId: String): Boolean

suspend fun postRestaurantLocationInfo(restaurantLocationInfo: RestaurantLocationInfo): String
Expand All @@ -27,4 +31,7 @@ interface RestaurantRepository {
suspend fun getRestaurants(
userId: Int, locationData: Location, sortType: SortType, foodCategory: FoodCategory, drinkPossibility: DrinkPossibility
): Flow<PagingData<RegisteredRestaurant>>

suspend fun putRestaurantInfo(putRestaurantInfoRequest: ModifyRestaurantInfoRequest): String

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.gdsc.domain.usecase

import org.gdsc.domain.model.response.RestaurantInfoResponse
import org.gdsc.domain.repository.RestaurantRepository
import javax.inject.Inject

class GetRestaurantInfoUseCase @Inject constructor(
private val restaurantRepository: RestaurantRepository
){

suspend operator fun invoke(recommendRestaurantId: Int): RestaurantInfoResponse {
return restaurantRepository.getRecommendRestaurantInfo(recommendRestaurantId)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.gdsc.domain.usecase

import org.gdsc.domain.model.request.ModifyRestaurantInfoRequest
import org.gdsc.domain.repository.RestaurantRepository
import javax.inject.Inject

class PutRestaurantInfoUseCase @Inject constructor(
private val restaurantRepository: RestaurantRepository
){
suspend operator fun invoke(putRestaurantInfoRequest: ModifyRestaurantInfoRequest) {
restaurantRepository.putRestaurantInfo(putRestaurantInfoRequest)
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,27 @@
package org.gdsc.presentation.model

import androidx.annotation.DrawableRes
import org.gdsc.domain.FoodCategory
import org.gdsc.presentation.R

data class FoodCategoryItem(
val categoryItem: FoodCategory,
) {
companion object {
val INIT = FoodCategoryItem(FoodCategory.INIT)

}

@DrawableRes fun getIcon(): Int {
return when(this.categoryItem) {
FoodCategory.KOREAN -> R.drawable.ic_korean
FoodCategory.JAPANESE -> R.drawable.ic_japanese
FoodCategory.CHINESE -> R.drawable.ic_chinese
FoodCategory.WESTERN -> R.drawable.ic_western
FoodCategory.CAFE -> R.drawable.ic_cafe
FoodCategory.BAR -> R.drawable.ic_bar
FoodCategory.ETC -> R.drawable.ic_etc
else -> R.drawable.ic_etc
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import org.gdsc.presentation.utils.slideDown
import org.gdsc.presentation.utils.slideUp
import org.gdsc.presentation.utils.toPx
import org.gdsc.presentation.view.mypage.viewmodel.MyPageViewModel
import org.gdsc.presentation.view.home.HomeFragmentDirections

@AndroidEntryPoint
class MainActivity : BaseActivity() {
Expand Down Expand Up @@ -186,6 +187,14 @@ class MainActivity : BaseActivity() {
binding.toolBar.isVisible = isVisible
}

fun navigateToEditRestaurantInfo(restaurantId: Int) {

val action = HomeFragmentDirections.actionHomeFragmentToRegisterRestaurantFragment(
targetRestaurantId = restaurantId
)
navController.navigate(action)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == android.R.id.home) {
navController.popBackStack()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,28 @@ import android.webkit.JavascriptInterface
import android.widget.Toast

/** Instantiate the interface and set the context */
class WebAppInterface(private val mContext: Context) {
class WebAppInterface(
private val mContext: Context,
private val slideUpBottomNavigationView: () -> Unit = {},
private val slideDownBottomNavigationView: () -> Unit = {},
private val navigateToRestaurantEdit: (Int) -> Unit = {}
) {

/** Show a toast from the web page */
@JavascriptInterface
fun showToast(toast: String) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show()
}

@JavascriptInterface
fun navigationEnable(isVisible: Boolean) {
if (isVisible) slideUpBottomNavigationView()
else slideDownBottomNavigationView()
}

@JavascriptInterface
fun editRestaurantInfo(restaurantId: Int) {
navigateToRestaurantEdit(restaurantId)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import android.view.ViewGroup
import android.webkit.WebViewClient
import dagger.hilt.android.AndroidEntryPoint
import org.gdsc.presentation.databinding.FragmentHomeBinding
import org.gdsc.presentation.view.MainActivity
import org.gdsc.presentation.view.WebAppInterface

@AndroidEntryPoint
class HomeFragment : Fragment() {
Expand All @@ -28,11 +30,27 @@ class HomeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val parentActivity = requireActivity() as MainActivity

binding.webView.apply {
loadUrl("https://jmt-matzip.dev")
settings.javaScriptEnabled = true
webViewClient = WebViewClient()

addJavascriptInterface(WebAppInterface(
requireContext(),
{
parentActivity.slideUpBottomNavigationView()
},
{
parentActivity.slideDownBottomNavigationView()
},
{
parentActivity.navigateToEditRestaurantInfo(it)
}
), "Android")
}

}

override fun onDestroyView() {
Expand Down
Loading

0 comments on commit f13b6fc

Please sign in to comment.