From 8d80ac39c5418bc1dcb336f82a3275aa5859ac50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=89=E1=85=B3=E1=86=BC?= =?UTF-8?q?=E1=84=92=E1=85=AE=E1=86=AB?= Date: Tue, 5 Dec 2023 03:34:52 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=8B=A0=EA=B3=A0=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/com/signal/data/api/ApiProvider.kt | 6 +++++- .../kotlin/com/signal/data/api/ReportApi.kt | 12 +++++++++++ .../kotlin/com/signal/data/api/SignalUrl.kt | 9 ++++++-- .../datasource/report/ReportDataSource.kt | 7 +++++++ .../datasource/report/ReportDataSourceImpl.kt | 14 +++++++++++++ .../data/model/report/ReportBugRequest.kt | 8 +++++++ .../data/repository/ReportRepositoryImpl.kt | 21 +++++++++++++++++++ 7 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 data/src/main/kotlin/com/signal/data/api/ReportApi.kt create mode 100644 data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSource.kt create mode 100644 data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSourceImpl.kt create mode 100644 data/src/main/kotlin/com/signal/data/model/report/ReportBugRequest.kt create mode 100644 data/src/main/kotlin/com/signal/data/repository/ReportRepositoryImpl.kt diff --git a/data/src/main/kotlin/com/signal/data/api/ApiProvider.kt b/data/src/main/kotlin/com/signal/data/api/ApiProvider.kt index efea3e70..acbddfc0 100644 --- a/data/src/main/kotlin/com/signal/data/api/ApiProvider.kt +++ b/data/src/main/kotlin/com/signal/data/api/ApiProvider.kt @@ -41,7 +41,7 @@ object ApiProvider { fun getRecommendApi(tokenInterceptor: TokenInterceptor): RecommendApi { return getRetrofit(tokenInterceptor).create(RecommendApi::class.java) } - + fun getReservationApi(tokenInterceptor: TokenInterceptor): ReservationApi { return getRetrofit(tokenInterceptor).create(ReservationApi::class.java) } @@ -49,4 +49,8 @@ object ApiProvider { fun getCoinApi(tokenInterceptor: TokenInterceptor): CoinApi { return getRetrofit(tokenInterceptor).create(CoinApi::class.java) } + + fun getReportApi(tokenInterceptor: TokenInterceptor): ReportApi { + return getRetrofit(tokenInterceptor).create(ReportApi::class.java) + } } diff --git a/data/src/main/kotlin/com/signal/data/api/ReportApi.kt b/data/src/main/kotlin/com/signal/data/api/ReportApi.kt new file mode 100644 index 00000000..190c42ac --- /dev/null +++ b/data/src/main/kotlin/com/signal/data/api/ReportApi.kt @@ -0,0 +1,12 @@ +package com.signal.data.api + +import com.signal.data.model.report.ReportBugRequest +import retrofit2.http.Body +import retrofit2.http.POST + +interface ReportApi { + @POST(SignalUrl.Report.ReportBug) + suspend fun reportBug( + @Body reportBugRequest: ReportBugRequest, + ) +} \ No newline at end of file diff --git a/data/src/main/kotlin/com/signal/data/api/SignalUrl.kt b/data/src/main/kotlin/com/signal/data/api/SignalUrl.kt index 79c126ae..cdd129fb 100644 --- a/data/src/main/kotlin/com/signal/data/api/SignalUrl.kt +++ b/data/src/main/kotlin/com/signal/data/api/SignalUrl.kt @@ -9,6 +9,7 @@ object SignalUrl { private const val reservation = "/reservation" private const val admin = "/admin" private const val coin = "/coin" + private const val report = "/report" object Users { const val SignIn = "$users/signin" @@ -39,11 +40,11 @@ object SignalUrl { const val DeleteDiary = "$diary/{diary_id}" } - object Recommend{ + object Recommend { const val FetchRecommends = "$recommend/list" const val RecommendId = "$recommend/{recommend_id}" } - + object Reservation { const val FetchHospitals = "$admin/hospital/list" const val FetchDayReservation = "$reservation/user" @@ -55,4 +56,8 @@ object SignalUrl { const val CreateCoin = coin const val FetchCoins = "$coin/list" } + + object Report { + const val ReportBug = report + } } diff --git a/data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSource.kt b/data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSource.kt new file mode 100644 index 00000000..af0d283e --- /dev/null +++ b/data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSource.kt @@ -0,0 +1,7 @@ +package com.signal.data.datasource.report + +import com.signal.data.model.report.ReportBugRequest + +interface ReportDataSource { + suspend fun reportBug(reportBugRequest: ReportBugRequest) +} \ No newline at end of file diff --git a/data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSourceImpl.kt b/data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSourceImpl.kt new file mode 100644 index 00000000..79a54a4e --- /dev/null +++ b/data/src/main/kotlin/com/signal/data/datasource/report/ReportDataSourceImpl.kt @@ -0,0 +1,14 @@ +package com.signal.data.datasource.report + +import com.signal.data.api.ReportApi +import com.signal.data.model.report.ReportBugRequest +import com.signal.data.util.ExceptionHandler + +class ReportDataSourceImpl( + private val reportApi: ReportApi, +) : ReportDataSource { + override suspend fun reportBug(reportBugRequest: ReportBugRequest) = + ExceptionHandler().httpRequest { + reportApi.reportBug(reportBugRequest = reportBugRequest) + }.sendRequest() +} \ No newline at end of file diff --git a/data/src/main/kotlin/com/signal/data/model/report/ReportBugRequest.kt b/data/src/main/kotlin/com/signal/data/model/report/ReportBugRequest.kt new file mode 100644 index 00000000..509aa816 --- /dev/null +++ b/data/src/main/kotlin/com/signal/data/model/report/ReportBugRequest.kt @@ -0,0 +1,8 @@ +package com.signal.data.model.report + +import com.google.gson.annotations.SerializedName + +class ReportBugRequest( + @SerializedName("content") val content: String, + @SerializedName("image") val image: String?, +) \ No newline at end of file diff --git a/data/src/main/kotlin/com/signal/data/repository/ReportRepositoryImpl.kt b/data/src/main/kotlin/com/signal/data/repository/ReportRepositoryImpl.kt new file mode 100644 index 00000000..c443cae5 --- /dev/null +++ b/data/src/main/kotlin/com/signal/data/repository/ReportRepositoryImpl.kt @@ -0,0 +1,21 @@ +package com.signal.data.repository + +import com.signal.data.datasource.report.ReportDataSource +import com.signal.data.model.report.ReportBugRequest +import com.signal.domain.repository.ReportRepository + +class ReportRepositoryImpl( + private val reportDataSource: ReportDataSource +) : ReportRepository { + override suspend fun reportBug( + content: String, + image: String?, + ) = kotlin.runCatching { + reportDataSource.reportBug( + reportBugRequest = ReportBugRequest( + content = content, + image = image, + ), + ) + } +} \ No newline at end of file From d66082b4d005383132a670b0c3abd62a37feff83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=89=E1=85=B3=E1=86=BC?= =?UTF-8?q?=E1=84=92=E1=85=AE=E1=86=AB?= Date: Tue, 5 Dec 2023 03:35:05 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=8B=A0=EA=B3=A0=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/signal/domain/repository/ReportRepository.kt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 domain/src/main/kotlin/com/signal/domain/repository/ReportRepository.kt diff --git a/domain/src/main/kotlin/com/signal/domain/repository/ReportRepository.kt b/domain/src/main/kotlin/com/signal/domain/repository/ReportRepository.kt new file mode 100644 index 00000000..e3f54f18 --- /dev/null +++ b/domain/src/main/kotlin/com/signal/domain/repository/ReportRepository.kt @@ -0,0 +1,8 @@ +package com.signal.domain.repository + +interface ReportRepository { + suspend fun reportBug( + content: String, + image: String?, + ): Result +} \ No newline at end of file From d75980b214eb3d0eab5b9a2adfe619f447e522f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=89=E1=85=B3=E1=86=BC?= =?UTF-8?q?=E1=84=92=E1=85=AE=E1=86=AB?= Date: Tue, 5 Dec 2023 03:35:38 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=A0=9C=EB=B3=B4=20=EB=B7=B0=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/bug/BugSideEffect.kt | 5 + .../signal_android/feature/bug/BugState.kt | 13 ++ .../feature/bug/BugViewModel.kt | 37 ++++++ .../signal_android/feature/bug/ReportBug.kt | 117 ++++++++++++++++++ .../feature/main/feed/CreatePost.kt | 2 +- presentation/src/main/res/values/strings.xml | 8 +- 6 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 presentation/src/main/java/com/signal/signal_android/feature/bug/BugSideEffect.kt create mode 100644 presentation/src/main/java/com/signal/signal_android/feature/bug/BugState.kt create mode 100644 presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt create mode 100644 presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt diff --git a/presentation/src/main/java/com/signal/signal_android/feature/bug/BugSideEffect.kt b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugSideEffect.kt new file mode 100644 index 00000000..79ca8a65 --- /dev/null +++ b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugSideEffect.kt @@ -0,0 +1,5 @@ +package com.signal.signal_android.feature.bug + +sealed interface BugSideEffect { + object Success: BugSideEffect +} \ No newline at end of file diff --git a/presentation/src/main/java/com/signal/signal_android/feature/bug/BugState.kt b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugState.kt new file mode 100644 index 00000000..400a5d51 --- /dev/null +++ b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugState.kt @@ -0,0 +1,13 @@ +package com.signal.signal_android.feature.bug + +internal data class BugState( + val content: String, + val image: String, +) { + companion object { + fun getDefaultState() = BugState( + content = "", + image = "", + ) + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt new file mode 100644 index 00000000..3bc105b1 --- /dev/null +++ b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt @@ -0,0 +1,37 @@ +package com.signal.signal_android.feature.bug + +import android.util.Log +import androidx.lifecycle.viewModelScope +import com.signal.domain.repository.ReportRepository +import com.signal.signal_android.BaseViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +internal class BugViewModel( + private val reportRepository: ReportRepository, +) : BaseViewModel(BugState.getDefaultState()) { + + internal fun reportBug() { + with(state.value) { + viewModelScope.launch(Dispatchers.IO) { + reportRepository.reportBug( + content = content, + image = image, + ).onSuccess { + postSideEffect(BugSideEffect.Success) + }.onFailure { + + } + } + } + } + + internal fun setContent(content: String) { + setState(state.value.copy(content = content)) + } + + internal fun setImage(image: String){ + Log.d("TEST", image) + setState(state.value.copy(image = image)) + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt b/presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt new file mode 100644 index 00000000..b3ce0918 --- /dev/null +++ b/presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt @@ -0,0 +1,117 @@ +package com.signal.signal_android.feature.bug + +import android.net.Uri +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.PickVisualMediaRequest +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.signal.data.util.FileUtil +import com.signal.signal_android.R +import com.signal.signal_android.designsystem.button.SignalFilledButton +import com.signal.signal_android.designsystem.component.Header +import com.signal.signal_android.designsystem.textfield.SignalTextField +import com.signal.signal_android.feature.file.AttachmentViewModel +import com.signal.signal_android.feature.main.feed.PostImage +import org.koin.androidx.compose.koinViewModel + +@Composable +internal fun ReportBug( + moveToBack: () -> Unit, + bugViewModel: BugViewModel = koinViewModel(), + attachmentViewModel: AttachmentViewModel = koinViewModel(), +) { + val state by bugViewModel.state.collectAsState() + val attachmentState by attachmentViewModel.state.collectAsState() + + LaunchedEffect(Unit) { + bugViewModel.sideEffect.collect { + when (it) { + is BugSideEffect.Success -> moveToBack() + } + } + } + + val context = LocalContext.current + + var imagePreview: Uri? by remember { mutableStateOf(null) } + val imageUrl by remember { mutableStateOf("") } + + val focusManager = LocalFocusManager.current + + val launcher = rememberLauncherForActivityResult(ActivityResultContracts.PickVisualMedia()) { + it?.run { + imagePreview = it + with(attachmentViewModel) { + setFile( + FileUtil.toFile( + context = context, + uri = this@run, + ) + ) + uploadFile() + } + } + } + + var reason by remember { mutableStateOf("") } + + Column( + modifier = Modifier + .fillMaxSize() + .padding( + start = 16.dp, + end = 16.dp, + bottom = 24.dp, + ) + ) { + Header( + title = stringResource(id = R.string.report_bug_header_title), + onLeadingClicked = moveToBack, + ) + Spacer(modifier = Modifier.height(12.dp)) + SignalTextField( + modifier = Modifier + .fillMaxHeight(0.5f) + .padding(bottom = 28.dp), + value = state.content, + onValueChange = bugViewModel::setContent, + showLength = true, + maxLength = 1000, + hint = stringResource(id = R.string.report_bug_hint_reason), + alignment = Alignment.Top, + ) + PostImage( + uri = { imagePreview }, + imageUrl = { imageUrl }, + ) { + focusManager.clearFocus() + launcher.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) + } + Spacer(modifier = Modifier.weight(1f)) + SignalFilledButton( + text = stringResource(id = R.string.my_page_secession_check), + onClick = { + bugViewModel.setImage(image = attachmentState.imageUrl) + bugViewModel.reportBug() + }, + ) + } +} \ No newline at end of file diff --git a/presentation/src/main/java/com/signal/signal_android/feature/main/feed/CreatePost.kt b/presentation/src/main/java/com/signal/signal_android/feature/main/feed/CreatePost.kt index 6c9edfef..8130d793 100644 --- a/presentation/src/main/java/com/signal/signal_android/feature/main/feed/CreatePost.kt +++ b/presentation/src/main/java/com/signal/signal_android/feature/main/feed/CreatePost.kt @@ -210,7 +210,7 @@ internal fun CreatePost( } @Composable -private fun PostImage( +internal fun PostImage( uri: () -> Uri?, imageUrl: () -> String?, onClick: () -> Unit, diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 9d07bb11..5d4b7c1c 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -244,7 +244,7 @@ sobbing image annoying image boredom image - + 진료 예약하기 승인 완료 @@ -253,7 +253,7 @@ 진료 예약 병원 이미지 일시 - + 병원 조회 @@ -297,4 +297,8 @@ 3 코인 획득! 2 코인 획득! 1 코인 획득! + + + 버그 제보 + 버그 내용을 입력해주세요 From 9359d78ae349ec7c01002b0c7f2dc4eab3f3de3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=89=E1=85=B3=E1=86=BC?= =?UTF-8?q?=E1=84=92=E1=85=AE=E1=86=AB?= Date: Tue, 5 Dec 2023 03:36:19 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=A0=9C=EB=B3=B4=20=EB=82=B4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/signal/signal_android/SignalApp.kt | 3 +++ .../main/java/com/signal/signal_android/feature/main/Main.kt | 4 +++- .../com/signal/signal_android/navigation/MainNavigation.kt | 2 ++ .../com/signal/signal_android/navigation/NavigationRoute.kt | 1 + .../com/signal/signal_android/navigation/UserNavigation.kt | 5 +++++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/presentation/src/main/java/com/signal/signal_android/SignalApp.kt b/presentation/src/main/java/com/signal/signal_android/SignalApp.kt index ce17f399..32afd432 100644 --- a/presentation/src/main/java/com/signal/signal_android/SignalApp.kt +++ b/presentation/src/main/java/com/signal/signal_android/SignalApp.kt @@ -138,6 +138,9 @@ internal fun SignalApp() { moveToEditProfile = { navController.navigate(NavigationRoute.Main.EditProfile) }, + moveToReportBug = { + navController.navigate(NavigationRoute.User.ReportBug) + } ) } } diff --git a/presentation/src/main/java/com/signal/signal_android/feature/main/Main.kt b/presentation/src/main/java/com/signal/signal_android/feature/main/Main.kt index fbb82081..e67b1f48 100644 --- a/presentation/src/main/java/com/signal/signal_android/feature/main/Main.kt +++ b/presentation/src/main/java/com/signal/signal_android/feature/main/Main.kt @@ -15,8 +15,8 @@ import com.signal.signal_android.designsystem.component.SignalBottomBar import com.signal.signal_android.feature.main.diary.Diary import com.signal.signal_android.feature.main.feed.Feed import com.signal.signal_android.feature.main.home.Home -import com.signal.signal_android.feature.main.recommend.Recommend import com.signal.signal_android.feature.main.mypage.MyPage +import com.signal.signal_android.feature.main.recommend.Recommend import com.signal.signal_android.navigation.NavigationRoute import java.util.UUID @@ -37,6 +37,7 @@ internal fun Main( moveToRecommends: (recommendType: String) -> Unit, moveToCoinHistory: () -> Unit, moveToEditProfile: () -> Unit, + moveToReportBug: () -> Unit, ) { val navController = rememberNavController() @@ -97,6 +98,7 @@ internal fun Main( moveToMoreAchievement = moveToMoreAchievement, moveToCoinHistory = moveToCoinHistory, moveToEditProfile = moveToEditProfile, + moveToReportBug = moveToReportBug, ) } } diff --git a/presentation/src/main/java/com/signal/signal_android/navigation/MainNavigation.kt b/presentation/src/main/java/com/signal/signal_android/navigation/MainNavigation.kt index 9e71f773..580462e4 100644 --- a/presentation/src/main/java/com/signal/signal_android/navigation/MainNavigation.kt +++ b/presentation/src/main/java/com/signal/signal_android/navigation/MainNavigation.kt @@ -42,6 +42,7 @@ internal fun NavGraphBuilder.mainNavigation( moveToRecommendDetails: (recommendId: UUID) -> Unit, moveToCoinHistory: () -> Unit, moveToEditProfile: () -> Unit, + moveToReportBug: () -> Unit, ) { navigation( startDestination = NavigationRoute.Main.Main, @@ -63,6 +64,7 @@ internal fun NavGraphBuilder.mainNavigation( moveToRecommends = moveToRecommends, moveToCoinHistory = moveToCoinHistory, moveToEditProfile = moveToEditProfile, + moveToReportBug = moveToReportBug, ) } diff --git a/presentation/src/main/java/com/signal/signal_android/navigation/NavigationRoute.kt b/presentation/src/main/java/com/signal/signal_android/navigation/NavigationRoute.kt index 614d1923..a9f2b275 100644 --- a/presentation/src/main/java/com/signal/signal_android/navigation/NavigationRoute.kt +++ b/presentation/src/main/java/com/signal/signal_android/navigation/NavigationRoute.kt @@ -13,6 +13,7 @@ sealed class NavigationRoute(val route: String) { const val DiagnosisLanding = "diagnosisLanding" const val Diagnosis = "diagnosis" const val DiagnosisComplete = "diagnosisComplete" + const val ReportBug = "reportBug" } object Main : NavigationRoute(route = "Main") { diff --git a/presentation/src/main/java/com/signal/signal_android/navigation/UserNavigation.kt b/presentation/src/main/java/com/signal/signal_android/navigation/UserNavigation.kt index 60c0e9cd..6ddc131f 100644 --- a/presentation/src/main/java/com/signal/signal_android/navigation/UserNavigation.kt +++ b/presentation/src/main/java/com/signal/signal_android/navigation/UserNavigation.kt @@ -3,6 +3,7 @@ package com.signal.signal_android.navigation import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import androidx.navigation.navigation +import com.signal.signal_android.feature.bug.ReportBug import com.signal.signal_android.feature.diagnosis.Diagnosis import com.signal.signal_android.feature.diagnosis.DiagnosisComplete import com.signal.signal_android.feature.diagnosis.DiagnosisLanding @@ -47,5 +48,9 @@ internal fun NavGraphBuilder.userNavigation( composable(NavigationRoute.User.DiagnosisComplete) { DiagnosisComplete(moveToMain = moveToMain) } + + composable(NavigationRoute.User.ReportBug){ + ReportBug(moveToBack = moveToBack) + } } } From 758aed8036297c75dcc0ddc23fceb7ef82a58f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=89=E1=85=B3=E1=86=BC?= =?UTF-8?q?=E1=84=92=E1=85=AE=E1=86=AB?= Date: Tue, 5 Dec 2023 03:36:33 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=A0=9C=EB=B3=B4=20koin=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/signal/signal_android/SignalApplication.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/presentation/src/main/java/com/signal/signal_android/SignalApplication.kt b/presentation/src/main/java/com/signal/signal_android/SignalApplication.kt index 28d9bb3f..1030fad6 100644 --- a/presentation/src/main/java/com/signal/signal_android/SignalApplication.kt +++ b/presentation/src/main/java/com/signal/signal_android/SignalApplication.kt @@ -16,6 +16,8 @@ import com.signal.data.datasource.file.AttachmentDataSource import com.signal.data.datasource.file.AttachmentDataSourceImpl import com.signal.data.datasource.recommend.RecommendDataSource import com.signal.data.datasource.recommend.RecommendDataSourceImpl +import com.signal.data.datasource.report.ReportDataSource +import com.signal.data.datasource.report.ReportDataSourceImpl import com.signal.data.datasource.reservation.ReservationDataSource import com.signal.data.datasource.reservation.ReservationDataSourceImpl import com.signal.data.datasource.user.local.LocalUserDataSource @@ -28,6 +30,7 @@ import com.signal.data.repository.DiagnosisRepositoryImpl import com.signal.data.repository.DiaryRepositoryImpl import com.signal.data.repository.FeedRepositoryImpl import com.signal.data.repository.RecommendRepositoryImpl +import com.signal.data.repository.ReportRepositoryImpl import com.signal.data.repository.ReservationRepositoryImpl import com.signal.data.repository.UserRepositoryImpl import com.signal.data.util.PreferenceManager @@ -38,6 +41,7 @@ import com.signal.domain.repository.DiagnosisRepository import com.signal.domain.repository.DiaryRepository import com.signal.domain.repository.FeedRepository import com.signal.domain.repository.RecommendRepository +import com.signal.domain.repository.ReportRepository import com.signal.domain.repository.ReservationRepository import com.signal.domain.repository.UserRepository import com.signal.domain.usecase.users.AddFamousSayingUseCase @@ -54,6 +58,7 @@ import com.signal.domain.usecase.users.SignInUseCase import com.signal.domain.usecase.users.SignOutUseCase import com.signal.domain.usecase.users.SignUpUseCase import com.signal.domain.usecase.users.UpdateUserInformationUseCase +import com.signal.signal_android.feature.bug.BugViewModel import com.signal.signal_android.feature.coin.CoinViewModel import com.signal.signal_android.feature.diagnosis.DiagnosisViewModel import com.signal.signal_android.feature.file.AttachmentViewModel @@ -104,6 +109,7 @@ val apiModule: Module single { ApiProvider.getRecommendApi(tokenInterceptor = get()) } single { ApiProvider.getReservationApi(tokenInterceptor = get()) } single { ApiProvider.getCoinApi(tokenInterceptor = get()) } + single { ApiProvider.getReportApi(tokenInterceptor = get()) } } val daoModule: Module @@ -149,6 +155,7 @@ val dataSourceModule: Module single { RecommendDataSourceImpl(recommendApi = get()) } single { ReservationDataSourceImpl(reservationApi = get()) } single { CoinDataSourceImpl(coinApi = get()) } + single { ReportDataSourceImpl(reportApi = get()) } } val repositoryModule: Module @@ -180,6 +187,9 @@ val repositoryModule: Module single { CoinRepositoryImpl(coinDataSource = get()) } + single { + ReportRepositoryImpl(reportDataSource = get()) + } } val useCaseModule: Module @@ -242,4 +252,5 @@ val viewModelModule: Module viewModel { RecommendViewModel(recommendRepository = get()) } viewModel { ReservationViewModel(reservationRepository = get()) } viewModel { CoinViewModel(coinRepository = get()) } + viewModel { BugViewModel(reportRepository = get()) } } From 262f7f6e0373227a9cfc76edcaef32aace7aa6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A5=E1=86=BC=E1=84=89=E1=85=B3=E1=86=BC?= =?UTF-8?q?=E1=84=92=E1=85=AE=E1=86=AB?= Date: Tue, 5 Dec 2023 03:36:48 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=EB=A7=88?= =?UTF-8?q?=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=A0=9C=EB=B3=B4=20=EC=B9=B4=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../signal/signal_android/feature/main/mypage/MyPage.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/presentation/src/main/java/com/signal/signal_android/feature/main/mypage/MyPage.kt b/presentation/src/main/java/com/signal/signal_android/feature/main/mypage/MyPage.kt index 2682a4c6..1b252806 100644 --- a/presentation/src/main/java/com/signal/signal_android/feature/main/mypage/MyPage.kt +++ b/presentation/src/main/java/com/signal/signal_android/feature/main/mypage/MyPage.kt @@ -59,6 +59,7 @@ internal fun MyPage( moveToMoreAchievement: () -> Unit, moveToCoinHistory: () -> Unit, moveToEditProfile: () -> Unit, + moveToReportBug: () -> Unit, myPageViewModel: MyPageViewModel = koinViewModel(), ) { var showSecessionDialog by remember { mutableStateOf(false) } @@ -151,13 +152,13 @@ internal fun MyPage( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(16.dp), ) { - /*CardUserTool( + CardUserTool( text = stringResource(id = R.string.my_page_bug_report), textColor = SignalColor.Black, icon = painterResource(id = R.drawable.ic_bug), tint = SignalColor.Black, - onClick = { *//* TODO *//* }, - )*/ + onClick = moveToReportBug, + ) CardUserTool( text = stringResource(id = R.string.my_page_logout), textColor = SignalColor.Black, From 53641b92b8f403b04628fd5e4c636458b8e06a07 Mon Sep 17 00:00:00 2001 From: Tmdhoon2 Date: Tue, 5 Dec 2023 09:04:00 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=20=ED=99=9C=EC=84=B1=ED=99=94=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/signal/signal_android/feature/bug/BugViewModel.kt | 2 -- .../java/com/signal/signal_android/feature/bug/ReportBug.kt | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt index 3bc105b1..6c56722b 100644 --- a/presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt +++ b/presentation/src/main/java/com/signal/signal_android/feature/bug/BugViewModel.kt @@ -1,6 +1,5 @@ package com.signal.signal_android.feature.bug -import android.util.Log import androidx.lifecycle.viewModelScope import com.signal.domain.repository.ReportRepository import com.signal.signal_android.BaseViewModel @@ -31,7 +30,6 @@ internal class BugViewModel( } internal fun setImage(image: String){ - Log.d("TEST", image) setState(state.value.copy(image = image)) } } \ No newline at end of file diff --git a/presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt b/presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt index b3ce0918..1abcfbe6 100644 --- a/presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt +++ b/presentation/src/main/java/com/signal/signal_android/feature/bug/ReportBug.kt @@ -112,6 +112,7 @@ internal fun ReportBug( bugViewModel.setImage(image = attachmentState.imageUrl) bugViewModel.reportBug() }, + enabled = state.content.isNotEmpty(), ) } } \ No newline at end of file