diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 71947879..91d7e548 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,7 +63,6 @@ android:exported="false" android:screenOrientation="portrait" /> - diff --git a/app/src/main/java/com/going/doorip/di/DataSourceModule.kt b/app/src/main/java/com/going/doorip/di/DataSourceModule.kt index 2f1583a2..295c4a9c 100644 --- a/app/src/main/java/com/going/doorip/di/DataSourceModule.kt +++ b/app/src/main/java/com/going/doorip/di/DataSourceModule.kt @@ -2,12 +2,14 @@ package com.going.doorip.di import com.going.data.datasource.AuthDataSource import com.going.data.datasource.DashBoardDataSource +import com.going.data.datasource.EnterTripDataSource import com.going.data.datasource.MockDataSource import com.going.data.datasource.SettingDataSource import com.going.data.datasource.TendencyDataSource import com.going.data.datasource.TodoDataSource import com.going.data.datasourceImpl.AuthDataSourceImpl import com.going.data.datasourceImpl.DashBoardDataSourceImpl +import com.going.data.datasourceImpl.EnterTripDataSourceImpl import com.going.data.datasourceImpl.MockDataSourceImpl import com.going.data.datasourceImpl.SettingDataSourceImpl import com.going.data.datasourceImpl.TendencyDataSourceImpl @@ -51,4 +53,10 @@ object DataSourceModule { @Singleton fun provideTendencyDataSource(tendencyDataSourceImpl: TendencyDataSourceImpl): TendencyDataSource = tendencyDataSourceImpl + + @Provides + @Singleton + fun provideEnterTripDataSource(entertripDataSourceImpl: EnterTripDataSourceImpl): EnterTripDataSource = + entertripDataSourceImpl + } diff --git a/app/src/main/java/com/going/doorip/di/RepositoryModule.kt b/app/src/main/java/com/going/doorip/di/RepositoryModule.kt index 5eca3630..1b25ae23 100644 --- a/app/src/main/java/com/going/doorip/di/RepositoryModule.kt +++ b/app/src/main/java/com/going/doorip/di/RepositoryModule.kt @@ -2,6 +2,7 @@ package com.going.doorip.di import com.going.data.repositoryImpl.AuthRepositoryImpl import com.going.data.repositoryImpl.DashBoardRepositoryImpl +import com.going.data.repositoryImpl.EnterTripRepositoryImpl import com.going.data.repositoryImpl.MockRepositoryImpl import com.going.data.repositoryImpl.SettingRepositoryImpl import com.going.data.repositoryImpl.TendencyRepositoryImpl @@ -9,6 +10,7 @@ import com.going.data.repositoryImpl.TodoRepositoryImpl import com.going.data.repositoryImpl.TokenRepositoryImpl import com.going.domain.repository.AuthRepository import com.going.domain.repository.DashBoardRepository +import com.going.domain.repository.EnterTripRepository import com.going.domain.repository.MockRepository import com.going.domain.repository.SettingRepository import com.going.domain.repository.TendencyRepository @@ -54,6 +56,11 @@ object RepositoryModule { fun providesDashBoardRepository(dashBoardRepositoryImpl: DashBoardRepositoryImpl): DashBoardRepository = dashBoardRepositoryImpl + @Provides + @Singleton + fun provideEnterTripRepository(entertripRepositoryImpl: EnterTripRepositoryImpl): EnterTripRepository = + entertripRepositoryImpl + @Provides @Singleton fun provideTendencyRepository(tendencyRepositoryImpl: TendencyRepositoryImpl): TendencyRepository = diff --git a/app/src/main/java/com/going/doorip/di/ServiceModule.kt b/app/src/main/java/com/going/doorip/di/ServiceModule.kt index ea9eb9b6..a68cd331 100644 --- a/app/src/main/java/com/going/doorip/di/ServiceModule.kt +++ b/app/src/main/java/com/going/doorip/di/ServiceModule.kt @@ -2,6 +2,7 @@ package com.going.doorip.di import com.going.data.service.AuthService import com.going.data.service.DashBoardService +import com.going.data.service.EnterTripService import com.going.data.service.MockService import com.going.data.service.SettingService import com.going.data.service.TendencyService @@ -42,8 +43,14 @@ object ServiceModule { fun provideDashBoardService(retrofit: Retrofit): DashBoardService = retrofit.create(DashBoardService::class.java) + @Provides + @Singleton + fun provideEnterTripService(retrofit: Retrofit): EnterTripService = + retrofit.create(EnterTripService::class.java) + @Provides @Singleton fun provideTendencyService(retrofit: Retrofit): TendencyService = retrofit.create(TendencyService::class.java) + } diff --git a/data/src/main/java/com/going/data/datasource/EnterTripDataSource.kt b/data/src/main/java/com/going/data/datasource/EnterTripDataSource.kt new file mode 100644 index 00000000..8ee6ad20 --- /dev/null +++ b/data/src/main/java/com/going/data/datasource/EnterTripDataSource.kt @@ -0,0 +1,12 @@ +package com.going.data.datasource; + +import com.going.data.dto.BaseResponse +import com.going.data.dto.request.EnterTripRequestDto +import com.going.data.dto.response.EnterTripResponseDto +import retrofit2.http.Body + +interface EnterTripDataSource { + suspend fun postEnterTrip( + @Body request: EnterTripRequestDto, + ): BaseResponse +} diff --git a/data/src/main/java/com/going/data/datasource/TodoDataSource.kt b/data/src/main/java/com/going/data/datasource/TodoDataSource.kt index 101bcf0f..b3b258b6 100644 --- a/data/src/main/java/com/going/data/datasource/TodoDataSource.kt +++ b/data/src/main/java/com/going/data/datasource/TodoDataSource.kt @@ -27,4 +27,4 @@ interface TodoDataSource { todoId: Long ): BaseResponse -} \ No newline at end of file +} diff --git a/data/src/main/java/com/going/data/datasourceImpl/EnterTripDataSourceImpl.kt b/data/src/main/java/com/going/data/datasourceImpl/EnterTripDataSourceImpl.kt new file mode 100644 index 00000000..e79aefa4 --- /dev/null +++ b/data/src/main/java/com/going/data/datasourceImpl/EnterTripDataSourceImpl.kt @@ -0,0 +1,17 @@ +package com.going.data.datasourceImpl + +import com.going.data.datasource.EnterTripDataSource +import com.going.data.dto.BaseResponse +import com.going.data.dto.request.EnterTripRequestDto +import com.going.data.dto.response.EnterTripResponseDto +import com.going.data.service.EnterTripService +import javax.inject.Inject + +class EnterTripDataSourceImpl @Inject constructor( + private val enterTripService: EnterTripService, +) : EnterTripDataSource { + override suspend fun postEnterTrip( + code: EnterTripRequestDto + ): BaseResponse = + enterTripService.postEnterTrip(code) +} diff --git a/data/src/main/java/com/going/data/datasourceImpl/TodoDataSourceImpl.kt b/data/src/main/java/com/going/data/datasourceImpl/TodoDataSourceImpl.kt index 1b5640ca..18babff3 100644 --- a/data/src/main/java/com/going/data/datasourceImpl/TodoDataSourceImpl.kt +++ b/data/src/main/java/com/going/data/datasourceImpl/TodoDataSourceImpl.kt @@ -36,4 +36,4 @@ class TodoDataSourceImpl @Inject constructor( ): BaseResponse = todoService.getTodoDetail(todoId) -} \ No newline at end of file +} diff --git a/data/src/main/java/com/going/data/dto/request/EnterTripRequestDto.kt b/data/src/main/java/com/going/data/dto/request/EnterTripRequestDto.kt new file mode 100644 index 00000000..963d3604 --- /dev/null +++ b/data/src/main/java/com/going/data/dto/request/EnterTripRequestDto.kt @@ -0,0 +1,15 @@ +package com.going.data.dto.request + +import com.going.domain.entity.request.EnterTripRequestModel +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class EnterTripRequestDto( + @SerialName("code") + val code: String, +) + +fun EnterTripRequestModel.toEnterTripRequestDto(): EnterTripRequestDto = + EnterTripRequestDto(code) + diff --git a/data/src/main/java/com/going/data/dto/response/EnterTripResponseDto.kt b/data/src/main/java/com/going/data/dto/response/EnterTripResponseDto.kt new file mode 100644 index 00000000..d2d6b7ec --- /dev/null +++ b/data/src/main/java/com/going/data/dto/response/EnterTripResponseDto.kt @@ -0,0 +1,22 @@ +package com.going.data.dto.response + +import com.going.domain.entity.response.EnterTripModel +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class EnterTripResponseDto( + @SerialName("tripId") + val tripId: Long, + @SerialName("title") + val title: String, + @SerialName("startDate") + val startDate: String, + @SerialName("endDate") + val endDate: String, + @SerialName("day") + val day: Int, +) { + fun toEnterTripModel() = + EnterTripModel(tripId, title, startDate, endDate, day) +} diff --git a/data/src/main/java/com/going/data/interceptor/AuthInterceptor.kt b/data/src/main/java/com/going/data/interceptor/AuthInterceptor.kt index 5655dbad..a1eb76e1 100644 --- a/data/src/main/java/com/going/data/interceptor/AuthInterceptor.kt +++ b/data/src/main/java/com/going/data/interceptor/AuthInterceptor.kt @@ -29,6 +29,7 @@ class AuthInterceptor @Inject constructor( originalRequest } + val response = chain.proceed(authRequest) when (response.code) { @@ -85,8 +86,9 @@ class AuthInterceptor @Inject constructor( return response } - private fun Request.newAuthBuilder() = - this.newBuilder().addHeader(AUTHORIZATION, "$BEARER ${dataStore.accessToken}") + private fun Request.newAuthBuilder() = + this.newBuilder().addHeader(AUTHORIZATION, "$BEARER ${dataStore.accessToken}") + companion object { private const val CODE_TOKEN_EXPIRED = 401 diff --git a/data/src/main/java/com/going/data/repositoryImpl/EnterTripRepositoryImpl.kt b/data/src/main/java/com/going/data/repositoryImpl/EnterTripRepositoryImpl.kt new file mode 100644 index 00000000..b7259de2 --- /dev/null +++ b/data/src/main/java/com/going/data/repositoryImpl/EnterTripRepositoryImpl.kt @@ -0,0 +1,22 @@ +package com.going.data.repositoryImpl + +import com.going.data.datasource.EnterTripDataSource +import com.going.data.dto.request.toEnterTripRequestDto +import com.going.domain.entity.request.EnterTripRequestModel +import com.going.domain.entity.response.EnterTripModel +import com.going.domain.repository.EnterTripRepository +import javax.inject.Inject + +class EnterTripRepositoryImpl @Inject constructor( + private val enterTripDataSource: EnterTripDataSource, +) : EnterTripRepository { + + override suspend fun postEnterTrip( + requestEnterTripModel: EnterTripRequestModel + ): Result = + runCatching { + enterTripDataSource.postEnterTrip( + requestEnterTripModel.toEnterTripRequestDto(), + ).data.toEnterTripModel() + } +} diff --git a/data/src/main/java/com/going/data/service/EnterTripService.kt b/data/src/main/java/com/going/data/service/EnterTripService.kt new file mode 100644 index 00000000..8a81ee14 --- /dev/null +++ b/data/src/main/java/com/going/data/service/EnterTripService.kt @@ -0,0 +1,14 @@ +package com.going.data.service + +import com.going.data.dto.BaseResponse +import com.going.data.dto.request.EnterTripRequestDto +import com.going.data.dto.response.EnterTripResponseDto +import retrofit2.http.Body +import retrofit2.http.POST + +interface EnterTripService { + @POST("/api/trips/verify") + suspend fun postEnterTrip( + @Body request: EnterTripRequestDto, + ): BaseResponse +} diff --git a/data/src/main/java/com/going/data/service/TodoService.kt b/data/src/main/java/com/going/data/service/TodoService.kt index effb1f3e..7c1c7d9c 100644 --- a/data/src/main/java/com/going/data/service/TodoService.kt +++ b/data/src/main/java/com/going/data/service/TodoService.kt @@ -37,4 +37,4 @@ interface TodoService { @Path("todoId") todoId: Long ): BaseResponse -} \ No newline at end of file +} diff --git a/domain/src/main/kotlin/com/going/domain/entity/request/EnterTripRequestModel.kt b/domain/src/main/kotlin/com/going/domain/entity/request/EnterTripRequestModel.kt new file mode 100644 index 00000000..1db065bf --- /dev/null +++ b/domain/src/main/kotlin/com/going/domain/entity/request/EnterTripRequestModel.kt @@ -0,0 +1,5 @@ +package com.going.domain.entity.request + +data class EnterTripRequestModel( + val code: String +) diff --git a/domain/src/main/kotlin/com/going/domain/entity/response/EnterTripModel.kt b/domain/src/main/kotlin/com/going/domain/entity/response/EnterTripModel.kt new file mode 100644 index 00000000..c7a9e56f --- /dev/null +++ b/domain/src/main/kotlin/com/going/domain/entity/response/EnterTripModel.kt @@ -0,0 +1,9 @@ +package com.going.domain.entity.response + +data class EnterTripModel( + val tripId: Long, + val title: String, + val startDate: String, + val endDate: String, + val day: Int +) diff --git a/domain/src/main/kotlin/com/going/domain/repository/EnterTripRepository.kt b/domain/src/main/kotlin/com/going/domain/repository/EnterTripRepository.kt new file mode 100644 index 00000000..dda2b1f3 --- /dev/null +++ b/domain/src/main/kotlin/com/going/domain/repository/EnterTripRepository.kt @@ -0,0 +1,10 @@ +package com.going.domain.repository + +import com.going.domain.entity.request.EnterTripRequestModel +import com.going.domain.entity.response.EnterTripModel + +interface EnterTripRepository { + suspend fun postEnterTrip( + requestEnterTripModel: EnterTripRequestModel + ): Result +} diff --git a/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripActivity.kt b/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripActivity.kt index a64b189a..54940ff6 100644 --- a/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripActivity.kt +++ b/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripActivity.kt @@ -5,17 +5,25 @@ import android.os.Bundle import android.widget.TextView import androidx.activity.viewModels import androidx.core.content.res.ResourcesCompat +import androidx.lifecycle.flowWithLifecycle +import androidx.lifecycle.lifecycleScope import com.going.domain.entity.CodeState import com.going.presentation.R import com.going.presentation.databinding.ActivityEnterTripBinding +import com.going.presentation.enter.invitefinish.InviteFinishActivity import com.going.presentation.starttrip.StartTripSplashActivity import com.going.ui.base.BaseActivity +import com.going.ui.extension.UiState import com.going.ui.extension.setOnSingleClickListener +import com.going.ui.extension.toast +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach +@AndroidEntryPoint class EnterTripActivity : BaseActivity(R.layout.activity_enter_trip) { private val viewModel by viewModels() - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -23,6 +31,7 @@ class EnterTripActivity : BaseActivity(R.layout.activi initBindingViewModel() observeIsCodeAvailable() initNextBtnClickListener() + observeEnterTripState() } @@ -76,10 +85,43 @@ class EnterTripActivity : BaseActivity(R.layout.activi counter.setTextColor(getColor(color)) } + + private fun observeEnterTripState() { + viewModel.tripState.flowWithLifecycle(lifecycle).onEach { state -> + when (state) { + is UiState.Success -> { + + Intent(this, InviteFinishActivity::class.java).apply { + putExtra(TITLE, state.data.title) + putExtra(START, state.data.startDate) + putExtra(END, state.data.endDate) + putExtra(DAY, state.data.day) + startActivity(this) + } + } + + is UiState.Failure -> { + toast(getString(R.string.server_error)) + } + + is UiState.Loading -> return@onEach + + is UiState.Empty -> return@onEach + } + }.launchIn(lifecycleScope) + } + private fun initNextBtnClickListener() { binding.btnEnterTripNext.setOnSingleClickListener { - //다음 뷰로 이동 + viewModel.checkInviteCodeFromServer() } } + companion object { + const val TITLE = "title" + const val START = "start" + const val END = "end" + const val DAY = "day" + } + } diff --git a/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripViewModel.kt b/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripViewModel.kt index ce11be42..975aaa15 100644 --- a/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripViewModel.kt +++ b/presentation/src/main/java/com/going/presentation/enter/entertrip/EnterTripViewModel.kt @@ -2,10 +2,26 @@ package com.going.presentation.enter.entertrip import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import com.going.domain.entity.CodeState +import com.going.domain.entity.request.EnterTripRequestModel +import com.going.domain.entity.response.EnterTripModel +import com.going.domain.repository.EnterTripRepository +import com.going.ui.extension.UiState +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch import java.util.regex.Pattern +import javax.inject.Inject -class EnterTripViewModel : ViewModel() { +@HiltViewModel +class EnterTripViewModel @Inject constructor( + private val enterTripRepository: EnterTripRepository +) : ViewModel() { + + private val _tripState = MutableStateFlow>(UiState.Empty) + val tripState: StateFlow> = _tripState val inviteCode = MutableLiveData() var codeLength = MutableLiveData(0) @@ -31,6 +47,18 @@ class EnterTripViewModel : ViewModel() { isCheckEnterAvailable.value = isCodeAvailable.value == CodeState.Success } + fun checkInviteCodeFromServer() { + _tripState.value = UiState.Loading + viewModelScope.launch { + enterTripRepository.postEnterTrip( + EnterTripRequestModel(inviteCode.value ?: "") + ).onSuccess { result -> + _tripState.value = UiState.Success(result) + }.onFailure { + _tripState.value = UiState.Failure(it.message.orEmpty()) + } + } + } companion object { private const val ENG_NUM_PATTERN = "^[a-z0-9]*$" diff --git a/presentation/src/main/java/com/going/presentation/enter/invitefinish/InviteFinishActivity.kt b/presentation/src/main/java/com/going/presentation/enter/invitefinish/InviteFinishActivity.kt index e4444cf1..8d902939 100644 --- a/presentation/src/main/java/com/going/presentation/enter/invitefinish/InviteFinishActivity.kt +++ b/presentation/src/main/java/com/going/presentation/enter/invitefinish/InviteFinishActivity.kt @@ -2,28 +2,52 @@ package com.going.presentation.enter.invitefinish import android.content.Intent import android.os.Bundle -import androidx.activity.viewModels import com.going.presentation.R import com.going.presentation.databinding.ActivityInviteFinishBinding import com.going.presentation.enter.entertrip.EnterTripActivity +import com.going.presentation.enter.entertrip.EnterTripActivity.Companion.DAY +import com.going.presentation.enter.entertrip.EnterTripActivity.Companion.END +import com.going.presentation.enter.entertrip.EnterTripActivity.Companion.START +import com.going.presentation.enter.entertrip.EnterTripActivity.Companion.TITLE import com.going.presentation.preferencetag.PreferenceTagActivity import com.going.ui.base.BaseActivity import com.going.ui.extension.setOnSingleClickListener +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class InviteFinishActivity : BaseActivity(R.layout.activity_invite_finish) { - private val viewModel by viewModels() - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + getServerList() initBackBtnClickListener() initEnterBtnClickListener() } + private fun getServerList() { + val serverlist = getIntent() + + if (serverlist != null) { + val title = intent.getStringExtra(TITLE) + val start = intent.getStringExtra(START) + val end = intent.getStringExtra(END) + val day = intent.getIntExtra(DAY, 0) + + binding.tvInviteFinishName.text = title + binding.tvInviteFinishDay.text = String.format(DATE_FORMAT, start, end) + + if (day > 0) { + binding.tvInviteFinishDayLeft.text = String.format(D_DAY_FORMAT, day) + } else { + binding.tvInviteFinishDayLeft.text = TRIP_FORMAT + } + } + } + private fun initBackBtnClickListener() { binding.btnInviteFinishBack.setOnSingleClickListener { Intent(this, EnterTripActivity::class.java).apply { @@ -40,6 +64,12 @@ class InviteFinishActivity : } } + companion object { + const val DATE_FORMAT = "%s - %s" + const val D_DAY_FORMAT = "D - %d" + const val TRIP_FORMAT = "여행중" + } + } diff --git a/presentation/src/main/java/com/going/presentation/enter/invitefinish/InviteFinishViewModel.kt b/presentation/src/main/java/com/going/presentation/enter/invitefinish/InviteFinishViewModel.kt deleted file mode 100644 index 8b15aabb..00000000 --- a/presentation/src/main/java/com/going/presentation/enter/invitefinish/InviteFinishViewModel.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.going.presentation.enter.invitefinish - -import androidx.lifecycle.ViewModel - -class InviteFinishViewModel : ViewModel() { -} diff --git a/presentation/src/main/java/com/going/presentation/profile/ProfileActivity.kt b/presentation/src/main/java/com/going/presentation/tripdashboard/profile/ProfileActivity.kt similarity index 97% rename from presentation/src/main/java/com/going/presentation/profile/ProfileActivity.kt rename to presentation/src/main/java/com/going/presentation/tripdashboard/profile/ProfileActivity.kt index 86712199..b3a67bfd 100644 --- a/presentation/src/main/java/com/going/presentation/profile/ProfileActivity.kt +++ b/presentation/src/main/java/com/going/presentation/tripdashboard/profile/ProfileActivity.kt @@ -1,4 +1,4 @@ -package com.going.presentation.profile +package com.going.presentation.tripdashboard.profile import android.os.Bundle import android.text.SpannableString @@ -63,4 +63,4 @@ class ProfileActivity : return string } -} \ No newline at end of file +} diff --git a/presentation/src/main/java/com/going/presentation/profile/ProfileViewModel.kt b/presentation/src/main/java/com/going/presentation/tripdashboard/profile/ProfileViewModel.kt similarity index 96% rename from presentation/src/main/java/com/going/presentation/profile/ProfileViewModel.kt rename to presentation/src/main/java/com/going/presentation/tripdashboard/profile/ProfileViewModel.kt index 2b6d25af..b1c0781e 100644 --- a/presentation/src/main/java/com/going/presentation/profile/ProfileViewModel.kt +++ b/presentation/src/main/java/com/going/presentation/tripdashboard/profile/ProfileViewModel.kt @@ -1,4 +1,4 @@ -package com.going.presentation.profile +package com.going.presentation.tripdashboard.profile import androidx.lifecycle.ViewModel import com.going.domain.entity.ProfileMock diff --git a/presentation/src/main/res/layout/activity_invite_finish.xml b/presentation/src/main/res/layout/activity_invite_finish.xml index aa492dbe..d64b5849 100644 --- a/presentation/src/main/res/layout/activity_invite_finish.xml +++ b/presentation/src/main/res/layout/activity_invite_finish.xml @@ -5,10 +5,6 @@ - - @@ -80,7 +76,7 @@ android:background="@drawable/shape_rect_2_red100_fill" android:paddingHorizontal="8dp" android:paddingVertical="2dp" - android:text="D - 16" + tools:text="D - 16" android:textAppearance="@style/TextAppearance.Doorip.Detail2.Bold" android:textColor="@color/red_500" app:layout_constraintEnd_toEndOf="parent" @@ -93,7 +89,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:text="굉굉이랑 스페인" + tools:text="굉굉이랑 스페인" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_invite_finish_day_left" /> @@ -105,7 +101,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" android:maxLines="2" - android:text="2023.03.24 - 2023.03.31" + tools:text="2023.03.24 - 2023.03.31" android:textColor="@color/gray_300" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 32a3ccc1..63c7f952 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -155,6 +155,7 @@ 초대받은 여행이 맞는지\n 확인해 주세요 초대받은 여행이 맞아요! + 여행중 여행 친구들