diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 01fc6494..4a3b27ee 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -133,6 +133,12 @@
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"
android:exported="false" />
+
+
-
-
@@ -170,7 +168,6 @@
android:name=".presentation.intro.SplashActivity"
android:screenOrientation="portrait"
android:exported="true">
-
@@ -180,7 +177,6 @@
android:screenOrientation="portrait"
android:name=".presentation.MainActivity"
android:exported="true">
-
diff --git a/app/src/main/java/com/umc/ttoklip/data/api/KakaoApi.kt b/app/src/main/java/com/umc/ttoklip/data/api/KakaoApi.kt
index 17952915..cdaf8f67 100644
--- a/app/src/main/java/com/umc/ttoklip/data/api/KakaoApi.kt
+++ b/app/src/main/java/com/umc/ttoklip/data/api/KakaoApi.kt
@@ -8,7 +8,7 @@ import retrofit2.http.Header
import retrofit2.http.Query
interface KakaoApi {
- @GET("v2/local/search/keyword.json")
+ @GET("v2/local/search/address")
fun getSearchKeyword(
@Header("Authorization") key: String,
@Query("query") query:String
diff --git a/app/src/main/java/com/umc/ttoklip/data/api/MyPage2Api.kt b/app/src/main/java/com/umc/ttoklip/data/api/MyPage2Api.kt
index 7596b77f..ba889f56 100644
--- a/app/src/main/java/com/umc/ttoklip/data/api/MyPage2Api.kt
+++ b/app/src/main/java/com/umc/ttoklip/data/api/MyPage2Api.kt
@@ -1,27 +1,27 @@
-package com.umc.ttoklip.data.api
-
-import com.umc.ttoklip.data.model.ResponseBody
-import com.umc.ttoklip.data.model.honeytip.CreateHoneyTipResponse
-import com.umc.ttoklip.data.model.mypage.MyPageInfoResponse
-import okhttp3.MultipartBody
-import okhttp3.RequestBody
-import retrofit2.Response
-import retrofit2.http.GET
-import retrofit2.http.Multipart
-import retrofit2.http.PATCH
-import retrofit2.http.POST
-import retrofit2.http.Part
-import retrofit2.http.PartMap
-
-interface MyPage2Api {
- @GET("/api/v1/my-page")
- suspend fun getMyPageInfo(): Response>
-
- @Multipart
- @PATCH("/api/v1/my-page/edit")
- suspend fun editMyPageInfo(
- @Part profileImage: MultipartBody.Part?,
- @Part categories:List,
- @PartMap params:MutableMap
- ): Response>
+package com.umc.ttoklip.data.api
+
+import com.umc.ttoklip.data.model.ResponseBody
+import com.umc.ttoklip.data.model.honeytip.CreateHoneyTipResponse
+import com.umc.ttoklip.data.model.mypage.MyPageInfoResponse
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import retrofit2.Response
+import retrofit2.http.GET
+import retrofit2.http.Multipart
+import retrofit2.http.PATCH
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.PartMap
+
+interface MyPage2Api {
+ @GET("/api/v1/my-page")
+ suspend fun getMyPageInfo(): Response>
+
+ @Multipart
+ @PATCH("/api/v1/my-page/edit")
+ suspend fun editMyPageInfo(
+ @Part profileImage: MultipartBody.Part?,
+ @Part categories:List,
+ @PartMap params:MutableMap
+ ): Response>
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/api/StrangerApi.kt b/app/src/main/java/com/umc/ttoklip/data/api/StrangerApi.kt
new file mode 100644
index 00000000..91fc3249
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/api/StrangerApi.kt
@@ -0,0 +1,13 @@
+package com.umc.ttoklip.data.api
+
+import com.umc.ttoklip.data.model.ResponseBody
+import com.umc.ttoklip.data.model.stranger.StrangerResponse
+import retrofit2.Response
+import retrofit2.http.POST
+import retrofit2.http.Query
+
+interface StrangerApi {
+ @POST("/api/v1/stranger")
+ suspend fun getStranger(@Query("nickname") nick: String)
+ : Response>
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/api/TermApi.kt b/app/src/main/java/com/umc/ttoklip/data/api/TermApi.kt
new file mode 100644
index 00000000..0e2f8582
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/api/TermApi.kt
@@ -0,0 +1,14 @@
+package com.umc.ttoklip.data.api
+
+import com.umc.ttoklip.data.model.ResponseBody
+import com.umc.ttoklip.data.model.signup.TermResponse
+import retrofit2.Response
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+interface TermApi {
+ @GET("/api/v1/term")
+ suspend fun getTerm(
+ @Query("page") page: Int)
+ : Response>
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/model/honeytip/HoneyTipPagingResponse.kt b/app/src/main/java/com/umc/ttoklip/data/model/honeytip/HoneyTipPagingResponse.kt
index 6b31e9f6..0b3117de 100644
--- a/app/src/main/java/com/umc/ttoklip/data/model/honeytip/HoneyTipPagingResponse.kt
+++ b/app/src/main/java/com/umc/ttoklip/data/model/honeytip/HoneyTipPagingResponse.kt
@@ -1,12 +1,12 @@
-package com.umc.ttoklip.data.model.honeytip
-
-data class HoneyTipPagingResponse(
- val data: List,
- val category: String,
- val totalPage: Int,
- val totalElements: Int,
- val isFirst: Boolean,
- val isLast: Boolean,
-) {
- constructor(): this(listOf(), "", 0, 0, true, false)
-}
+package com.umc.ttoklip.data.model.honeytip
+
+data class HoneyTipPagingResponse(
+ val data: List,
+ val category: String,
+ val totalPage: Int,
+ val totalElements: Int,
+ val isFirst: Boolean,
+ val isLast: Boolean,
+) {
+ constructor(): this(listOf(), "", 0, 0, true, false)
+}
diff --git a/app/src/main/java/com/umc/ttoklip/data/model/honeytip/request/HoneyTipCommentRequest.kt b/app/src/main/java/com/umc/ttoklip/data/model/honeytip/request/HoneyTipCommentRequest.kt
index 10ae314e..1166d177 100644
--- a/app/src/main/java/com/umc/ttoklip/data/model/honeytip/request/HoneyTipCommentRequest.kt
+++ b/app/src/main/java/com/umc/ttoklip/data/model/honeytip/request/HoneyTipCommentRequest.kt
@@ -1,6 +1,6 @@
-package com.umc.ttoklip.data.model.honeytip.request
-
-data class HoneyTipCommentRequest(
- val comment: String,
- val parentCommentId: Int
-)
+package com.umc.ttoklip.data.model.honeytip.request
+
+data class HoneyTipCommentRequest(
+ val comment: String,
+ val parentCommentId: Int
+)
diff --git a/app/src/main/java/com/umc/ttoklip/data/model/stranger/StrangerResponse.kt b/app/src/main/java/com/umc/ttoklip/data/model/stranger/StrangerResponse.kt
new file mode 100644
index 00000000..b45b5fcb
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/model/stranger/StrangerResponse.kt
@@ -0,0 +1,13 @@
+package com.umc.ttoklip.data.model.stranger
+
+data class StrangerResponse (
+ val nickname:String,
+ val residence:String,
+ val level:Int,
+ val experience:ExperienceResponse
+)
+data class ExperienceResponse(
+ val current:Int,
+ val required:Int,
+ val levelimageurl:String
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/repository/location/DirectLocationRepository.kt b/app/src/main/java/com/umc/ttoklip/data/repository/location/DirectLocationRepository.kt
new file mode 100644
index 00000000..c790509d
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/repository/location/DirectLocationRepository.kt
@@ -0,0 +1,8 @@
+package com.umc.ttoklip.data.repository.location
+
+import com.umc.ttoklip.data.model.KakaoResponse
+import retrofit2.Call
+
+interface DirectLocationRepository {
+ suspend fun getDirectAddress(address:String): Call
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/repository/location/DirectLocationRepositoryImpl.kt b/app/src/main/java/com/umc/ttoklip/data/repository/location/DirectLocationRepositoryImpl.kt
new file mode 100644
index 00000000..fc60cd38
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/repository/location/DirectLocationRepositoryImpl.kt
@@ -0,0 +1,17 @@
+package com.umc.ttoklip.data.repository.location
+
+import com.umc.ttoklip.R
+import com.umc.ttoklip.data.api.KakaoApi
+import com.umc.ttoklip.data.model.KakaoResponse
+import retrofit2.Call
+import javax.inject.Inject
+
+class DirectLocationRepositoryImpl @Inject constructor(
+ private val api: KakaoApi
+): DirectLocationRepository {
+
+ override suspend fun getDirectAddress(address: String): Call {
+ val call = api.getSearchKeyword(R.string.kakao_api_key.toString(), address)
+ return call
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2Repository.kt b/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2Repository.kt
index 63a73127..d4ff94fb 100644
--- a/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2Repository.kt
+++ b/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2Repository.kt
@@ -1,20 +1,20 @@
-package com.umc.ttoklip.data.repository.search
-
-import com.umc.ttoklip.data.model.CommonResponse
-import com.umc.ttoklip.data.model.news.MainNewsResponse
-import com.umc.ttoklip.data.model.news.comment.NewsCommentRequest
-import com.umc.ttoklip.data.model.news.detail.NewsDetailResponse
-import com.umc.ttoklip.data.model.search.NewsSearchResponse
-import com.umc.ttoklip.data.model.search.SearchModel
-import com.umc.ttoklip.data.model.search.TipSearchResponse
-import com.umc.ttoklip.data.model.search.TownSearchResponse
-import com.umc.ttoklip.module.NetworkResult
-
-interface Search2Repository {
-
- suspend fun getNewsSearch(title : String, sort: String, page: Int): NetworkResult
-
- suspend fun getTipSearch(title : String, sort: String, page: Int): NetworkResult
-
- suspend fun getTownSearch(title : String, sort: String, page: Int): NetworkResult
+package com.umc.ttoklip.data.repository.search
+
+import com.umc.ttoklip.data.model.CommonResponse
+import com.umc.ttoklip.data.model.news.MainNewsResponse
+import com.umc.ttoklip.data.model.news.comment.NewsCommentRequest
+import com.umc.ttoklip.data.model.news.detail.NewsDetailResponse
+import com.umc.ttoklip.data.model.search.NewsSearchResponse
+import com.umc.ttoklip.data.model.search.SearchModel
+import com.umc.ttoklip.data.model.search.TipSearchResponse
+import com.umc.ttoklip.data.model.search.TownSearchResponse
+import com.umc.ttoklip.module.NetworkResult
+
+interface Search2Repository {
+
+ suspend fun getNewsSearch(title : String, sort: String, page: Int): NetworkResult
+
+ suspend fun getTipSearch(title : String, sort: String, page: Int): NetworkResult
+
+ suspend fun getTownSearch(title : String, sort: String, page: Int): NetworkResult
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2RepositoryImpl.kt b/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2RepositoryImpl.kt
index 8d176b1f..4ebf6b6d 100644
--- a/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2RepositoryImpl.kt
+++ b/app/src/main/java/com/umc/ttoklip/data/repository/search/Search2RepositoryImpl.kt
@@ -1,69 +1,69 @@
-package com.umc.ttoklip.data.repository.search
-
-import com.umc.ttoklip.data.api.Search2Api
-import com.umc.ttoklip.data.api.SearchApi
-import com.umc.ttoklip.data.model.ResponseBody
-import com.umc.ttoklip.data.model.search.NewsSearchResponse
-import com.umc.ttoklip.data.model.search.SearchModel
-import com.umc.ttoklip.data.model.search.TipSearchResponse
-import com.umc.ttoklip.data.model.search.TownSearchResponse
-import com.umc.ttoklip.module.NetworkResult
-import com.umc.ttoklip.module.handleApi
-import javax.inject.Inject
-
-class Search2RepositoryImpl @Inject constructor(
- private val api: Search2Api
-) : Search2Repository {
-
-
- override suspend fun getNewsSearch(
- title: String,
- sort: String,
- page: Int
- ): NetworkResult {
- return handleApi({
- api.getSearchNewsApi(
- title = title,
- sort = sort,
- page =page
- )
- }) { response: ResponseBody ->
- response.result
- }
- }
-
- override suspend fun getTipSearch(
- title: String,
- sort: String,
- page: Int
- ): NetworkResult {
- return handleApi({
- api.getSearchTipApi(
- title = title,
- sort = sort,
- page =page
- )
- }) { response: ResponseBody ->
- response.result
-
- }
- }
-
- override suspend fun getTownSearch(
- title: String,
- sort: String,
- page: Int
- ): NetworkResult {
- return handleApi({
- api.getSearchTownApi(
- title = title,
- sort = sort,
- page =page
- )
- }) { response: ResponseBody ->
- response.result
- }
-
- }
-
+package com.umc.ttoklip.data.repository.search
+
+import com.umc.ttoklip.data.api.Search2Api
+import com.umc.ttoklip.data.api.SearchApi
+import com.umc.ttoklip.data.model.ResponseBody
+import com.umc.ttoklip.data.model.search.NewsSearchResponse
+import com.umc.ttoklip.data.model.search.SearchModel
+import com.umc.ttoklip.data.model.search.TipSearchResponse
+import com.umc.ttoklip.data.model.search.TownSearchResponse
+import com.umc.ttoklip.module.NetworkResult
+import com.umc.ttoklip.module.handleApi
+import javax.inject.Inject
+
+class Search2RepositoryImpl @Inject constructor(
+ private val api: Search2Api
+) : Search2Repository {
+
+
+ override suspend fun getNewsSearch(
+ title: String,
+ sort: String,
+ page: Int
+ ): NetworkResult {
+ return handleApi({
+ api.getSearchNewsApi(
+ title = title,
+ sort = sort,
+ page =page
+ )
+ }) { response: ResponseBody ->
+ response.result
+ }
+ }
+
+ override suspend fun getTipSearch(
+ title: String,
+ sort: String,
+ page: Int
+ ): NetworkResult {
+ return handleApi({
+ api.getSearchTipApi(
+ title = title,
+ sort = sort,
+ page =page
+ )
+ }) { response: ResponseBody ->
+ response.result
+
+ }
+ }
+
+ override suspend fun getTownSearch(
+ title: String,
+ sort: String,
+ page: Int
+ ): NetworkResult {
+ return handleApi({
+ api.getSearchTownApi(
+ title = title,
+ sort = sort,
+ page =page
+ )
+ }) { response: ResponseBody ->
+ response.result
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/repository/signup/TermRepository.kt b/app/src/main/java/com/umc/ttoklip/data/repository/signup/TermRepository.kt
new file mode 100644
index 00000000..5b4fa81a
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/repository/signup/TermRepository.kt
@@ -0,0 +1,8 @@
+package com.umc.ttoklip.data.repository.signup
+
+import com.umc.ttoklip.data.model.signup.TermResponse
+import com.umc.ttoklip.module.NetworkResult
+
+interface TermRepository {
+ suspend fun getTerm(page:Int): NetworkResult
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/repository/signup/TermRepositoryImpl.kt b/app/src/main/java/com/umc/ttoklip/data/repository/signup/TermRepositoryImpl.kt
new file mode 100644
index 00000000..ea49f330
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/repository/signup/TermRepositoryImpl.kt
@@ -0,0 +1,17 @@
+package com.umc.ttoklip.data.repository.signup
+
+import com.umc.ttoklip.data.api.TermApi
+import com.umc.ttoklip.data.model.ResponseBody
+import com.umc.ttoklip.data.model.signup.SignupResponse
+import com.umc.ttoklip.data.model.signup.TermResponse
+import com.umc.ttoklip.module.NetworkResult
+import com.umc.ttoklip.module.handleApi
+import javax.inject.Inject
+
+class TermRepositoryImpl @Inject constructor(
+ private val api: TermApi
+): TermRepository {
+ override suspend fun getTerm(page: Int): NetworkResult {
+ return handleApi({api.getTerm(page)}) {response: ResponseBody ->response.result}
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/data/repository/stranger/StrangerRepository.kt b/app/src/main/java/com/umc/ttoklip/data/repository/stranger/StrangerRepository.kt
new file mode 100644
index 00000000..d8dc1849
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/data/repository/stranger/StrangerRepository.kt
@@ -0,0 +1,9 @@
+package com.umc.ttoklip.data.repository.stranger
+
+import com.umc.ttoklip.data.model.signup.SignupResponse
+import com.umc.ttoklip.data.model.stranger.StrangerResponse
+import com.umc.ttoklip.module.NetworkResult
+
+interface StrangerRepository {
+ suspend fun getStranger(nick:String): NetworkResult
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/di/KakaoModule.kt b/app/src/main/java/com/umc/ttoklip/di/KakaoModule.kt
index 2ddf49d0..ed5eef7b 100644
--- a/app/src/main/java/com/umc/ttoklip/di/KakaoModule.kt
+++ b/app/src/main/java/com/umc/ttoklip/di/KakaoModule.kt
@@ -1,30 +1,33 @@
package com.umc.ttoklip.di
+import android.util.Log
import com.umc.ttoklip.R
import com.umc.ttoklip.data.api.KakaoApi
+import com.umc.ttoklip.data.api.TermApi
+import com.umc.ttoklip.data.model.KakaoResponse
import dagger.Module
+import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
+import javax.inject.Singleton
+
@Module
@InstallIn(SingletonComponent::class)
object KakaoModule {
- class kakaoAddress {
- companion object {
- var BASE_URL = R.string.kakao.toString()
- var API_KEY = R.string.kakao_api_key.toString()
- }
- object kakaoApiRetrofitClient {
- private val retrofit: Retrofit.Builder by lazy {
- Retrofit.Builder()
- .baseUrl(BASE_URL)
- .addConverterFactory(GsonConverterFactory.create())
- }
- val apiService: KakaoApi by lazy {
- retrofit.build().create(KakaoApi::class.java)
- }
- }
- }
+// private val BASE_URL = R.string.kakao.toString()
+// @Provides
+// @Singleton
+// fun kakaoApiRetrofitClient(keyword: String) {
+// val retrofit = Retrofit.Builder()
+// .baseUrl(BASE_URL)
+// .addConverterFactory(GsonConverterFactory.create())
+// .build()
+// val api = retrofit.create(KakaoApi::class.java)
+// }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/di/NetworkModule.kt b/app/src/main/java/com/umc/ttoklip/di/NetworkModule.kt
index 139ff661..209a9dfe 100644
--- a/app/src/main/java/com/umc/ttoklip/di/NetworkModule.kt
+++ b/app/src/main/java/com/umc/ttoklip/di/NetworkModule.kt
@@ -4,6 +4,7 @@ import com.umc.ttoklip.R
import com.umc.ttoklip.TtoklipApplication
import com.umc.ttoklip.data.api.HomeApi
import com.umc.ttoklip.data.api.HoneyTipApi
+import com.umc.ttoklip.data.api.KakaoApi
import com.umc.ttoklip.data.api.LoginApi
import com.umc.ttoklip.data.api.MyPage2Api
import com.umc.ttoklip.data.api.MyPageApi
@@ -16,6 +17,7 @@ import com.umc.ttoklip.data.api.ReadTogetherApi
import com.umc.ttoklip.data.api.Search2Api
import com.umc.ttoklip.data.api.SearchApi
import com.umc.ttoklip.data.api.SignupApi
+import com.umc.ttoklip.data.api.TermApi
import com.umc.ttoklip.data.api.TestApi
import com.umc.ttoklip.data.api.WriteCommsApi
import com.umc.ttoklip.data.api.WriteTogetherApi
@@ -30,6 +32,9 @@ import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.converter.scalars.ScalarsConverterFactory
+import retrofit2.create
+import java.util.concurrent.TimeUnit
+import javax.inject.Named
import javax.inject.Singleton
@Module
@@ -53,6 +58,23 @@ object NetworkModule {
.build()
}
+ @Provides
+ @Singleton
+ @Named("kakaoClient")
+ fun providesKOkHttpClient(): OkHttpClient {
+ val interceptor = HttpLoggingInterceptor().apply {
+ level = HttpLoggingInterceptor.Level.BODY
+ }
+ return OkHttpClient.Builder().apply {
+
+ addInterceptor (interceptor)
+ connectTimeout(5, TimeUnit.SECONDS)
+ readTimeout(5, TimeUnit.SECONDS)
+ writeTimeout(5, TimeUnit.SECONDS)
+ }.build()
+ }
+
+
@Provides
@Singleton
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
@@ -81,6 +103,20 @@ object NetworkModule {
}
}
+ @Provides
+ @Singleton
+ @Named("kakao")
+ fun providesKakaoRetrofit(
+ @Named("kakaoClient") client: OkHttpClient,
+ gsonConverterFactory: GsonConverterFactory
+ ): Retrofit {
+ return Retrofit.Builder()
+ .baseUrl(R.string.kakao.toString())
+ .addConverterFactory(gsonConverterFactory)
+ .client(client)
+ .build()
+ }
+
@Provides
@Singleton
fun provideTestApi(retrofit: Retrofit): TestApi {
@@ -117,6 +153,11 @@ object NetworkModule {
return retrofit.buildService()
}
+ @Provides
+ @Singleton
+ fun provideTermApi(retrofit: Retrofit): TermApi{
+ return retrofit.buildService()
+ }
@Provides
@Singleton
fun provideHomeApi(retrofit: Retrofit): HomeApi {
@@ -129,13 +170,18 @@ object NetworkModule {
return retrofit.buildService()
}
-
@Provides
@Singleton
fun provideSignupApi(retrofit: Retrofit): SignupApi {
return retrofit.buildService()
}
+ @Provides
+ @Singleton
+ fun providesKakaoService(@Named("kakao") retrofit: Retrofit):KakaoApi{
+ return retrofit.buildService()
+ }
+
@Provides
@Singleton
fun provideMyPage2Api(retrofit: Retrofit): MyPage2Api{
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadCommunicationActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadCommunicationActivity.kt
index 2ce093e1..27d45edb 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadCommunicationActivity.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadCommunicationActivity.kt
@@ -1,182 +1,182 @@
-package com.umc.ttoklip.presentation.hometown
-
-import android.content.Context
-import android.graphics.Rect
-import android.view.MotionEvent
-import android.view.inputmethod.InputMethodManager
-import android.widget.EditText
-import androidx.activity.viewModels
-import androidx.core.view.isVisible
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.lifecycleScope
-import androidx.lifecycle.repeatOnLifecycle
-import com.umc.ttoklip.R
-import com.umc.ttoklip.data.model.honeytip.ImageUrl
-import com.umc.ttoklip.data.model.town.CreateCommentRequest
-import com.umc.ttoklip.data.model.town.ReportRequest
-import com.umc.ttoklip.databinding.ActivityReadCommunicationBinding
-import com.umc.ttoklip.presentation.base.BaseActivity
-import com.umc.ttoklip.presentation.hometown.adapter.TownCommentAdapter
-import com.umc.ttoklip.presentation.honeytip.adapter.OnReadImageClickListener
-import com.umc.ttoklip.presentation.honeytip.adapter.ReadImageRVA
-import com.umc.ttoklip.presentation.honeytip.dialog.DeleteDialogFragment
-import com.umc.ttoklip.presentation.honeytip.dialog.ReportDialogFragment
-import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.launch
-
-@AndroidEntryPoint
-class ReadCommunicationActivity :
- BaseActivity(R.layout.activity_read_communication),
- OnReadImageClickListener {
- private val commentRVA by lazy {
- TownCommentAdapter({}, { commentId, reportRequest ->
- if (reportRequest != null) {
- viewModel.reportComment(commentId, reportRequest)
- } else {
- viewModel.deleteComment(commentId)
- }
- })
- }
- private val imageAdapter: ReadImageRVA by lazy {
- ReadImageRVA(this, this@ReadCommunicationActivity)
- }
- private val viewModel: ReadCommunicationVIewModel by viewModels()
- private var postId = 0L
-
- override fun initView() {
- binding.imageRv.adapter = imageAdapter
- binding.commentRv.adapter = commentRVA
- binding.reportBtn.bringToFront()
- postId = intent.getLongExtra("postId", 0)
- viewModel.savePostId(postId)
-
- binding.backBtn.setOnClickListener {
- finish()
- }
-
- binding.dotBtn.setOnClickListener {
- binding.reportBtn.isVisible = true
- }
-
- binding.reportBtn.setOnClickListener {
- val reportDialog = ReportDialogFragment()
- reportDialog.setDialogClickListener(object : ReportDialogFragment.DialogClickListener {
- override fun onClick(type: String, content: String) {
- viewModel.reportPost(ReportRequest(content = content, reportType = type))
- }
-
- })
- reportDialog.show(supportFragmentManager, reportDialog.tag)
- }
-
- binding.deleteBtn.setOnClickListener {
- val deleteDialog = DeleteDialogFragment()
- deleteDialog.setDialogClickListener(object : DeleteDialogFragment.DialogClickListener {
- override fun onClick() {
-
- }
- })
- deleteDialog.show(supportFragmentManager, deleteDialog.tag)
- }
-
- binding.cardView.setOnClickListener {
- if (binding.commentEt.text.toString().isNotBlank()) {
- viewModel.createComment(CreateCommentRequest(binding.commentEt.text.toString(), 0L))
- }
- }
- }
-
- override fun initObserver() {
- with(lifecycleScope) {
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.postId.collect {
- if (it != 0L) {
- viewModel.readCommunication(it)
- }
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.postContent.collect { response ->
- with(binding) {
- writerTv.text = response.writer
- titleTv.text = response.title
- contentT.text = response.content
- imageAdapter.submitList(response.imageUrls.map { url ->
- ImageUrl(
- imageUrl = url.postImageUrl
- )
- })
- if (response.likedByCurrentUser) {
- likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_on_20))
- } else {
- likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_off_20))
- }
- if (response.scrapedByCurrentUser) {
- bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_on_20))
- } else {
- bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_off_20))
- }
- commentRVA.submitList(response.commentResponse)
- }
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.like.collect {
- if (it) {
- binding.likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_on_20))
- } else {
- binding.likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_off_20))
- }
- }
- }
- }
-
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.scrap.collect {
- if (it) {
- binding.bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_on_20))
- } else {
- binding.bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_off_20))
- }
- }
- }
- }
-
-
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.scrap.collect {
-
- }
- }
- }
- }
- }
-
- override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
- if (event?.action == MotionEvent.ACTION_DOWN) {
- val v = currentFocus
- if (v is EditText) {
- val outRect = Rect()
- v.getGlobalVisibleRect(outRect)
- if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
- v.clearFocus()
- val imm: InputMethodManager =
- getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
- }
- }
- }
- return super.dispatchTouchEvent(event)
- }
-
- override fun onClick(imageUrl: String) {
-
- }
+package com.umc.ttoklip.presentation.hometown
+
+import android.content.Context
+import android.graphics.Rect
+import android.view.MotionEvent
+import android.view.inputmethod.InputMethodManager
+import android.widget.EditText
+import androidx.activity.viewModels
+import androidx.core.view.isVisible
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import com.umc.ttoklip.R
+import com.umc.ttoklip.data.model.honeytip.ImageUrl
+import com.umc.ttoklip.data.model.town.CreateCommentRequest
+import com.umc.ttoklip.data.model.town.ReportRequest
+import com.umc.ttoklip.databinding.ActivityReadCommunicationBinding
+import com.umc.ttoklip.presentation.base.BaseActivity
+import com.umc.ttoklip.presentation.hometown.adapter.TownCommentAdapter
+import com.umc.ttoklip.presentation.honeytip.adapter.OnReadImageClickListener
+import com.umc.ttoklip.presentation.honeytip.adapter.ReadImageRVA
+import com.umc.ttoklip.presentation.honeytip.dialog.DeleteDialogFragment
+import com.umc.ttoklip.presentation.honeytip.dialog.ReportDialogFragment
+import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.launch
+
+@AndroidEntryPoint
+class ReadCommunicationActivity :
+ BaseActivity(R.layout.activity_read_communication),
+ OnReadImageClickListener {
+ private val commentRVA by lazy {
+ TownCommentAdapter({}, { commentId, reportRequest ->
+ if (reportRequest != null) {
+ viewModel.reportComment(commentId, reportRequest)
+ } else {
+ viewModel.deleteComment(commentId)
+ }
+ })
+ }
+ private val imageAdapter: ReadImageRVA by lazy {
+ ReadImageRVA(this, this@ReadCommunicationActivity)
+ }
+ private val viewModel: ReadCommunicationVIewModel by viewModels()
+ private var postId = 0L
+
+ override fun initView() {
+ binding.imageRv.adapter = imageAdapter
+ binding.commentRv.adapter = commentRVA
+ binding.reportBtn.bringToFront()
+ postId = intent.getLongExtra("postId", 0)
+ viewModel.savePostId(postId)
+
+ binding.backBtn.setOnClickListener {
+ finish()
+ }
+
+ binding.dotBtn.setOnClickListener {
+ binding.reportBtn.isVisible = true
+ }
+
+ binding.reportBtn.setOnClickListener {
+ val reportDialog = ReportDialogFragment()
+ reportDialog.setDialogClickListener(object : ReportDialogFragment.DialogClickListener {
+ override fun onClick(type: String, content: String) {
+ viewModel.reportPost(ReportRequest(content = content, reportType = type))
+ }
+
+ })
+ reportDialog.show(supportFragmentManager, reportDialog.tag)
+ }
+
+ binding.deleteBtn.setOnClickListener {
+ val deleteDialog = DeleteDialogFragment()
+ deleteDialog.setDialogClickListener(object : DeleteDialogFragment.DialogClickListener {
+ override fun onClick() {
+
+ }
+ })
+ deleteDialog.show(supportFragmentManager, deleteDialog.tag)
+ }
+
+ binding.cardView.setOnClickListener {
+ if (binding.commentEt.text.toString().isNotBlank()) {
+ viewModel.createComment(CreateCommentRequest(binding.commentEt.text.toString(), 0L))
+ }
+ }
+ }
+
+ override fun initObserver() {
+ with(lifecycleScope) {
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.postId.collect {
+ if (it != 0L) {
+ viewModel.readCommunication(it)
+ }
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.postContent.collect { response ->
+ with(binding) {
+ writerTv.text = response.writer
+ titleTv.text = response.title
+ contentT.text = response.content
+ imageAdapter.submitList(response.imageUrls.map { url ->
+ ImageUrl(
+ imageUrl = url.postImageUrl
+ )
+ })
+ if (response.likedByCurrentUser) {
+ likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_on_20))
+ } else {
+ likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_off_20))
+ }
+ if (response.scrapedByCurrentUser) {
+ bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_on_20))
+ } else {
+ bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_off_20))
+ }
+ commentRVA.submitList(response.commentResponse)
+ }
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.like.collect {
+ if (it) {
+ binding.likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_on_20))
+ } else {
+ binding.likeImg.setImageDrawable(getDrawable(R.drawable.ic_heart_off_20))
+ }
+ }
+ }
+ }
+
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.scrap.collect {
+ if (it) {
+ binding.bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_on_20))
+ } else {
+ binding.bookmarkImg.setImageDrawable(getDrawable(R.drawable.ic_bookmark_off_20))
+ }
+ }
+ }
+ }
+
+
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.scrap.collect {
+
+ }
+ }
+ }
+ }
+ }
+
+ override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
+ if (event?.action == MotionEvent.ACTION_DOWN) {
+ val v = currentFocus
+ if (v is EditText) {
+ val outRect = Rect()
+ v.getGlobalVisibleRect(outRect)
+ if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
+ v.clearFocus()
+ val imm: InputMethodManager =
+ getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
+ }
+ }
+ }
+ return super.dispatchTouchEvent(event)
+ }
+
+ override fun onClick(imageUrl: String) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadTogetherActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadTogetherActivity.kt
index 5dfeab32..d7b408f2 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadTogetherActivity.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/hometown/ReadTogetherActivity.kt
@@ -1,185 +1,185 @@
-package com.umc.ttoklip.presentation.hometown
-
-import android.content.Context
-import android.graphics.Rect
-import android.text.SpannableString
-import android.text.style.ForegroundColorSpan
-import android.view.MotionEvent
-import android.view.inputmethod.InputMethodManager
-import android.widget.EditText
-import androidx.activity.viewModels
-import androidx.core.view.isVisible
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.lifecycleScope
-import androidx.lifecycle.repeatOnLifecycle
-import com.umc.ttoklip.R
-import com.umc.ttoklip.data.model.honeytip.ImageUrl
-import com.umc.ttoklip.data.model.town.CreateCommentRequest
-import com.umc.ttoklip.databinding.ActivityReadTogetherBinding
-import com.umc.ttoklip.presentation.base.BaseActivity
-import com.umc.ttoklip.presentation.hometown.adapter.TownCommentAdapter
-import com.umc.ttoklip.presentation.honeytip.adapter.OnReadImageClickListener
-import com.umc.ttoklip.presentation.honeytip.adapter.ReadImageRVA
-import com.umc.ttoklip.presentation.honeytip.dialog.DeleteDialogFragment
-import com.umc.ttoklip.presentation.honeytip.dialog.ReportDialogFragment
-import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.launch
-import java.util.Random
-
-@AndroidEntryPoint
-class ReadTogetherActivity :
- BaseActivity(R.layout.activity_read_together),
- OnReadImageClickListener {
- private val viewModel: ReadTogetherViewModel by viewModels()
- private val imageAdapter: ReadImageRVA by lazy {
- ReadImageRVA(this, this@ReadTogetherActivity)
- }
- private val commentRVA by lazy {
- TownCommentAdapter({}, { commentId, reportRequest ->
- if (reportRequest != null) {
- viewModel.reportComment(commentId, reportRequest)
- } else {
- viewModel.deleteComment(commentId)
- }
- })
- }
- private var postId = 0L
-
- override fun initView() {
- binding.imageRv.adapter = imageAdapter
- binding.commentRv.adapter = commentRVA
- binding.vm = viewModel
- postId = intent.getLongExtra("postId", 0)
- viewModel.savePostId(postId)
- binding.reportBtn.bringToFront()
-
-
- binding.deleteBtn.setOnClickListener {
- val deleteDialog = DeleteDialogFragment()
- deleteDialog.setDialogClickListener(object : DeleteDialogFragment.DialogClickListener {
- override fun onClick() {
-
- }
- })
- deleteDialog.show(supportFragmentManager, deleteDialog.tag)
- }
- binding.backBtn.setOnClickListener {
- finish()
- }
-
- binding.dotBtn.setOnClickListener {
- binding.reportBtn.isVisible = binding.reportBtn.isVisible.not()
- }
-
- binding.reportBtn.setOnClickListener {
- val reportDialog = ReportDialogFragment()
- reportDialog.setDialogClickListener(object : ReportDialogFragment.DialogClickListener {
- override fun onClick(type: String, content: String) {
-
- }
-
- })
- reportDialog.show(supportFragmentManager, reportDialog.tag)
- }
- val random = Random().nextInt(5)
- val amount = getString(R.string.join_stat_format, random, random + 1)
- val spannableAmount = SpannableString(amount)
- spannableAmount.setSpan(
- ForegroundColorSpan(getColor(R.color.blue)),
- AMOUNT_STRING_START,
- random.toString().length + AMOUNT_STRING_LENGTH,
- SPANNABLE_FLAG_ZERO
- )
- binding.currentJoinStatTv.text = spannableAmount
-
- binding.cardView.setOnClickListener {
- if (binding.commentEt.text.toString().isNotBlank()) {
- viewModel.createComment(CreateCommentRequest(binding.commentEt.text.toString(), 0L))
- }
- }
-
- }
-
- override fun initObserver() {
- with(lifecycleScope) {
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.joinState.collect {
- if (it.not()) {
- binding.joinBtn.background =
- getDrawable(R.drawable.rectangle_corner_10_strok_1_gray40)
-// binding.joinBtn.text = getString(R.string.cancel_join)
- } else {
- binding.joinBtn.background =
- getDrawable(R.drawable.yellow_btn_background)
-// binding.joinBtn.text = getString(R.string.join_together)
- }
- }
- }
- }
-
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.postId.collect {
- viewModel.readTogether(it)
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.postContent.collect { response ->
- with(binding) {
- writerTv.text = response.writer
- titleT.text = response.title
- contentT.text = response.content
- imageAdapter.submitList(response.imageUrls.map { url ->
- ImageUrl(
- imageUrl = url.postImageUrl
- )
- })
- commentRVA.submitList(response.commentResponse)
-
- }
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
-
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
-
- }
- }
- }
- }
-
- override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
- if (event?.action == MotionEvent.ACTION_DOWN) {
- val v = currentFocus
- if (v is EditText) {
- val outRect = Rect()
- v.getGlobalVisibleRect(outRect)
- if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
- v.clearFocus()
- val imm: InputMethodManager =
- getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
- }
- }
- }
- return super.dispatchTouchEvent(event)
- }
-
- companion object {
- private const val AMOUNT_STRING_START = 0
- private const val SPANNABLE_FLAG_ZERO = 0
- private const val AMOUNT_STRING_LENGTH = 1
- }
-
- override fun onClick(imageUrl: String) {
- TODO("Not yet implemented")
- }
+package com.umc.ttoklip.presentation.hometown
+
+import android.content.Context
+import android.graphics.Rect
+import android.text.SpannableString
+import android.text.style.ForegroundColorSpan
+import android.view.MotionEvent
+import android.view.inputmethod.InputMethodManager
+import android.widget.EditText
+import androidx.activity.viewModels
+import androidx.core.view.isVisible
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import com.umc.ttoklip.R
+import com.umc.ttoklip.data.model.honeytip.ImageUrl
+import com.umc.ttoklip.data.model.town.CreateCommentRequest
+import com.umc.ttoklip.databinding.ActivityReadTogetherBinding
+import com.umc.ttoklip.presentation.base.BaseActivity
+import com.umc.ttoklip.presentation.hometown.adapter.TownCommentAdapter
+import com.umc.ttoklip.presentation.honeytip.adapter.OnReadImageClickListener
+import com.umc.ttoklip.presentation.honeytip.adapter.ReadImageRVA
+import com.umc.ttoklip.presentation.honeytip.dialog.DeleteDialogFragment
+import com.umc.ttoklip.presentation.honeytip.dialog.ReportDialogFragment
+import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.launch
+import java.util.Random
+
+@AndroidEntryPoint
+class ReadTogetherActivity :
+ BaseActivity(R.layout.activity_read_together),
+ OnReadImageClickListener {
+ private val viewModel: ReadTogetherViewModel by viewModels()
+ private val imageAdapter: ReadImageRVA by lazy {
+ ReadImageRVA(this, this@ReadTogetherActivity)
+ }
+ private val commentRVA by lazy {
+ TownCommentAdapter({}, { commentId, reportRequest ->
+ if (reportRequest != null) {
+ viewModel.reportComment(commentId, reportRequest)
+ } else {
+ viewModel.deleteComment(commentId)
+ }
+ })
+ }
+ private var postId = 0L
+
+ override fun initView() {
+ binding.imageRv.adapter = imageAdapter
+ binding.commentRv.adapter = commentRVA
+ binding.vm = viewModel
+ postId = intent.getLongExtra("postId", 0)
+ viewModel.savePostId(postId)
+ binding.reportBtn.bringToFront()
+
+
+ binding.deleteBtn.setOnClickListener {
+ val deleteDialog = DeleteDialogFragment()
+ deleteDialog.setDialogClickListener(object : DeleteDialogFragment.DialogClickListener {
+ override fun onClick() {
+
+ }
+ })
+ deleteDialog.show(supportFragmentManager, deleteDialog.tag)
+ }
+ binding.backBtn.setOnClickListener {
+ finish()
+ }
+
+ binding.dotBtn.setOnClickListener {
+ binding.reportBtn.isVisible = binding.reportBtn.isVisible.not()
+ }
+
+ binding.reportBtn.setOnClickListener {
+ val reportDialog = ReportDialogFragment()
+ reportDialog.setDialogClickListener(object : ReportDialogFragment.DialogClickListener {
+ override fun onClick(type: String, content: String) {
+
+ }
+
+ })
+ reportDialog.show(supportFragmentManager, reportDialog.tag)
+ }
+ val random = Random().nextInt(5)
+ val amount = getString(R.string.join_stat_format, random, random + 1)
+ val spannableAmount = SpannableString(amount)
+ spannableAmount.setSpan(
+ ForegroundColorSpan(getColor(R.color.blue)),
+ AMOUNT_STRING_START,
+ random.toString().length + AMOUNT_STRING_LENGTH,
+ SPANNABLE_FLAG_ZERO
+ )
+ binding.currentJoinStatTv.text = spannableAmount
+
+ binding.cardView.setOnClickListener {
+ if (binding.commentEt.text.toString().isNotBlank()) {
+ viewModel.createComment(CreateCommentRequest(binding.commentEt.text.toString(), 0L))
+ }
+ }
+
+ }
+
+ override fun initObserver() {
+ with(lifecycleScope) {
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.joinState.collect {
+ if (it.not()) {
+ binding.joinBtn.background =
+ getDrawable(R.drawable.rectangle_corner_10_strok_1_gray40)
+// binding.joinBtn.text = getString(R.string.cancel_join)
+ } else {
+ binding.joinBtn.background =
+ getDrawable(R.drawable.yellow_btn_background)
+// binding.joinBtn.text = getString(R.string.join_together)
+ }
+ }
+ }
+ }
+
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.postId.collect {
+ viewModel.readTogether(it)
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.postContent.collect { response ->
+ with(binding) {
+ writerTv.text = response.writer
+ titleT.text = response.title
+ contentT.text = response.content
+ imageAdapter.submitList(response.imageUrls.map { url ->
+ ImageUrl(
+ imageUrl = url.postImageUrl
+ )
+ })
+ commentRVA.submitList(response.commentResponse)
+
+ }
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+
+ }
+ }
+ }
+ }
+
+ override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
+ if (event?.action == MotionEvent.ACTION_DOWN) {
+ val v = currentFocus
+ if (v is EditText) {
+ val outRect = Rect()
+ v.getGlobalVisibleRect(outRect)
+ if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
+ v.clearFocus()
+ val imm: InputMethodManager =
+ getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
+ }
+ }
+ }
+ return super.dispatchTouchEvent(event)
+ }
+
+ companion object {
+ private const val AMOUNT_STRING_START = 0
+ private const val SPANNABLE_FLAG_ZERO = 0
+ private const val AMOUNT_STRING_LENGTH = 1
+ }
+
+ override fun onClick(imageUrl: String) {
+ TODO("Not yet implemented")
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteCommunicationActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteCommunicationActivity.kt
index 90cb3606..25c84e13 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteCommunicationActivity.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteCommunicationActivity.kt
@@ -1,143 +1,143 @@
-package com.umc.ttoklip.presentation.hometown
-
-import android.content.Context
-import android.graphics.Rect
-import android.net.Uri
-import android.util.Log
-import android.view.MotionEvent
-import android.view.View
-import android.view.inputmethod.InputMethodManager
-import android.widget.EditText
-import androidx.activity.result.PickVisualMediaRequest
-import androidx.activity.result.contract.ActivityResultContracts
-import androidx.activity.viewModels
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.lifecycleScope
-import androidx.lifecycle.repeatOnLifecycle
-import com.umc.ttoklip.R
-import com.umc.ttoklip.databinding.ActivityWriteCommunicationBinding
-import com.umc.ttoklip.presentation.base.BaseActivity
-import com.umc.ttoklip.presentation.honeytip.adapter.Image
-import com.umc.ttoklip.presentation.honeytip.adapter.ImageRVA
-import com.umc.ttoklip.presentation.honeytip.dialog.ImageDialogFragment
-import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.launch
-
-@AndroidEntryPoint
-class WriteCommunicationActivity :
- BaseActivity(R.layout.activity_write_communication) {
- private val imageAdapter by lazy {
- ImageRVA(null)
- }
- private val viewModel: WriteCommunicationViewModel by viewModels()
- private val pickMultipleMedia = registerForActivityResult(
- ActivityResultContracts.PickMultipleVisualMedia(
- 100
- )
- ) { uris ->
- if (uris.isNotEmpty()) {
- updateImages(uris)
- } else {
- Log.d("PhotoPicker", "No media selected")
- }
- }
-
- override fun initView() {
- binding.vm = viewModel as WriteCommunicationViewModelImpl
- initImageRVA()
- addImage()
-
- binding.backBtn.setOnClickListener {
- finish()
- }
- }
-
- override fun initObserver() {
- with(lifecycleScope) {
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.doneButtonActivated.collect {
- binding.writeDoneBtn.isEnabled = it
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.title.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.content.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.content.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.images.collect {
- Log.d("uri image", it.toString())
- imageAdapter.submitList(it.toList())
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.closePage.collect {
- Log.d("close page", it.toString())
- if (it) finish()
- }
- }
- }
- }
- }
-
- private fun initImageRVA() {
- binding.imageRv.adapter = imageAdapter
- }
-
- private fun addImage() {
- binding.addImageBtn.setOnClickListener {
- val imageDialog = ImageDialogFragment()
- imageDialog.setDialogClickListener(object : ImageDialogFragment.DialogClickListener {
- override fun onClick() {
- binding.imageRv.visibility = View.VISIBLE
- pickMultipleMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
- }
- })
- imageDialog.show(supportFragmentManager, imageDialog.tag)
- }
- }
-
- private fun updateImages(uriList: List) {
- Log.d("uri", uriList.toString())
- val images = uriList.map { Image(it) }
- viewModel.addImages(images)
- }
-
- override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
- if (event?.action == MotionEvent.ACTION_DOWN) {
- val v = currentFocus
- if (v is EditText) {
- val outRect = Rect()
- v.getGlobalVisibleRect(outRect)
- if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
- v.clearFocus()
- val imm: InputMethodManager =
- getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
- }
- }
- }
- return super.dispatchTouchEvent(event)
- }
+package com.umc.ttoklip.presentation.hometown
+
+import android.content.Context
+import android.graphics.Rect
+import android.net.Uri
+import android.util.Log
+import android.view.MotionEvent
+import android.view.View
+import android.view.inputmethod.InputMethodManager
+import android.widget.EditText
+import androidx.activity.result.PickVisualMediaRequest
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.activity.viewModels
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import com.umc.ttoklip.R
+import com.umc.ttoklip.databinding.ActivityWriteCommunicationBinding
+import com.umc.ttoklip.presentation.base.BaseActivity
+import com.umc.ttoklip.presentation.honeytip.adapter.Image
+import com.umc.ttoklip.presentation.honeytip.adapter.ImageRVA
+import com.umc.ttoklip.presentation.honeytip.dialog.ImageDialogFragment
+import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.launch
+
+@AndroidEntryPoint
+class WriteCommunicationActivity :
+ BaseActivity(R.layout.activity_write_communication) {
+ private val imageAdapter by lazy {
+ ImageRVA(null)
+ }
+ private val viewModel: WriteCommunicationViewModel by viewModels()
+ private val pickMultipleMedia = registerForActivityResult(
+ ActivityResultContracts.PickMultipleVisualMedia(
+ 100
+ )
+ ) { uris ->
+ if (uris.isNotEmpty()) {
+ updateImages(uris)
+ } else {
+ Log.d("PhotoPicker", "No media selected")
+ }
+ }
+
+ override fun initView() {
+ binding.vm = viewModel as WriteCommunicationViewModelImpl
+ initImageRVA()
+ addImage()
+
+ binding.backBtn.setOnClickListener {
+ finish()
+ }
+ }
+
+ override fun initObserver() {
+ with(lifecycleScope) {
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.doneButtonActivated.collect {
+ binding.writeDoneBtn.isEnabled = it
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.title.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.content.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.content.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.images.collect {
+ Log.d("uri image", it.toString())
+ imageAdapter.submitList(it.toList())
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.closePage.collect {
+ Log.d("close page", it.toString())
+ if (it) finish()
+ }
+ }
+ }
+ }
+ }
+
+ private fun initImageRVA() {
+ binding.imageRv.adapter = imageAdapter
+ }
+
+ private fun addImage() {
+ binding.addImageBtn.setOnClickListener {
+ val imageDialog = ImageDialogFragment()
+ imageDialog.setDialogClickListener(object : ImageDialogFragment.DialogClickListener {
+ override fun onClick() {
+ binding.imageRv.visibility = View.VISIBLE
+ pickMultipleMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
+ }
+ })
+ imageDialog.show(supportFragmentManager, imageDialog.tag)
+ }
+ }
+
+ private fun updateImages(uriList: List) {
+ Log.d("uri", uriList.toString())
+ val images = uriList.map { Image(it) }
+ viewModel.addImages(images)
+ }
+
+ override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
+ if (event?.action == MotionEvent.ACTION_DOWN) {
+ val v = currentFocus
+ if (v is EditText) {
+ val outRect = Rect()
+ v.getGlobalVisibleRect(outRect)
+ if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
+ v.clearFocus()
+ val imm: InputMethodManager =
+ getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
+ }
+ }
+ }
+ return super.dispatchTouchEvent(event)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteTogetherActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteTogetherActivity.kt
index 40efb883..3fd70ae8 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteTogetherActivity.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/hometown/WriteTogetherActivity.kt
@@ -1,301 +1,301 @@
-package com.umc.ttoklip.presentation.hometown
-
-import android.content.Context
-import android.content.Intent
-import android.graphics.PorterDuff
-import android.graphics.PorterDuffColorFilter
-import android.graphics.Rect
-import android.icu.text.DecimalFormat
-import android.net.Uri
-import android.text.Editable
-import android.text.TextWatcher
-import android.util.Log
-import android.view.MotionEvent
-import android.view.View
-import android.view.inputmethod.EditorInfo
-import android.view.inputmethod.InputMethodManager
-import android.widget.EditText
-import androidx.activity.result.ActivityResultLauncher
-import androidx.activity.result.PickVisualMediaRequest
-import androidx.activity.result.contract.ActivityResultContracts
-import androidx.activity.viewModels
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.lifecycleScope
-import androidx.lifecycle.repeatOnLifecycle
-import com.umc.ttoklip.R
-import com.umc.ttoklip.databinding.ActivityWriteTogetherBinding
-import com.umc.ttoklip.presentation.base.BaseActivity
-import com.umc.ttoklip.presentation.hometown.dialog.InputMaxMemberDialogFragment
-import com.umc.ttoklip.presentation.hometown.dialog.TogetherDialog
-import com.umc.ttoklip.presentation.honeytip.adapter.Image
-import com.umc.ttoklip.presentation.honeytip.adapter.ImageRVA
-import com.umc.ttoklip.presentation.honeytip.dialog.ImageDialogFragment
-import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.launch
-
-@AndroidEntryPoint
-class WriteTogetherActivity :
- BaseActivity(R.layout.activity_write_together) {
- private val activityResultLauncher: ActivityResultLauncher =
- registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
- val addressIntent = it.data
- addressIntent?.let { aIntent ->
- val address = aIntent.getStringExtra("address")
- val addressDetail = aIntent.getStringExtra("addressDetail")
- binding.tradingPlaceTv.setTextColor(getColor(R.color.black))
- binding.tradingPlaceTv.compoundDrawables.forEach { drawable ->
- if (drawable != null) {
- drawable.colorFilter =
- PorterDuffColorFilter(getColor(R.color.black), PorterDuff.Mode.SRC_IN)
- }
- }
- binding.tradingPlaceTv.text = if (!addressDetail.isNullOrBlank()) {
- StringBuilder().append(address).append(" (").append(addressDetail).append(")")
- .toString()
- } else {
- StringBuilder().append(address).toString()
- }
- }
- }
- private val imageAdapter by lazy {
- ImageRVA(null)
- }
-
- private val pickMultipleMedia = registerForActivityResult(
- ActivityResultContracts.PickMultipleVisualMedia(
- 100
- )
- ) { uris ->
- if (uris.isNotEmpty()) {
- updateImages(uris)
- } else {
- Log.d("PhotoPicker", "No media selected")
- }
- }
- private val viewModel: WriteTogetherViewModel by viewModels()
- override fun initView() {
- binding.vm = viewModel as WriteTogetherViewModelImpl
- initImageRVA()
- addLink()
- addImage()
- binding.backBtn.setOnClickListener {
- finish()
- }
-
- binding.totalPriceTv.addTextChangedListener(object : TextWatcher {
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) =
- Unit
-
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
- s?.let {
- if (it.isBlank()) {
- viewModel.setTotalPrice(0)
- viewModel.checkDone()
- }
- }
- }
-
- override fun afterTextChanged(s: Editable?) = Unit
-
- })
- binding.totalPriceTv.setOnEditorActionListener { v, actionId, event ->
- var current = binding.totalPriceTv.text.toString()
- if (current.isBlank()) {
- viewModel.setTotalPrice(0)
- viewModel.checkDone()
- } else {
- if (current.contains(",")) {
- current = current.replace(",", "")
- }
- viewModel.setTotalPrice(current.toLong())
- if (actionId == EditorInfo.IME_ACTION_NEXT) {
- Log.d("price", current)
- if (current.length > 3) {
- val currentAmount = AMOUNT_FORMAT.format(current.toLong())
- binding.totalPriceTv.setText(currentAmount)
-// binding.totalPriceTv.compoundDrawables.forEach { drawable ->
-// if (drawable != null) {
-// drawable.colorFilter =
-// PorterDuffColorFilter(
-// getColor(R.color.black),
-// PorterDuff.Mode.SRC_IN
-// )
-// }
-// }
- }
- }
- }
-
- false
- }
-
- binding.maxMemberTv.setOnClickListener {
- val bottomSheet = InputMaxMemberDialogFragment { member ->
- viewModel.setTotalMember(member.toLong())
- binding.maxMemberTv.text = getString(R.string.max_member_format, member)
- binding.maxMemberTv.compoundDrawables.forEach { drawable ->
- if (drawable != null) {
- drawable.colorFilter =
- PorterDuffColorFilter(
- getColor(R.color.black),
- PorterDuff.Mode.SRC_IN
- )
- }
- }
- binding.maxMemberTv.hint = ""
- }
- bottomSheet.show(supportFragmentManager, bottomSheet.tag)
- }
-
- binding.tradingPlaceTv.setOnClickListener {
- val intent = Intent(this, TradeLocationActivity::class.java)
- activityResultLauncher.launch(intent)
- }
- }
-
- override fun initObserver() {
- with(lifecycleScope) {
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.doneButtonActivated.collect {
- binding.writeDoneBtn.isEnabled = it
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.title.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.content.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.totalPrice.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.totalMember.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.dealPlace.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.openLink.collect {
- viewModel.checkDone()
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.content.collect {
- viewModel.checkDone()
- }
- }
- }
-
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.images.collect {
- Log.d("uri image", it.toString())
- imageAdapter.submitList(it.toList())
- }
- }
- }
-
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.doneWriteTogether.collect {
- if (it) {
- val together = TogetherDialog()
- together.setDialogClickListener(object :
- TogetherDialog.TogetherDialogClickListener {
- override fun onClick() {
- viewModel.writeTogether()
- }
- })
- together.show(supportFragmentManager, together.tag)
- }
- }
- }
- }
-
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- viewModel.closePage.collect {
- if (it) finish()
- }
- }
- }
- }
- }
-
- private fun addLink() {
- binding.addLinkBtn.setOnClickListener {
- binding.addLinkBtn.visibility = View.GONE
- binding.inputUrlBtn.visibility = View.VISIBLE
- }
- }
-
- private fun initImageRVA() {
- binding.imageRv.adapter = imageAdapter
- }
-
- private fun addImage() {
- binding.addImageBtn.setOnClickListener {
- val imageDialog = ImageDialogFragment()
- imageDialog.setDialogClickListener(object : ImageDialogFragment.DialogClickListener {
- override fun onClick() {
- binding.imageRv.visibility = View.VISIBLE
- pickMultipleMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
- }
- })
- imageDialog.show(supportFragmentManager, imageDialog.tag)
- }
- }
-
- private fun updateImages(uriList: List) {
- Log.d("uri", uriList.toString())
- val images = uriList.map { Image(it) }
- viewModel.addImages(images)
- }
-
- override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
- if (event?.action == MotionEvent.ACTION_DOWN) {
- val v = currentFocus
- if (v is EditText) {
- val outRect = Rect()
- v.getGlobalVisibleRect(outRect)
- if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
- v.clearFocus()
- val imm: InputMethodManager =
- getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
- }
- }
- }
- return super.dispatchTouchEvent(event)
- }
-
- companion object {
- private val AMOUNT_FORMAT = DecimalFormat("#,###")
- }
+package com.umc.ttoklip.presentation.hometown
+
+import android.content.Context
+import android.content.Intent
+import android.graphics.PorterDuff
+import android.graphics.PorterDuffColorFilter
+import android.graphics.Rect
+import android.icu.text.DecimalFormat
+import android.net.Uri
+import android.text.Editable
+import android.text.TextWatcher
+import android.util.Log
+import android.view.MotionEvent
+import android.view.View
+import android.view.inputmethod.EditorInfo
+import android.view.inputmethod.InputMethodManager
+import android.widget.EditText
+import androidx.activity.result.ActivityResultLauncher
+import androidx.activity.result.PickVisualMediaRequest
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.activity.viewModels
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import com.umc.ttoklip.R
+import com.umc.ttoklip.databinding.ActivityWriteTogetherBinding
+import com.umc.ttoklip.presentation.base.BaseActivity
+import com.umc.ttoklip.presentation.hometown.dialog.InputMaxMemberDialogFragment
+import com.umc.ttoklip.presentation.hometown.dialog.TogetherDialog
+import com.umc.ttoklip.presentation.honeytip.adapter.Image
+import com.umc.ttoklip.presentation.honeytip.adapter.ImageRVA
+import com.umc.ttoklip.presentation.honeytip.dialog.ImageDialogFragment
+import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.launch
+
+@AndroidEntryPoint
+class WriteTogetherActivity :
+ BaseActivity(R.layout.activity_write_together) {
+ private val activityResultLauncher: ActivityResultLauncher =
+ registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
+ val addressIntent = it.data
+ addressIntent?.let { aIntent ->
+ val address = aIntent.getStringExtra("address")
+ val addressDetail = aIntent.getStringExtra("addressDetail")
+ binding.tradingPlaceTv.setTextColor(getColor(R.color.black))
+ binding.tradingPlaceTv.compoundDrawables.forEach { drawable ->
+ if (drawable != null) {
+ drawable.colorFilter =
+ PorterDuffColorFilter(getColor(R.color.black), PorterDuff.Mode.SRC_IN)
+ }
+ }
+ binding.tradingPlaceTv.text = if (!addressDetail.isNullOrBlank()) {
+ StringBuilder().append(address).append(" (").append(addressDetail).append(")")
+ .toString()
+ } else {
+ StringBuilder().append(address).toString()
+ }
+ }
+ }
+ private val imageAdapter by lazy {
+ ImageRVA(null)
+ }
+
+ private val pickMultipleMedia = registerForActivityResult(
+ ActivityResultContracts.PickMultipleVisualMedia(
+ 100
+ )
+ ) { uris ->
+ if (uris.isNotEmpty()) {
+ updateImages(uris)
+ } else {
+ Log.d("PhotoPicker", "No media selected")
+ }
+ }
+ private val viewModel: WriteTogetherViewModel by viewModels()
+ override fun initView() {
+ binding.vm = viewModel as WriteTogetherViewModelImpl
+ initImageRVA()
+ addLink()
+ addImage()
+ binding.backBtn.setOnClickListener {
+ finish()
+ }
+
+ binding.totalPriceTv.addTextChangedListener(object : TextWatcher {
+ override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) =
+ Unit
+
+ override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
+ s?.let {
+ if (it.isBlank()) {
+ viewModel.setTotalPrice(0)
+ viewModel.checkDone()
+ }
+ }
+ }
+
+ override fun afterTextChanged(s: Editable?) = Unit
+
+ })
+ binding.totalPriceTv.setOnEditorActionListener { v, actionId, event ->
+ var current = binding.totalPriceTv.text.toString()
+ if (current.isBlank()) {
+ viewModel.setTotalPrice(0)
+ viewModel.checkDone()
+ } else {
+ if (current.contains(",")) {
+ current = current.replace(",", "")
+ }
+ viewModel.setTotalPrice(current.toLong())
+ if (actionId == EditorInfo.IME_ACTION_NEXT) {
+ Log.d("price", current)
+ if (current.length > 3) {
+ val currentAmount = AMOUNT_FORMAT.format(current.toLong())
+ binding.totalPriceTv.setText(currentAmount)
+// binding.totalPriceTv.compoundDrawables.forEach { drawable ->
+// if (drawable != null) {
+// drawable.colorFilter =
+// PorterDuffColorFilter(
+// getColor(R.color.black),
+// PorterDuff.Mode.SRC_IN
+// )
+// }
+// }
+ }
+ }
+ }
+
+ false
+ }
+
+ binding.maxMemberTv.setOnClickListener {
+ val bottomSheet = InputMaxMemberDialogFragment { member ->
+ viewModel.setTotalMember(member.toLong())
+ binding.maxMemberTv.text = getString(R.string.max_member_format, member)
+ binding.maxMemberTv.compoundDrawables.forEach { drawable ->
+ if (drawable != null) {
+ drawable.colorFilter =
+ PorterDuffColorFilter(
+ getColor(R.color.black),
+ PorterDuff.Mode.SRC_IN
+ )
+ }
+ }
+ binding.maxMemberTv.hint = ""
+ }
+ bottomSheet.show(supportFragmentManager, bottomSheet.tag)
+ }
+
+ binding.tradingPlaceTv.setOnClickListener {
+ val intent = Intent(this, TradeLocationActivity::class.java)
+ activityResultLauncher.launch(intent)
+ }
+ }
+
+ override fun initObserver() {
+ with(lifecycleScope) {
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.doneButtonActivated.collect {
+ binding.writeDoneBtn.isEnabled = it
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.title.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.content.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.totalPrice.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.totalMember.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.dealPlace.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.openLink.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.content.collect {
+ viewModel.checkDone()
+ }
+ }
+ }
+
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.images.collect {
+ Log.d("uri image", it.toString())
+ imageAdapter.submitList(it.toList())
+ }
+ }
+ }
+
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.doneWriteTogether.collect {
+ if (it) {
+ val together = TogetherDialog()
+ together.setDialogClickListener(object :
+ TogetherDialog.TogetherDialogClickListener {
+ override fun onClick() {
+ viewModel.writeTogether()
+ }
+ })
+ together.show(supportFragmentManager, together.tag)
+ }
+ }
+ }
+ }
+
+ launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ viewModel.closePage.collect {
+ if (it) finish()
+ }
+ }
+ }
+ }
+ }
+
+ private fun addLink() {
+ binding.addLinkBtn.setOnClickListener {
+ binding.addLinkBtn.visibility = View.GONE
+ binding.inputUrlBtn.visibility = View.VISIBLE
+ }
+ }
+
+ private fun initImageRVA() {
+ binding.imageRv.adapter = imageAdapter
+ }
+
+ private fun addImage() {
+ binding.addImageBtn.setOnClickListener {
+ val imageDialog = ImageDialogFragment()
+ imageDialog.setDialogClickListener(object : ImageDialogFragment.DialogClickListener {
+ override fun onClick() {
+ binding.imageRv.visibility = View.VISIBLE
+ pickMultipleMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
+ }
+ })
+ imageDialog.show(supportFragmentManager, imageDialog.tag)
+ }
+ }
+
+ private fun updateImages(uriList: List) {
+ Log.d("uri", uriList.toString())
+ val images = uriList.map { Image(it) }
+ viewModel.addImages(images)
+ }
+
+ override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
+ if (event?.action == MotionEvent.ACTION_DOWN) {
+ val v = currentFocus
+ if (v is EditText) {
+ val outRect = Rect()
+ v.getGlobalVisibleRect(outRect)
+ if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
+ v.clearFocus()
+ val imm: InputMethodManager =
+ getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
+ }
+ }
+ }
+ return super.dispatchTouchEvent(event)
+ }
+
+ companion object {
+ private val AMOUNT_FORMAT = DecimalFormat("#,###")
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionCommentRVA.kt b/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionCommentRVA.kt
index 5f2d6eed..7bc8b83b 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionCommentRVA.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionCommentRVA.kt
@@ -1,120 +1,120 @@
-package com.umc.ttoklip.presentation.honeytip.adapter
-
-import android.util.Log
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.viewmodel.viewModelFactory
-import androidx.recyclerview.widget.DiffUtil
-import androidx.recyclerview.widget.ListAdapter
-import androidx.recyclerview.widget.RecyclerView
-import com.umc.ttoklip.TtoklipApplication
-import com.umc.ttoklip.data.model.news.comment.NewsCommentResponse
-import com.umc.ttoklip.databinding.ItemCommentBinding
-import com.umc.ttoklip.databinding.ItemQuestionCommentBinding
-import com.umc.ttoklip.databinding.ItemReplyBinding
-import com.umc.ttoklip.presentation.honeytip.read.ReadHoneyTipViewModel
-
-class QuestionCommentRVA (val replyComment: (Int) -> Unit, val ReportOrDelete: (Int, Boolean) -> Unit, val like: (Int, Boolean) -> Unit) :
- ListAdapter(differ) {
-
- inner class ItemViewHolder(
- private val binding: ItemQuestionCommentBinding
- ) : RecyclerView.ViewHolder(binding.root) {
-
- fun bind(data: NewsCommentResponse) {
- binding.item = data
- binding.replyBtn.setOnClickListener {
- replyComment(data.commentId)
- }
- binding.deleteBtn.setOnClickListener {
- ReportOrDelete(
- data.commentId,
- data.writer == TtoklipApplication.prefs.getString("nickname", "")
- )
- }
- binding.likeBtn.setOnClickListener {
- Log.d("commentId", data.commentId.toString())
- like(data.commentId, data.writer == TtoklipApplication.prefs.getString("nickname", ""))
- }
- }
- }
-
- inner class ItemReplyViewHolder(
- private val binding: ItemReplyBinding
- ) : RecyclerView.ViewHolder(binding.root) {
-
- fun bind(data: NewsCommentResponse) {
- binding.item = data
-
- binding.deleteBtn.setOnClickListener {
- Log.d("닉네임","${data.writer == TtoklipApplication.prefs.getString("nickname", "")}")
- ReportOrDelete(
- data.commentId,
- data.writer == TtoklipApplication.prefs.getString("nickname", "")
- )
- }
- }
- }
-
- override fun onCreateViewHolder(
- parent: ViewGroup,
- viewType: Int
- ): RecyclerView.ViewHolder {
- return when (viewType) {
- 0 -> {
- ItemViewHolder(
- ItemQuestionCommentBinding.inflate(
- LayoutInflater.from(parent.context),
- parent,
- false
- )
- )
- }
-
- else -> {
- ItemReplyViewHolder(
- ItemReplyBinding.inflate(
- LayoutInflater.from(parent.context),
- parent,
- false
- )
- )
- }
- }
- }
-
- override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
- when (getItemViewType(position)) {
- 0 -> {
- (holder as ItemViewHolder).bind(currentList[position])
- }
-
- else -> {
- (holder as ItemReplyViewHolder).bind(currentList[position])
- }
- }
- }
-
- override fun getItemViewType(position: Int): Int {
- return currentList[position].parentId ?: 0
- }
-
- companion object {
- val differ = object : DiffUtil.ItemCallback() {
- override fun areItemsTheSame(
- oldItem: NewsCommentResponse,
- newItem: NewsCommentResponse
- ): Boolean {
- return oldItem.commentId == newItem.commentId
- }
-
- override fun areContentsTheSame(
- oldItem: NewsCommentResponse,
- newItem: NewsCommentResponse
- ): Boolean {
- return oldItem == newItem
- }
- }
- }
+package com.umc.ttoklip.presentation.honeytip.adapter
+
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.viewmodel.viewModelFactory
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
+import com.umc.ttoklip.TtoklipApplication
+import com.umc.ttoklip.data.model.news.comment.NewsCommentResponse
+import com.umc.ttoklip.databinding.ItemCommentBinding
+import com.umc.ttoklip.databinding.ItemQuestionCommentBinding
+import com.umc.ttoklip.databinding.ItemReplyBinding
+import com.umc.ttoklip.presentation.honeytip.read.ReadHoneyTipViewModel
+
+class QuestionCommentRVA (val replyComment: (Int) -> Unit, val ReportOrDelete: (Int, Boolean) -> Unit, val like: (Int, Boolean) -> Unit) :
+ ListAdapter(differ) {
+
+ inner class ItemViewHolder(
+ private val binding: ItemQuestionCommentBinding
+ ) : RecyclerView.ViewHolder(binding.root) {
+
+ fun bind(data: NewsCommentResponse) {
+ binding.item = data
+ binding.replyBtn.setOnClickListener {
+ replyComment(data.commentId)
+ }
+ binding.deleteBtn.setOnClickListener {
+ ReportOrDelete(
+ data.commentId,
+ data.writer == TtoklipApplication.prefs.getString("nickname", "")
+ )
+ }
+ binding.likeBtn.setOnClickListener {
+ Log.d("commentId", data.commentId.toString())
+ like(data.commentId, data.writer == TtoklipApplication.prefs.getString("nickname", ""))
+ }
+ }
+ }
+
+ inner class ItemReplyViewHolder(
+ private val binding: ItemReplyBinding
+ ) : RecyclerView.ViewHolder(binding.root) {
+
+ fun bind(data: NewsCommentResponse) {
+ binding.item = data
+
+ binding.deleteBtn.setOnClickListener {
+ Log.d("닉네임","${data.writer == TtoklipApplication.prefs.getString("nickname", "")}")
+ ReportOrDelete(
+ data.commentId,
+ data.writer == TtoklipApplication.prefs.getString("nickname", "")
+ )
+ }
+ }
+ }
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): RecyclerView.ViewHolder {
+ return when (viewType) {
+ 0 -> {
+ ItemViewHolder(
+ ItemQuestionCommentBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ )
+ }
+
+ else -> {
+ ItemReplyViewHolder(
+ ItemReplyBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ )
+ }
+ }
+ }
+
+ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+ when (getItemViewType(position)) {
+ 0 -> {
+ (holder as ItemViewHolder).bind(currentList[position])
+ }
+
+ else -> {
+ (holder as ItemReplyViewHolder).bind(currentList[position])
+ }
+ }
+ }
+
+ override fun getItemViewType(position: Int): Int {
+ return currentList[position].parentId ?: 0
+ }
+
+ companion object {
+ val differ = object : DiffUtil.ItemCallback() {
+ override fun areItemsTheSame(
+ oldItem: NewsCommentResponse,
+ newItem: NewsCommentResponse
+ ): Boolean {
+ return oldItem.commentId == newItem.commentId
+ }
+
+ override fun areContentsTheSame(
+ oldItem: NewsCommentResponse,
+ newItem: NewsCommentResponse
+ ): Boolean {
+ return oldItem == newItem
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionListRVA.kt b/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionListRVA.kt
index 35e29fc2..9755997b 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionListRVA.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/honeytip/adapter/QuestionListRVA.kt
@@ -1,77 +1,77 @@
-package com.umc.ttoklip.presentation.honeytip.adapter
-
-import android.util.Log
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import androidx.recyclerview.widget.DiffUtil
-import androidx.recyclerview.widget.ListAdapter
-import androidx.recyclerview.widget.RecyclerView
-import com.umc.ttoklip.data.model.honeytip.HoneyTipMain
-import com.umc.ttoklip.databinding.ItemQuestionListBinding
-import java.text.SimpleDateFormat
-import java.util.Date
-
-class QuestionListRVA(private var listener: OnQuestionClickListener) :
- ListAdapter(object :
- DiffUtil.ItemCallback() {
- override fun areItemsTheSame(
- oldItem: HoneyTipMain,
- newItem: HoneyTipMain
- ): Boolean {
- return oldItem === newItem
- }
-
- override fun areContentsTheSame(
- oldItem: HoneyTipMain,
- newItem: HoneyTipMain
- ): Boolean {
- return oldItem == newItem
- }
-
- }) {
- private fun calculateDate(writtenDate: String): String {
- val currentDate = Date(System.currentTimeMillis())
-
- // SimpleDateFormat을 사용하여 문자열을 Date로 변환
- val sdf = SimpleDateFormat("yyyy.MM.dd hh:mm")
-
- val date = sdf.parse("20$writtenDate")
-
- // 두 날짜의 차이 계산
- val difference = currentDate.time - date.time
- val daysDifference = difference / (24 * 60 * 60 * 1000)
- Log.d("날짜 계산", "$currentDate 와 $writtenDate 사이의 날짜 차이: $daysDifference 일")
- return if (daysDifference == 0.toLong()) "오늘" else "${daysDifference}일전"
- }
-
- inner class QuestionListViewHolder(private val binding: ItemQuestionListBinding) :
- RecyclerView.ViewHolder(binding.root) {
- fun bind(honeyTip: HoneyTipMain) {
- binding.titleTv.text = honeyTip.title
- binding.writerTv.text = honeyTip.writer
- binding.dateTv.text = calculateDate(honeyTip.writtenTime)
- binding.bodyTv.text = honeyTip.content
- binding.commentCountTv.text = honeyTip.commentCount.toString()
-
- binding.root.setOnClickListener {
- listener.onClick(honeyTip)
- }
- }
- }
-
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QuestionListViewHolder {
- return QuestionListViewHolder(
- ItemQuestionListBinding.inflate(
- LayoutInflater.from(parent.context), parent, false
- )
- )
- }
-
- override fun onBindViewHolder(holder: QuestionListViewHolder, position: Int) {
- holder.bind(currentList[position])
- }
-}
-
-interface OnQuestionClickListener {
- fun onClick(honeyTip: HoneyTipMain)
+package com.umc.ttoklip.presentation.honeytip.adapter
+
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
+import com.umc.ttoklip.data.model.honeytip.HoneyTipMain
+import com.umc.ttoklip.databinding.ItemQuestionListBinding
+import java.text.SimpleDateFormat
+import java.util.Date
+
+class QuestionListRVA(private var listener: OnQuestionClickListener) :
+ ListAdapter(object :
+ DiffUtil.ItemCallback() {
+ override fun areItemsTheSame(
+ oldItem: HoneyTipMain,
+ newItem: HoneyTipMain
+ ): Boolean {
+ return oldItem === newItem
+ }
+
+ override fun areContentsTheSame(
+ oldItem: HoneyTipMain,
+ newItem: HoneyTipMain
+ ): Boolean {
+ return oldItem == newItem
+ }
+
+ }) {
+ private fun calculateDate(writtenDate: String): String {
+ val currentDate = Date(System.currentTimeMillis())
+
+ // SimpleDateFormat을 사용하여 문자열을 Date로 변환
+ val sdf = SimpleDateFormat("yyyy.MM.dd hh:mm")
+
+ val date = sdf.parse("20$writtenDate")
+
+ // 두 날짜의 차이 계산
+ val difference = currentDate.time - date.time
+ val daysDifference = difference / (24 * 60 * 60 * 1000)
+ Log.d("날짜 계산", "$currentDate 와 $writtenDate 사이의 날짜 차이: $daysDifference 일")
+ return if (daysDifference == 0.toLong()) "오늘" else "${daysDifference}일전"
+ }
+
+ inner class QuestionListViewHolder(private val binding: ItemQuestionListBinding) :
+ RecyclerView.ViewHolder(binding.root) {
+ fun bind(honeyTip: HoneyTipMain) {
+ binding.titleTv.text = honeyTip.title
+ binding.writerTv.text = honeyTip.writer
+ binding.dateTv.text = calculateDate(honeyTip.writtenTime)
+ binding.bodyTv.text = honeyTip.content
+ binding.commentCountTv.text = honeyTip.commentCount.toString()
+
+ binding.root.setOnClickListener {
+ listener.onClick(honeyTip)
+ }
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QuestionListViewHolder {
+ return QuestionListViewHolder(
+ ItemQuestionListBinding.inflate(
+ LayoutInflater.from(parent.context), parent, false
+ )
+ )
+ }
+
+ override fun onBindViewHolder(holder: QuestionListViewHolder, position: Int) {
+ holder.bind(currentList[position])
+ }
+}
+
+interface OnQuestionClickListener {
+ fun onClick(honeyTip: HoneyTipMain)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/intro/SplashActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/intro/SplashActivity.kt
index 38128024..9b08eb7a 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/intro/SplashActivity.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/intro/SplashActivity.kt
@@ -1,36 +1,36 @@
-package com.umc.ttoklip.presentation.intro
-
-import android.content.Intent
-import android.os.Handler
-import android.os.Looper
-import com.umc.ttoklip.R
-import com.umc.ttoklip.TtoklipApplication
-import com.umc.ttoklip.databinding.ActivitySplashBinding
-import com.umc.ttoklip.presentation.MainActivity
-import com.umc.ttoklip.presentation.base.BaseActivity
-import com.umc.ttoklip.presentation.login.LoginActivity
-
-class SplashActivity:BaseActivity(R.layout.activity_splash) {
- override fun initView() {
- val handler= Handler(Looper.getMainLooper())
- handler.postDelayed({
- val spf=getSharedPreferences("first", MODE_PRIVATE)
- val firstRun=spf.getBoolean("firstRun",true)
- //TtoklipApplication.prefs.setBoolean("isFirstLogin", true)
- val jwt=TtoklipApplication.prefs.getString("jwt","")
- val isFirstLogin=TtoklipApplication.prefs.getBoolean("isFirstLogin",true)
- if(firstRun){
- startActivity(Intent(this, IntroActivity::class.java))
- finish()
- }else if(jwt.isNotEmpty()&&!isFirstLogin){
- startActivity(Intent(this,MainActivity::class.java))
- finish()
- } else{
- startActivity(Intent(this, LoginActivity::class.java))
- finish()
- }
- },2000)
- }
- override fun initObserver() {
- }
+package com.umc.ttoklip.presentation.intro
+
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import com.umc.ttoklip.R
+import com.umc.ttoklip.TtoklipApplication
+import com.umc.ttoklip.databinding.ActivitySplashBinding
+import com.umc.ttoklip.presentation.MainActivity
+import com.umc.ttoklip.presentation.base.BaseActivity
+import com.umc.ttoklip.presentation.login.LoginActivity
+
+class SplashActivity:BaseActivity(R.layout.activity_splash) {
+ override fun initView() {
+ val handler= Handler(Looper.getMainLooper())
+ handler.postDelayed({
+ val spf=getSharedPreferences("first", MODE_PRIVATE)
+ val firstRun=spf.getBoolean("firstRun",true)
+ //TtoklipApplication.prefs.setBoolean("isFirstLogin", true)
+ val jwt=TtoklipApplication.prefs.getString("jwt","")
+ val isFirstLogin=TtoklipApplication.prefs.getBoolean("isFirstLogin",true)
+ if(firstRun){
+ startActivity(Intent(this, IntroActivity::class.java))
+ finish()
+ }else if(jwt.isNotEmpty()&&!isFirstLogin){
+ startActivity(Intent(this,MainActivity::class.java))
+ finish()
+ } else{
+ startActivity(Intent(this, LoginActivity::class.java))
+ finish()
+ }
+ },2000)
+ }
+ override fun initObserver() {
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/login/LoginActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/login/LoginActivity.kt
index 3e9a43b8..cd180aee 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/login/LoginActivity.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/login/LoginActivity.kt
@@ -53,6 +53,8 @@ class LoginActivity : BaseActivity(R.layout.activity_login
}
}
NaverIdLoginSDK.authenticate(this, oauthLoginCallback)
+ //네이버 토큰 임시확인용
+ Log.i("NAVER-LOGIN","${NaverIdLoginSDK.getAccessToken()}")
}
binding.loginKakaoBtn.setOnClickListener {
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/mypage/ChooseMainInterestDialogFragment.kt b/app/src/main/java/com/umc/ttoklip/presentation/mypage/ChooseMainInterestDialogFragment.kt
index 5a7f4922..b238c4f9 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/mypage/ChooseMainInterestDialogFragment.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/mypage/ChooseMainInterestDialogFragment.kt
@@ -24,9 +24,6 @@ class ChooseMainInterestDialogFragment(private val btnClickListener: (List
- get() = _newsDetail
-
- private val _comments = MutableStateFlow(listOf())
- override val comments: StateFlow>
- get() = _comments
-
- private val _imageUrls = MutableStateFlow(listOf())
- override val imageUrls: StateFlow>
- get() = _imageUrls
-
- override val replyCommentParentId = MutableStateFlow(0)
- override val commentContent = MutableStateFlow("")
-
- private val _toast = MutableStateFlow("")
- override val toast: MutableStateFlow
- get() = _toast
-
- private val _isLike = MutableStateFlow(false)
- override val isLike: MutableStateFlow
- get() = _isLike
-
- private val _isScrap = MutableStateFlow(false)
- override val isScrap: MutableStateFlow
- get() = _isScrap
-
- override fun getDetail(id: Int) {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.getDetailNews(id)
- .onSuccess {
- _newsDetail.emit(it)
- //라이크 스크랩 상태 받을 예정
- _isScrap.emit(it.scrapedByCurrentUser)
- _isLike.emit(it.likedByCurrentUser)
- _comments.emit(it.commentResponses.sortedBy { comment ->
- comment.parentId ?: comment.commentId
- })
- _imageUrls.emit(it.imageUrlList)
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
- override fun postComment(id: Int) {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.postCommentNews(
- id,
- NewsCommentRequest(commentContent.value, replyCommentParentId.value)
- ).onSuccess {
- getDetail(id)
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
-
- override fun deleteComment(id: Int, postId: Int) {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.deleteCommentNews(
- id
- ).onSuccess {
- getDetail(postId)
- _toast.emit("댓글을 삭제했습니다.")
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
- override fun postLike() {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.postLikeNews(
- newsDetail.value.newsletterId
- ).onSuccess {
- _isLike.emit(true)
- _newsDetail.emit(newsDetail.value.copy().also {
- it.likeCount += 1
- })
- _toast.emit("뉴스 좋아요")
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
- override fun deleteLike() {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.deleteLikeNews(
- newsDetail.value.newsletterId
- ).onSuccess {
- _isLike.emit(false)
- _newsDetail.emit(newsDetail.value.copy().also {
- it.likeCount -= 1
- })
- _toast.emit("뉴스 좋아요 취소")
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
- override fun postScrap() {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.postScrapNews(
- newsDetail.value.newsletterId
- ).onSuccess {
- _isScrap.emit(true)
- _newsDetail.emit(newsDetail.value.copy().also {
- it.scrapCount += 1
- })
- _toast.emit("뉴스 스크랩")
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
- override fun deleteScrap() {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.deleteScrapNews(
- newsDetail.value.newsletterId
- ).onSuccess {
- _isScrap.emit(false)
- _newsDetail.emit(newsDetail.value.copy().also {
- it.scrapCount -= 1
- })
- _toast.emit("뉴스 스크랩 취소")
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
- override fun postReportNews(id: Int, request: ReportRequest) {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.postReportNews(
- id,
- request
- ).onSuccess {
- _toast.emit("게시글을 신고했습니다.")
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
- override fun postReportComment(id: Int, request: ReportRequest) {
- viewModelScope.launch(Dispatchers.IO) {
- try {
- newsRepository.postReportCommentNews(
- id,
- request
- ).onSuccess {
- _toast.emit("댓글을 신고했습니다.")
- }.onFail {
-
- }.onException {
- throw it
- }
- } catch (e: Exception) {
- e.printStackTrace()
- Log.d("예외", "$e")
- }
- }
- }
-
-
+package com.umc.ttoklip.presentation.news.detail
+
+import android.util.Log
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import com.umc.ttoklip.data.model.news.ReportRequest
+import com.umc.ttoklip.data.model.news.comment.NewsCommentRequest
+import com.umc.ttoklip.data.model.news.comment.NewsCommentResponse
+import com.umc.ttoklip.data.model.news.detail.ImageUrl
+import com.umc.ttoklip.data.model.news.detail.NewsDetailResponse
+import com.umc.ttoklip.data.repository.news.NewsRepository
+import com.umc.ttoklip.module.onException
+import com.umc.ttoklip.module.onFail
+import com.umc.ttoklip.module.onSuccess
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.launch
+import javax.inject.Inject
+
+@HiltViewModel
+class ArticleViewModelImpl @Inject constructor(
+ private val newsRepository: NewsRepository
+) : ViewModel(), ArticleViewModel {
+
+ private val _newsDetail = MutableStateFlow(NewsDetailResponse())
+ override val newsDetail: StateFlow
+ get() = _newsDetail
+
+ private val _comments = MutableStateFlow(listOf())
+ override val comments: StateFlow>
+ get() = _comments
+
+ private val _imageUrls = MutableStateFlow(listOf())
+ override val imageUrls: StateFlow>
+ get() = _imageUrls
+
+ override val replyCommentParentId = MutableStateFlow(0)
+ override val commentContent = MutableStateFlow("")
+
+ private val _toast = MutableStateFlow("")
+ override val toast: MutableStateFlow
+ get() = _toast
+
+ private val _isLike = MutableStateFlow(false)
+ override val isLike: MutableStateFlow
+ get() = _isLike
+
+ private val _isScrap = MutableStateFlow(false)
+ override val isScrap: MutableStateFlow
+ get() = _isScrap
+
+ override fun getDetail(id: Int) {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.getDetailNews(id)
+ .onSuccess {
+ _newsDetail.emit(it)
+ //라이크 스크랩 상태 받을 예정
+ _isScrap.emit(it.scrapedByCurrentUser)
+ _isLike.emit(it.likedByCurrentUser)
+ _comments.emit(it.commentResponses.sortedBy { comment ->
+ comment.parentId ?: comment.commentId
+ })
+ _imageUrls.emit(it.imageUrlList)
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+ override fun postComment(id: Int) {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.postCommentNews(
+ id,
+ NewsCommentRequest(commentContent.value, replyCommentParentId.value)
+ ).onSuccess {
+ getDetail(id)
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+
+ override fun deleteComment(id: Int, postId: Int) {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.deleteCommentNews(
+ id
+ ).onSuccess {
+ getDetail(postId)
+ _toast.emit("댓글을 삭제했습니다.")
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+ override fun postLike() {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.postLikeNews(
+ newsDetail.value.newsletterId
+ ).onSuccess {
+ _isLike.emit(true)
+ _newsDetail.emit(newsDetail.value.copy().also {
+ it.likeCount += 1
+ })
+ _toast.emit("뉴스 좋아요")
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+ override fun deleteLike() {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.deleteLikeNews(
+ newsDetail.value.newsletterId
+ ).onSuccess {
+ _isLike.emit(false)
+ _newsDetail.emit(newsDetail.value.copy().also {
+ it.likeCount -= 1
+ })
+ _toast.emit("뉴스 좋아요 취소")
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+ override fun postScrap() {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.postScrapNews(
+ newsDetail.value.newsletterId
+ ).onSuccess {
+ _isScrap.emit(true)
+ _newsDetail.emit(newsDetail.value.copy().also {
+ it.scrapCount += 1
+ })
+ _toast.emit("뉴스 스크랩")
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+ override fun deleteScrap() {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.deleteScrapNews(
+ newsDetail.value.newsletterId
+ ).onSuccess {
+ _isScrap.emit(false)
+ _newsDetail.emit(newsDetail.value.copy().also {
+ it.scrapCount -= 1
+ })
+ _toast.emit("뉴스 스크랩 취소")
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+ override fun postReportNews(id: Int, request: ReportRequest) {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.postReportNews(
+ id,
+ request
+ ).onSuccess {
+ _toast.emit("게시글을 신고했습니다.")
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+ override fun postReportComment(id: Int, request: ReportRequest) {
+ viewModelScope.launch(Dispatchers.IO) {
+ try {
+ newsRepository.postReportCommentNews(
+ id,
+ request
+ ).onSuccess {
+ _toast.emit("댓글을 신고했습니다.")
+ }.onFail {
+
+ }.onException {
+ throw it
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Log.d("예외", "$e")
+ }
+ }
+ }
+
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/otheruser/OtheruserActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/otheruser/OtheruserActivity.kt
new file mode 100644
index 00000000..3ca3b0ed
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/presentation/otheruser/OtheruserActivity.kt
@@ -0,0 +1,15 @@
+package com.umc.ttoklip.presentation.otheruser
+
+import com.umc.ttoklip.R
+import com.umc.ttoklip.databinding.ActivityOtheruserProfileBinding
+import com.umc.ttoklip.databinding.ActivitySignupBinding
+import com.umc.ttoklip.presentation.base.BaseActivity
+
+class OtheruserActivity: BaseActivity(R.layout.activity_otheruser_profile) {
+ override fun initView() {
+ }
+
+ override fun initObserver() {
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/otheruser/OtheruserViewModel.kt b/app/src/main/java/com/umc/ttoklip/presentation/otheruser/OtheruserViewModel.kt
new file mode 100644
index 00000000..e21c1da7
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/presentation/otheruser/OtheruserViewModel.kt
@@ -0,0 +1,5 @@
+package com.umc.ttoklip.presentation.otheruser
+
+class OtheruserViewModel {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/DirectLocationActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/DirectLocationActivity.kt
deleted file mode 100644
index 0048314c..00000000
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/DirectLocationActivity.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.umc.ttoklip.presentation.signup
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import com.umc.ttoklip.R
-import com.umc.ttoklip.data.model.KakaoResponse
-import com.umc.ttoklip.databinding.ActivityDirectLocationBinding
-import com.umc.ttoklip.di.KakaoModule
-import com.umc.ttoklip.presentation.base.BaseActivity
-import retrofit2.Call
-import retrofit2.Response
-
-class DirectLocationActivity :
- BaseActivity(R.layout.activity_direct_location) {
- private val kakaoInfo = KakaoModule.kakaoAddress.Companion
- private val kakaoApi = KakaoModule.kakaoAddress.kakaoApiRetrofitClient.apiService
-
- override fun initView() {
- callKakaoSearch("서울시 관악구 조원로12길 28")
- }
-
- fun callKakaoSearch(address: String) {
- val kakao = MutableLiveData()
- kakaoApi.getSearchKeyword(kakaoInfo.API_KEY, query = address)
- .enqueue(object : retrofit2.Callback {
- override fun onResponse(
- call: Call,
- response: Response
- ) {
- kakao.value = response.body()
- Log.i("KAKAO SEARCH", "${kakao.value!!.documents[0].address_name}")
- }
-
- override fun onFailure(
- call: Call,
- t: Throwable
- ) {
- t.printStackTrace()
- }
- })
- }
-
- override fun initObserver() {
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup3Fragment.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup3Fragment.kt
index 56f233fc..ef54da91 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup3Fragment.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup3Fragment.kt
@@ -1,124 +1,138 @@
package com.umc.ttoklip.presentation.signup.fragments
import android.content.Context
-import androidx.activity.OnBackPressedCallback
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
import androidx.core.os.bundleOf
+import androidx.fragment.app.activityViewModels
+import androidx.fragment.app.viewModels
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
+import androidx.recyclerview.widget.LinearLayoutManager
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.FragmentSignup3Binding
+import com.umc.ttoklip.databinding.ItemTermBinding
import com.umc.ttoklip.presentation.base.BaseFragment
import com.umc.ttoklip.presentation.signup.SignupActivity
+import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+@AndroidEntryPoint
class Signup3Fragment : BaseFragment(R.layout.fragment_signup3) {
- var allAgree: Boolean = false
- var serviceAgree: Boolean = false
- var privacyAgree: Boolean = false
- var locationAgree: Boolean = false
+ private val viewModel: TermViewModel by activityViewModels()
+ private lateinit var termRVAdapter: TermRVAdapter
override fun initObserver() {
-
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ launch {
+ delay(300)
+ viewModel.termDatas.collect {
+ termRVAdapter.notifyDataSetChanged()
+ }
+ }
+ launch {
+ viewModel.nextok.collect {
+ if (it) {
+ binding.signup3NextBtn.isClickable = true
+ binding.signup3NextBtn.setBackgroundResource(R.drawable.rectangle_corner_10_yellow)
+ binding.signup3NextBtn.setTextAppearance(R.style.TextAppearance_App_16sp_700)
+ } else {
+ binding.signup3NextBtn.isClickable = false
+ binding.signup3NextBtn.setBackgroundResource(R.drawable.rectangle_corner_10_strok_1_black)
+ binding.signup3NextBtn.setTextAppearance(R.style.TextAppearance_App_16sp_500)
+ }
+ }
+ }
+ launch{
+ viewModel.allCheck.collect{
+ if(it){
+ binding.signup3AgreeAllIv.visibility=View.VISIBLE
+ binding.signup3DeagreeAllIv.visibility=View.INVISIBLE
+ termRVAdapter.notifyDataSetChanged()
+ }else{
+ binding.signup3AgreeAllIv.visibility=View.INVISIBLE
+ binding.signup3DeagreeAllIv.visibility=View.VISIBLE
+ termRVAdapter.notifyDataSetChanged()
+ }
+ }
+ }
+ }
+ }
}
override fun initView() {
val activity = activity as SignupActivity
activity?.setProg(1)
- binding.signup3AgreeAllIv.setOnClickListener {
- if (allAgree) {
- binding.signup3AgreeServiceIv.setImageResource(R.drawable.oval_stroke_1)
- binding.signup3AgreePrivacyIv.setImageResource(R.drawable.oval_stroke_1)
- binding.signup3AgreeLocationIv.setImageResource(R.drawable.oval_stroke_1)
- serviceAgree = false
- privacyAgree = false
- locationAgree = false
- } else {
- binding.signup3AgreeServiceIv.setImageResource(R.drawable.oval_double)
- binding.signup3AgreePrivacyIv.setImageResource(R.drawable.oval_double)
- binding.signup3AgreeLocationIv.setImageResource(R.drawable.oval_double)
- serviceAgree = true
- privacyAgree = true
- locationAgree = true
- }
- allAgreeCheck()
- nextok()
- }
+ //약관 불러오기
+ viewModel.getTerm()
+ //약관 rv 초기화하고 넣기-업데이트는 ovserve에서
+ termRVAdapter = TermRVAdapter(viewModel.termDatas.value)
+ binding.signup3TermsRV.adapter = termRVAdapter
+ binding.signup3TermsRV.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
+
- binding.signup3AgreeServiceIv.setOnClickListener {
- if(serviceAgree){
- serviceAgree=false
- binding.signup3AgreeServiceIv.setImageResource(R.drawable.oval_stroke_1)
- }else{
- serviceAgree=true
- binding.signup3AgreeServiceIv.setImageResource(R.drawable.oval_double)
+ //term rv click listener
+ termRVAdapter.setMyItemClickListener(object : TermRVAdapter.MyItemClickListener {
+ //fragment 이동
+ override fun onItemClick(termId: Int) {
}
- allAgreeCheck()
- nextok()
- }
- binding.signup3AgreeServiceBtn.setOnClickListener {
- activity.updateButtonForTerm()
- findNavController().navigate(R.id.action_signup3_fragment_to_signupTerm_fragment,
- bundleOf("termType" to "service"))
- }
- binding.signup3AgreePrivacyIv.setOnClickListener {
- if(privacyAgree){
- privacyAgree=false
- binding.signup3AgreePrivacyIv.setImageResource(R.drawable.oval_stroke_1)
- }else{
- privacyAgree=true
- binding.signup3AgreePrivacyIv.setImageResource(R.drawable.oval_double)
+ //off인 term을 누름
+ override fun onCheckTermOn(termId: Int) {
+ val id=viewModel.termCount.value-termId
+ viewModel.setTermCheck(id, true)
+ nextcheck()
}
- allAgreeCheck()
- nextok()
- }
- binding.signup3AgreePrivacyBtn.setOnClickListener {
- activity.updateButtonForTerm()
- findNavController().navigate(R.id.action_signup3_fragment_to_signupTerm_fragment,
- bundleOf("termType" to "privacy"))
- }
- binding.signup3AgreeLocationIv.setOnClickListener {
- if(locationAgree){
- locationAgree=false
- binding.signup3AgreeLocationIv.setImageResource(R.drawable.oval_stroke_1)
- }else{
- locationAgree=true
- binding.signup3AgreeLocationIv.setImageResource(R.drawable.oval_double)
+ //on인 term을 누름
+ override fun onCheckTermOff(termId: Int) {
+ val id=viewModel.termCount.value-termId
+ viewModel.setTermCheck(id, false)
+ nextcheck()
}
- allAgreeCheck()
- }
+ })
- binding.signup3AgreeLocationBtn.setOnClickListener {
- activity.updateButtonForTerm()
- findNavController().navigate(R.id.action_signup3_fragment_to_signupTerm_fragment,
- bundleOf("termType" to "location"))
+ //all check off
+ binding.signup3AgreeAllIv.setOnClickListener {
+ viewModel.setTermsCheck(false)
+ viewModel.allcheck(false)
+ termRVAdapter.notifyDataSetChanged()
+ nextcheck()
}
+ //all check on
+ binding.signup3DeagreeAllIv.setOnClickListener {
+ viewModel.setTermsCheck(true)
+ viewModel.allcheck(true)
+ termRVAdapter.notifyDataSetChanged()
+ nextcheck()
+ }
+
binding.signup3NextBtn.setOnClickListener {
- if (serviceAgree && privacyAgree) {
+ if (viewModel.nextok.value) {
findNavController().navigate(R.id.action_signup3_fragment_to_signup4_fragment)
}
}
}
- private fun allAgreeCheck() {
- if (serviceAgree && privacyAgree && locationAgree) {
- allAgree = true
- binding.signup3AgreeAllIv.setImageResource(R.drawable.oval_double)
- } else {
- allAgree = false
- binding.signup3AgreeAllIv.setImageResource(R.drawable.oval_stroke_1)
- }
- }
- private fun nextok(){
- if(serviceAgree&&privacyAgree){
- binding.signup3NextBtn.isClickable=true
- binding.signup3NextBtn.setBackgroundResource(R.drawable.rectangle_corner_10_yellow)
- binding.signup3NextBtn.setTextAppearance(R.style.TextAppearance_App_16sp_700)
- }else{
- binding.signup3NextBtn.isClickable=false
- binding.signup3NextBtn.setBackgroundResource(R.drawable.rectangle_corner_10_strok_1_black)
- binding.signup3NextBtn.setTextAppearance(R.style.TextAppearance_App_16sp_500)
+
+ private fun nextcheck() {
+ for (term in viewModel.termDatas.value) {
+ if (term.check == false) {
+ viewModel.allcheck(false)
+ viewModel.nextcheck(false)
+ return
+ }
}
+ viewModel.allcheck(true)
+ viewModel.nextcheck(true)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup4Fragment.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup4Fragment.kt
index dd367f62..efc92edf 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup4Fragment.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup4Fragment.kt
@@ -59,7 +59,7 @@ class Signup4Fragment : BaseFragment(R.layout.fragment_s
launch {
viewModel.nickcheckbtn.collect {
if (it) {
- delay(100)
+ delay(200)
viewModel.nickok.collect {
if (it) {
binding.signup4NickokTv.visibility = View.VISIBLE
@@ -164,7 +164,7 @@ class Signup4Fragment : BaseFragment(R.layout.fragment_s
val interestType =
if (interest.equals("집안일")) "HOUSEWORK"
- else if (interest.equals("요리")) "RECIPE"
+ else if (interest.equals("레시피")) "RECIPE"
else if (interest.equals("안전한 생활")) "SAFE_LIVING"
else "WELFARE_POLICY"
interestArray.add(interestType)
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup5Fragment.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup5Fragment.kt
index a466c830..6fae45f5 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup5Fragment.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/Signup5Fragment.kt
@@ -3,22 +3,15 @@ package com.umc.ttoklip.presentation.signup.fragments
import android.content.Intent
import android.os.Bundle
import android.widget.SeekBar
-import androidx.activity.viewModels
import androidx.core.content.ContextCompat
-import androidx.fragment.app.activityViewModels
-import androidx.fragment.app.viewModels
-import androidx.lifecycle.ViewModelProvider
import com.umc.ttoklip.R
-import com.umc.ttoklip.data.model.signup.SignupRequest
import com.umc.ttoklip.databinding.FragmentSignup5Binding
import com.umc.ttoklip.presentation.MainActivity
import com.umc.ttoklip.presentation.base.BaseFragment
import com.umc.ttoklip.presentation.login.LoginActivity
-import com.umc.ttoklip.presentation.signup.DirectLocationActivity
-import com.umc.ttoklip.presentation.signup.LocationActivity
+import com.umc.ttoklip.presentation.signup.location.DirectLocationActivity
+import com.umc.ttoklip.presentation.signup.location.LocationActivity
import com.umc.ttoklip.presentation.signup.SignupActivity
-import com.umc.ttoklip.presentation.signup.SignupViewModel
-import dagger.hilt.android.AndroidEntryPoint
class Signup5Fragment: BaseFragment(R.layout.fragment_signup5) {
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/SignupTermFragment.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/SignupTermFragment.kt
index 8d03bce8..ac43a9bf 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/SignupTermFragment.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/SignupTermFragment.kt
@@ -2,40 +2,38 @@ package com.umc.ttoklip.presentation.signup.fragments
import android.content.Context
import androidx.activity.OnBackPressedCallback
+import androidx.fragment.app.activityViewModels
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.FragmentSignup5Binding
import com.umc.ttoklip.databinding.FragmentSignupTermBinding
import com.umc.ttoklip.presentation.base.BaseFragment
import com.umc.ttoklip.presentation.signup.SignupActivity
+import dagger.hilt.android.AndroidEntryPoint
+@AndroidEntryPoint
class SignupTermFragment : BaseFragment(R.layout.fragment_signup_term) {
- private lateinit var callback:OnBackPressedCallback
+ private lateinit var callback: OnBackPressedCallback
+
+ private val viewModel: TermViewModel by activityViewModels()
override fun initObserver() {
}
override fun initView() {
- var termType = requireArguments().getString("termType")
- if (termType.toString().equals("service")) {
- binding.signupTermTitleTv.text = getString(R.string.service_term)
- binding.signupTermDetailTv.text = getString(R.string.service_term_detail)
- } else if (termType.toString().equals("privacy")) {
- binding.signupTermTitleTv.text = getString(R.string.privacy_term)
- binding.signupTermDetailTv.text = getString(R.string.privacy_term_detail)
- } else {
- binding.signupTermTitleTv.text = getString(R.string.location_term)
- binding.signupTermDetailTv.text = getString(R.string.location_term_detail)
- }
+ val title = arguments?.getString("title")
+ val content = arguments?.getString("content")
+ binding.signupTermTitleTv.text = title
+ binding.signupTermDetailTv.text = content
}
override fun onAttach(context: Context) {
super.onAttach(context)
- callback=object:OnBackPressedCallback(true){
+ callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
- val activity=activity as SignupActivity
+ val activity = activity as SignupActivity
activity.termBack()
}
}
- requireActivity().onBackPressedDispatcher.addCallback(this,callback)
+ requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/TermRVAdapter.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/TermRVAdapter.kt
new file mode 100644
index 00000000..ea1047ad
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/TermRVAdapter.kt
@@ -0,0 +1,75 @@
+package com.umc.ttoklip.presentation.signup.fragments
+
+import android.annotation.SuppressLint
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.umc.ttoklip.databinding.ItemTermBinding
+
+class TermRVAdapter(private val termList: ArrayList) :
+ RecyclerView.Adapter() {
+
+ interface MyItemClickListener {
+ fun onItemClick(termId: Int)
+ fun onCheckTermOn(termId: Int)
+ fun onCheckTermOff(termId: Int)
+ }
+
+ private lateinit var mItemClickListener: MyItemClickListener
+ fun setMyItemClickListener(itemClickListener: MyItemClickListener) {
+ mItemClickListener = itemClickListener
+ }
+
+ @SuppressLint("NotifyDataSetChanged")
+ fun checkTerm(){
+ notifyDataSetChanged()
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val binding: ItemTermBinding =
+ ItemTermBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return ViewHolder(binding)
+ }
+
+ override fun getItemCount(): Int = termList.size
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ holder.bind(termList[position])
+ holder.itemView.setOnClickListener {
+ mItemClickListener.onItemClick(termList[position].termId-1)
+ }
+ holder.binding.termAgreeServiceBtn.setOnClickListener {
+ if(holder.binding.termDetailSv.visibility.equals(View.VISIBLE)){
+ holder.binding.termDetailSv.visibility=View.GONE
+ }else{
+ holder.binding.termDetailSv.visibility=View.VISIBLE
+ }
+ checkTerm()
+ }
+ holder.binding.termAgreeServiceOnIv.setOnClickListener {
+ mItemClickListener.onCheckTermOff(termList[position].termId)
+ checkTerm()
+ }
+ holder.binding.termAgreeServiceOffIv.setOnClickListener {
+ mItemClickListener.onCheckTermOn(termList[position].termId)
+ checkTerm()
+ }
+ }
+
+ inner class ViewHolder(val binding: ItemTermBinding) : RecyclerView.ViewHolder(binding.root) {
+ fun bind(term: TermViewModel.Term) {
+ binding.termAgreeServiceTv.text = term.title
+ binding.termDetailTv.text=term.content
+ if (term.check) {
+ binding.termAgreeServiceOnIv.visibility = View.VISIBLE
+ binding.termAgreeServiceOffIv.visibility = View.INVISIBLE
+ } else {
+ binding.termAgreeServiceOnIv.visibility = View.INVISIBLE
+ binding.termAgreeServiceOffIv.visibility = View.VISIBLE
+ }
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/TermViewModel.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/TermViewModel.kt
index 378e9a1d..307c4138 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/TermViewModel.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/fragments/TermViewModel.kt
@@ -1,10 +1,71 @@
package com.umc.ttoklip.presentation.signup.fragments
+import android.util.Log
import androidx.lifecycle.ViewModel
-import com.umc.ttoklip.data.repository.signup.SignupRepositoryImpl
+import androidx.lifecycle.viewModelScope
+import com.umc.ttoklip.R
+import com.umc.ttoklip.data.repository.signup.TermRepositoryImpl
+import com.umc.ttoklip.module.onFail
+import com.umc.ttoklip.module.onSuccess
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.launch
import javax.inject.Inject
+@HiltViewModel
class TermViewModel @Inject constructor(
- private val signupRepository: SignupRepositoryImpl
+ private val termRepository: TermRepositoryImpl,
) : ViewModel() {
+
+ private val _termDatas= MutableStateFlow>(ArrayList())
+ val termDatas: StateFlow>
+ get() = _termDatas
+
+ private val _nextok= MutableStateFlow(false)
+ val nextok:StateFlow
+ get() = _nextok
+ private val _allCheck= MutableStateFlow(false)
+ val allCheck:StateFlow
+ get() = _allCheck
+
+ fun nextcheck(check:Boolean){
+ _nextok.value=check
+ }
+ fun allcheck(check:Boolean){
+ _allCheck.value=check
+ }
+ fun setTermsCheck(check:Boolean){
+ for(term in _termDatas.value){
+ _termDatas.value[term.termId-1].check=check
+ }
+ }
+ fun setTermCheck(position:Int,check:Boolean){
+ _termDatas.value[position].check=check
+ }
+ fun getTerm() {
+ viewModelScope.launch {
+ termRepository.getTerm(0)
+ .onSuccess {
+ for(term in it.terms){
+ _termDatas.value.add(Term(term.termId,term.title,term.content))
+ }
+ _termCount.value=it.totalElements
+ Log.i("TERM","term 불러오기 성공")
+ }.onFail {
+ Log.d("TERM","term 불러오기 실패")
+ }
+ }
+ }
+
+ private val _termCount=MutableStateFlow(0)
+ val termCount:StateFlow
+ get() = _termCount
+
+ data class Term(
+ val termId: Int,
+ val title: String,
+ val content: String,
+ var check: Boolean = false
+ )
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationActivity.kt
new file mode 100644
index 00000000..5d4e3d76
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationActivity.kt
@@ -0,0 +1,44 @@
+package com.umc.ttoklip.presentation.signup.location
+
+import android.util.Log
+import androidx.lifecycle.MutableLiveData
+import com.umc.ttoklip.R
+import com.umc.ttoklip.data.model.KakaoResponse
+import com.umc.ttoklip.databinding.ActivityDirectLocationBinding
+import com.umc.ttoklip.di.KakaoModule
+import com.umc.ttoklip.presentation.base.BaseActivity
+import retrofit2.Call
+import retrofit2.Response
+
+class DirectLocationActivity :
+ BaseActivity(R.layout.activity_direct_location) {
+// private val kakaoApi = DirectLocationRepositoryImpl
+
+ override fun initView() {
+ callKakaoSearch("서울시 관악구 조원로12길 28")
+ }
+
+ fun callKakaoSearch(address: String) {
+// val kakao = MutableLiveData()
+// kakaoApi.getSearchKeyword(kakaoInfo.API_KEY, query = address)
+// .enqueue(object : retrofit2.Callback {
+// override fun onResponse(
+// call: Call,
+// response: Response
+// ) {
+// kakao.value = response.body()
+// Log.i("KAKAO SEARCH", "${kakao.value!!.documents[0].address_name}")
+// }
+//
+// override fun onFailure(
+// call: Call,
+// t: Throwable
+// ) {
+// t.printStackTrace()
+// }
+// })
+ }
+
+ override fun initObserver() {
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationModelView.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationModelView.kt
new file mode 100644
index 00000000..a076e404
--- /dev/null
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationModelView.kt
@@ -0,0 +1,33 @@
+package com.umc.ttoklip.presentation.signup.location
+
+import android.util.Log
+import androidx.lifecycle.MutableLiveData
+import com.umc.ttoklip.data.api.KakaoApi
+import com.umc.ttoklip.data.model.KakaoResponse
+import com.umc.ttoklip.data.repository.location.DirectLocationRepositoryImpl
+import com.umc.ttoklip.di.KakaoModule
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+
+class DirectLocationModelView(
+ private val kakaoApi:DirectLocationRepositoryImpl
+) {
+
+ fun getDirectaddress(){
+
+// val call=kakaoApi.getDirectAddress("서울시 관악구 조원로")
+// call.enqueue(object: Callback {
+// override fun onResponse(
+// call: Call,
+// response: Response
+// ) {
+// Log.i("LocaSearch","통신 성공:${response.body()}")
+// }
+// override fun onFailure(call: Call, t: Throwable) {
+// Log.w("LocaSearch","통신 실패: ${t.message}")
+// }
+// })
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/DirectLocationRVAdapter.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationRVAdapter.kt
similarity index 95%
rename from app/src/main/java/com/umc/ttoklip/presentation/signup/DirectLocationRVAdapter.kt
rename to app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationRVAdapter.kt
index c526ab51..37225564 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/DirectLocationRVAdapter.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/DirectLocationRVAdapter.kt
@@ -1,4 +1,4 @@
-package com.umc.ttoklip.presentation.signup
+package com.umc.ttoklip.presentation.signup.location
import android.view.LayoutInflater
import android.view.ViewGroup
diff --git a/app/src/main/java/com/umc/ttoklip/presentation/signup/LocationActivity.kt b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/LocationActivity.kt
similarity index 97%
rename from app/src/main/java/com/umc/ttoklip/presentation/signup/LocationActivity.kt
rename to app/src/main/java/com/umc/ttoklip/presentation/signup/location/LocationActivity.kt
index 27235860..2675d52e 100644
--- a/app/src/main/java/com/umc/ttoklip/presentation/signup/LocationActivity.kt
+++ b/app/src/main/java/com/umc/ttoklip/presentation/signup/location/LocationActivity.kt
@@ -1,4 +1,4 @@
-package com.umc.ttoklip.presentation.signup
+package com.umc.ttoklip.presentation.signup.location
import android.Manifest
import android.content.Intent
@@ -10,7 +10,6 @@ import android.widget.SeekBar
import androidx.activity.viewModels
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
-import androidx.fragment.app.viewModels
import com.naver.maps.geometry.LatLng
import com.naver.maps.map.LocationTrackingMode
import com.naver.maps.map.MapFragment
@@ -18,13 +17,14 @@ import com.naver.maps.map.NaverMap
import com.naver.maps.map.OnMapReadyCallback
import com.naver.maps.map.UiSettings
import com.naver.maps.map.overlay.CircleOverlay
-import com.naver.maps.map.overlay.OverlayImage
import com.naver.maps.map.util.FusedLocationSource
import com.umc.ttoklip.R
import com.umc.ttoklip.databinding.ActivityLocationBinding
import com.umc.ttoklip.presentation.MainActivity
import com.umc.ttoklip.presentation.base.BaseActivity
import com.umc.ttoklip.presentation.login.LoginActivity
+import com.umc.ttoklip.presentation.signup.SignupActivity
+import com.umc.ttoklip.presentation.signup.SignupViewModel
import dagger.hilt.android.AndroidEntryPoint
import java.util.Locale
@@ -112,7 +112,7 @@ class LocationActivity :
startActivity(Intent(this, MainActivity::class.java))
val loginActivity=LoginActivity.loginActivity
loginActivity?.finish()
- val signupActivity=SignupActivity.signupActivity
+ val signupActivity= SignupActivity.signupActivity
signupActivity?.finish()
finish()
}
diff --git a/app/src/main/res/layout/activity_direct_location.xml b/app/src/main/res/layout/activity_direct_location.xml
index dec1e31c..e04f5f0b 100644
--- a/app/src/main/res/layout/activity_direct_location.xml
+++ b/app/src/main/res/layout/activity_direct_location.xml
@@ -57,15 +57,15 @@
android:layout_marginEnd="10dp"
app:tint="@color/gray80" />
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_otheruser_profile.xml b/app/src/main/res/layout/activity_otheruser_profile.xml
new file mode 100644
index 00000000..4ce2cc48
--- /dev/null
+++ b/app/src/main/res/layout/activity_otheruser_profile.xml
@@ -0,0 +1,428 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_choose_main_interest.xml b/app/src/main/res/layout/fragment_choose_main_interest.xml
index 81a9611a..43c13321 100644
--- a/app/src/main/res/layout/fragment_choose_main_interest.xml
+++ b/app/src/main/res/layout/fragment_choose_main_interest.xml
@@ -24,11 +24,12 @@
@@ -68,18 +69,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
-
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools">
+
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ app:layout_constraintStart_toStartOf="@id/signup1_desc1_tv"
+ app:layout_constraintTop_toBottomOf="@id/signup1_desc1_tv" />
+
+ app:layout_constraintStart_toEndOf="@id/signup1_desc2_tv"
+ app:layout_constraintTop_toTopOf="@id/signup1_desc2_tv" />
+ app:layout_constraintTop_toTopOf="parent" />
+
+
+
+ app:layout_constraintStart_toStartOf="@id/signup3_agreeAll_tv"
+ app:layout_constraintTop_toBottomOf="@id/signup3_agreeAll_tv" />
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ tools:listitem="@layout/item_term"/>
+ app:layout_constraintStart_toStartOf="parent" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_question_comment.xml b/app/src/main/res/layout/item_question_comment.xml
index 340eb428..c337b7f4 100644
--- a/app/src/main/res/layout/item_question_comment.xml
+++ b/app/src/main/res/layout/item_question_comment.xml
@@ -1,129 +1,129 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_question_list.xml b/app/src/main/res/layout/item_question_list.xml
index fc93b70a..e72e1e4a 100644
--- a/app/src/main/res/layout/item_question_list.xml
+++ b/app/src/main/res/layout/item_question_list.xml
@@ -1,88 +1,88 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_term.xml b/app/src/main/res/layout/item_term.xml
index 4df08f30..be152f3c 100644
--- a/app/src/main/res/layout/item_term.xml
+++ b/app/src/main/res/layout/item_term.xml
@@ -11,13 +11,22 @@
+ android:visibility="visible"/>
+
+
+ app:layout_constraintBottom_toBottomOf="@id/term_agreeService_off_iv"
+ app:layout_constraintStart_toEndOf="@id/term_agreeService_off_iv"
+ app:layout_constraintTop_toTopOf="@id/term_agreeService_off_iv" />
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7a74e618..d3431113 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -34,7 +34,7 @@
주요 관심사 종류
없음
집안일
- 요리
+ 레시피
안전한 생활
사기
복지 · 정책