From c05b627d49c4c8b61056c9e23eda98e281bf9ec1 Mon Sep 17 00:00:00 2001 From: DongHyeon Park Date: Sun, 2 Jul 2023 22:50:10 +0900 Subject: [PATCH] =?UTF-8?q?issue=20#161=20feat:=20Compose=EC=9A=A9=20?= =?UTF-8?q?=EC=95=A1=ED=8B=B0=EB=B9=84=ED=8B=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 + .../trimvideo/TrimVideoActivity.kt | 3 +- .../uploadfilm/UploadFilmComposeActivity.kt | 106 ++++++++++++++++++ 3 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/boostcamp/dailyfilm/presentation/uploadfilm/UploadFilmComposeActivity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a25bc8ee..cef32147 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -42,6 +42,9 @@ + diff --git a/app/src/main/java/com/boostcamp/dailyfilm/presentation/trimvideo/TrimVideoActivity.kt b/app/src/main/java/com/boostcamp/dailyfilm/presentation/trimvideo/TrimVideoActivity.kt index f7a25804..dd6505d7 100644 --- a/app/src/main/java/com/boostcamp/dailyfilm/presentation/trimvideo/TrimVideoActivity.kt +++ b/app/src/main/java/com/boostcamp/dailyfilm/presentation/trimvideo/TrimVideoActivity.kt @@ -19,6 +19,7 @@ import com.boostcamp.dailyfilm.presentation.calendar.model.DateModel import com.boostcamp.dailyfilm.presentation.selectvideo.SelectVideoActivity import com.boostcamp.dailyfilm.presentation.selectvideo.SelectVideoActivity.Companion.DATE_VIDEO_ITEM import com.boostcamp.dailyfilm.presentation.uploadfilm.UploadFilmActivity +import com.boostcamp.dailyfilm.presentation.uploadfilm.UploadFilmComposeActivity import com.boostcamp.dailyfilm.presentation.uploadfilm.model.DateAndVideoModel import com.gowtham.library.utils.CompressOption import com.gowtham.library.utils.TrimType @@ -100,7 +101,7 @@ class TrimVideoActivity : BaseActivity(R.layout.activi private fun moveToUpload(trimAndVideoModel: DateAndVideoModel, startTime: Long) { startActivity( - Intent(this, UploadFilmActivity::class.java).apply { + Intent(this, UploadFilmComposeActivity::class.java).apply { putExtra(DATE_VIDEO_ITEM, trimAndVideoModel) putExtra(KEY_CALENDAR_INDEX, viewModel.calendarIndex) putExtra(KEY_INFO_ITEM, viewModel.infoItem) diff --git a/app/src/main/java/com/boostcamp/dailyfilm/presentation/uploadfilm/UploadFilmComposeActivity.kt b/app/src/main/java/com/boostcamp/dailyfilm/presentation/uploadfilm/UploadFilmComposeActivity.kt new file mode 100644 index 00000000..830ea83d --- /dev/null +++ b/app/src/main/java/com/boostcamp/dailyfilm/presentation/uploadfilm/UploadFilmComposeActivity.kt @@ -0,0 +1,106 @@ +package com.boostcamp.dailyfilm.presentation.uploadfilm + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import com.boostcamp.dailyfilm.presentation.calendar.CalendarActivity +import com.boostcamp.dailyfilm.presentation.calendar.DateFragment +import com.boostcamp.dailyfilm.presentation.playfilm.PlayFilmActivity +import com.boostcamp.dailyfilm.presentation.playfilm.PlayFilmFragment +import com.boostcamp.dailyfilm.presentation.playfilm.model.EditState +import com.boostcamp.dailyfilm.presentation.selectvideo.SelectVideoActivity +import com.boostcamp.dailyfilm.presentation.trimvideo.TrimVideoActivity +import com.boostcamp.dailyfilm.presentation.ui.theme.DailyFilmTheme +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch +import java.io.File + +@AndroidEntryPoint +class UploadFilmComposeActivity : ComponentActivity() { + + private val viewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + subscribeUiState() + + setContent { + DailyFilmTheme { + UploadFilmScreen(viewModel = viewModel) + } + } + } + + private fun subscribeUiState() { + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + viewModel.uploadUiState.collect { uiState -> + when (uiState) { + is UploadUiState.Canceled -> { + if (viewModel.beforeItem != null) { + // 업로드 안 한 영상은 로컬에서도 삭제 + deleteLocalFile(viewModel.infoItem?.uri?.path) + + // 돌아가기 + startActivity( + Intent( + this@UploadFilmComposeActivity, + TrimVideoActivity::class.java + ).apply { + putExtra(CalendarActivity.KEY_EDIT_STATE, viewModel.editState.value) + putExtra(SelectVideoActivity.DATE_VIDEO_ITEM, viewModel.beforeItem) + putExtra(PlayFilmFragment.KEY_DATE_MODEL, viewModel.dateModel) + putExtra(DateFragment.KEY_CALENDAR_INDEX, viewModel.calendarIndex) + } + ) + } + finish() + } + + is UploadUiState.UploadSuccess -> { + when (viewModel.editState.value) { + EditState.EDIT_CONTENT -> { + setResult( + Activity.RESULT_OK, + Intent( + this@UploadFilmComposeActivity, + PlayFilmActivity::class.java + ).apply { + putExtra(PlayFilmFragment.KET_EDIT_TEXT, uiState.dateModel.text) + } + ) + } + else -> { + setResult( + Activity.RESULT_OK, + Intent( + this@UploadFilmComposeActivity, + CalendarActivity::class.java + ).apply { + putExtra(DateFragment.KEY_CALENDAR_INDEX, viewModel.calendarIndex) + putExtra(PlayFilmFragment.KEY_DATE_MODEL, uiState.dateModel) + } + ) + } + } + finish() + } + + else -> {} + } + } + } + } + } + + private fun deleteLocalFile(filePath: String?) { + filePath?.let { File(it).delete() } + } + +} \ No newline at end of file