Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.toyou.toyouandroid.data.emotion.dto.EmotionRequest
import com.toyou.toyouandroid.data.emotion.dto.EmotionResponse
import com.toyou.toyouandroid.data.emotion.dto.YesterdayFriendsResponse
import retrofit2.Call
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
Expand All @@ -17,6 +18,11 @@ interface EmotionService {
@Body emotion: EmotionRequest
): Call<EmotionResponse>

@POST("users/emotions")
suspend fun patchEmotionSuspend(
@Body emotion: EmotionRequest
): Response<EmotionResponse>

@GET("diarycards/yesterday")
fun getYesterdayFriendCard(): Call<YesterdayFriendsResponse>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@ package com.toyou.toyouandroid.data.mypage.service

import com.toyou.toyouandroid.data.mypage.dto.MypageResponse
import retrofit2.Call
import retrofit2.Response
import retrofit2.http.GET

interface MypageService {

@GET("/users/mypage")
fun getMypage(): Call<MypageResponse>

@GET("/users/mypage")
suspend fun getMypageSuspend(): Response<MypageResponse>
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.toyou.toyouandroid.data.onboarding.service
import com.toyou.toyouandroid.data.onboarding.dto.request.SignUpRequest
import com.toyou.toyouandroid.data.onboarding.dto.response.SignUpResponse
import retrofit2.Call
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.DELETE
import retrofit2.http.Header
Expand All @@ -25,6 +26,11 @@ interface AuthService {
@Header("refreshToken") refreshToken: String
): Call<SignUpResponse>

@POST("auth/logout")
suspend fun logoutSuspend(
@Header("refreshToken") refreshToken: String
): Response<SignUpResponse>

@POST("auth/kakao")
fun kakaoLogin(
@Header("oauthAccessToken") accessToken: String
Expand All @@ -34,4 +40,9 @@ interface AuthService {
fun signOut(
@Header("refreshToken") refreshToken: String
): Call<SignUpResponse>

@DELETE("auth/unlink")
suspend fun signOutSuspend(
@Header("refreshToken") refreshToken: String
): Response<SignUpResponse>
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.toyou.toyouandroid.data.onboarding.dto.PatchNicknameRequest
import com.toyou.toyouandroid.data.onboarding.dto.PatchNicknameResponse
import com.toyou.toyouandroid.data.onboarding.dto.PatchStatusRequest
import retrofit2.Call
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.PATCH
Expand All @@ -18,13 +19,29 @@ interface OnboardingService {
@Query("userId") userId: Int
): Call<NicknameCheckResponse>

@GET("users/nickname/check")
suspend fun getNicknameCheckSuspend(
@Query("nickname") nickname: String,
@Query("userId") userId: Int
): Response<NicknameCheckResponse>

@PATCH("users/nickname")
fun patchNickname(
@Body request: PatchNicknameRequest
): Call<PatchNicknameResponse>

@PATCH("users/nickname")
suspend fun patchNicknameSuspend(
@Body request: PatchNicknameRequest
): Response<PatchNicknameResponse>

@PATCH("users/status")
fun patchStatus(
@Body request: PatchStatusRequest
): Call<PatchNicknameResponse>

@PATCH("users/status")
suspend fun patchStatusSuspend(
@Body request: PatchStatusRequest
): Response<PatchNicknameResponse>
}
32 changes: 32 additions & 0 deletions app/src/main/java/com/toyou/toyouandroid/di/AppModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.toyou.toyouandroid.di

import android.content.Context
import com.toyou.toyouandroid.data.onboarding.service.AuthService
import com.toyou.toyouandroid.utils.TokenManager
import com.toyou.toyouandroid.utils.TokenStorage
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object AppModule {

@Provides
@Singleton
fun provideTokenStorage(@ApplicationContext context: Context): TokenStorage {
return TokenStorage(context)
}

@Provides
@Singleton
fun provideTokenManager(
authService: AuthService,
tokenStorage: TokenStorage
): TokenManager {
return TokenManager(authService, tokenStorage)
}
}
64 changes: 64 additions & 0 deletions app/src/main/java/com/toyou/toyouandroid/di/NetworkModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.toyou.toyouandroid.di

import com.toyou.toyouandroid.data.onboarding.service.AuthService
import com.toyou.toyouandroid.data.onboarding.service.OnboardingService
import com.toyou.toyouandroid.data.emotion.service.EmotionService
import com.toyou.toyouandroid.data.mypage.service.MypageService
import com.toyou.toyouandroid.data.home.service.HomeService
import com.toyou.toyouandroid.network.AuthNetworkModule
import com.toyou.toyouandroid.network.NetworkModule
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import retrofit2.Retrofit
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {

@Provides
@Singleton
@AuthRetrofit
fun provideRetrofit(): Retrofit {
return AuthNetworkModule.getClient()
}

@Provides
@Singleton
@NonAuthRetrofit
fun provideNonAuthRetrofit(): Retrofit {
return NetworkModule.getClient()
}

Comment on lines +19 to +34
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

동일 이름 충돌로 인한 컴파일 오류: NetworkModule 참조가 자기 자신으로 바인딩됩니다

DI 모듈 객체명(NetworkModule)과 import된 네트워크 유틸(NetworkModule)이 이름이 동일해, return NetworkModule.getClient()가 현재 파일의 객체 자신을 가리켜 컴파일 에러가 발생합니다. alias로 즉시 수정하세요.

적용 diff:

-import com.toyou.toyouandroid.network.NetworkModule
+import com.toyou.toyouandroid.network.NetworkModule as LegacyNetworkModule
...
-    fun provideNonAuthRetrofit(): Retrofit {
-        return NetworkModule.getClient()
-    }
+    fun provideNonAuthRetrofit(): Retrofit {
+        return LegacyNetworkModule.getClient()
+    }
🤖 Prompt for AI Agents
In app/src/main/java/com/toyou/toyouandroid/di/NetworkModule.kt around lines 19
to 34, the DI object NetworkModule name conflicts with an imported network
utility of the same name causing return NetworkModule.getClient() to reference
the object itself; fix by aliasing the imported NetworkModule (e.g., import
...NetworkModule as NetworkUtil) or use the utility's fully-qualified name and
then change provideNonAuthRetrofit() to call the aliased/fully-qualified
getClient() (e.g., NetworkUtil.getClient()) so the DI object no longer
self-references.

@Provides
@Singleton
fun provideOnboardingService(@NonAuthRetrofit retrofit: Retrofit): OnboardingService {
return retrofit.create(OnboardingService::class.java)
}

@Provides
@Singleton
fun provideAuthService(@AuthRetrofit retrofit: Retrofit): AuthService {
return retrofit.create(AuthService::class.java)
}

@Provides
@Singleton
fun provideEmotionService(@AuthRetrofit retrofit: Retrofit): EmotionService {
return retrofit.create(EmotionService::class.java)
}

@Provides
@Singleton
fun provideMypageService(@AuthRetrofit retrofit: Retrofit): MypageService {
return retrofit.create(MypageService::class.java)
}

@Provides
@Singleton
fun provideHomeService(@AuthRetrofit retrofit: Retrofit): HomeService {
return retrofit.create(HomeService::class.java)
}
}
11 changes: 11 additions & 0 deletions app/src/main/java/com/toyou/toyouandroid/di/Qualifiers.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.toyou.toyouandroid.di

import javax.inject.Qualifier

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class AuthRetrofit

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class NonAuthRetrofit
22 changes: 22 additions & 0 deletions app/src/main/java/com/toyou/toyouandroid/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.toyou.toyouandroid.di

import com.toyou.toyouandroid.data.onboarding.service.OnboardingService
import com.toyou.toyouandroid.domain.profile.repository.ProfileRepository
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object RepositoryModule {

@Provides
@Singleton
fun provideProfileRepository(
onboardingService: OnboardingService
): ProfileRepository {
return ProfileRepository(onboardingService)
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.toyou.toyouandroid.domain.home.repository

import com.toyou.toyouandroid.data.home.dto.response.YesterdayCardResponse
import com.toyou.toyouandroid.data.home.service.HomeService
import com.toyou.toyouandroid.network.AuthNetworkModule
import com.toyou.toyouandroid.network.BaseResponse
import javax.inject.Inject
import javax.inject.Singleton

class HomeRepository {
private val client = AuthNetworkModule.getClient().create(HomeService::class.java)
@Singleton
class HomeRepository @Inject constructor(
private val homeService: HomeService
) {
suspend fun getCardDetail(id: Long) = homeService.getCardDetail(id)

suspend fun getCardDetail(id : Long)=client.getCardDetail(id)

suspend fun getYesterdayCard() = client.getCardYesterday()
suspend fun getYesterdayCard() = homeService.getCardYesterday()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.toyou.toyouandroid.domain.profile.repository

import com.toyou.toyouandroid.data.onboarding.dto.NicknameCheckResponse
import com.toyou.toyouandroid.data.onboarding.dto.PatchNicknameRequest
import com.toyou.toyouandroid.data.onboarding.dto.PatchNicknameResponse
import com.toyou.toyouandroid.data.onboarding.dto.PatchStatusRequest
import com.toyou.toyouandroid.data.onboarding.service.OnboardingService
import retrofit2.Response

class ProfileRepository(
private val onboardingService: OnboardingService
) {
suspend fun checkNickname(nickname: String, userId: Int): Response<NicknameCheckResponse> {
return onboardingService.getNicknameCheckSuspend(nickname, userId)
}

suspend fun updateNickname(nickname: String): Response<PatchNicknameResponse> {
return onboardingService.patchNicknameSuspend(PatchNicknameRequest(nickname))
}

suspend fun updateStatus(status: String): Response<PatchNicknameResponse> {
return onboardingService.patchStatusSuspend(PatchStatusRequest(status))
}
Comment on lines +21 to +23
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

반환 타입 오류: 상태 수정 API가 닉네임 응답 타입을 반환

updateStatusResponse<PatchNicknameResponse>를 반환하고 있어 타입 불일치로 이어집니다. PatchStatusResponse로 교체하세요.

-import com.toyou.toyouandroid.data.onboarding.dto.PatchNicknameResponse
+import com.toyou.toyouandroid.data.onboarding.dto.PatchNicknameResponse
+import com.toyou.toyouandroid.data.onboarding.dto.PatchStatusResponse
@@
-    suspend fun updateStatus(status: String): Response<PatchNicknameResponse> {
+    suspend fun updateStatus(status: String): Response<PatchStatusResponse> {
         return onboardingService.patchStatusSuspend(PatchStatusRequest(status))
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
suspend fun updateStatus(status: String): Response<PatchNicknameResponse> {
return onboardingService.patchStatusSuspend(PatchStatusRequest(status))
}
suspend fun updateStatus(status: String): Response<PatchStatusResponse> {
return onboardingService.patchStatusSuspend(PatchStatusRequest(status))
}
🤖 Prompt for AI Agents
In
app/src/main/java/com/toyou/toyouandroid/domain/profile/repository/ProfileRepository.kt
around lines 21 to 23, the method updateStatus is declared to return
Response<PatchNicknameResponse> but the status API returns PatchStatusResponse;
change the return type to Response<PatchStatusResponse>, update any related
imports/usages, and ensure the onboardingService.patchStatusSuspend call matches
the new response type (adjust service interface if necessary).

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.toyou.toyouandroid.R
import com.toyou.toyouandroid.databinding.ActivityMainBinding
import dagger.hilt.android.AndroidEntryPoint
import timber.log.Timber

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding
Expand Down
Loading
Loading