diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2942fa8..20d2ae0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -98,6 +98,7 @@
+
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
index a6218bb..5585e5a 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt
@@ -34,6 +34,7 @@ import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommun
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
import kr.co.vividnext.sodalive.explorer.profile.creator_community.all.CreatorCommunityAllViewModel
import kr.co.vividnext.sodalive.explorer.profile.creator_community.all.comment.CreatorCommunityCommentListViewModel
+import kr.co.vividnext.sodalive.explorer.profile.creator_community.modify.CreatorCommunityModifyViewModel
import kr.co.vividnext.sodalive.explorer.profile.creator_community.write.CreatorCommunityWriteViewModel
import kr.co.vividnext.sodalive.explorer.profile.donation.UserProfileDonationAllViewModel
import kr.co.vividnext.sodalive.explorer.profile.fantalk.UserProfileFantalkAllViewModel
@@ -221,6 +222,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
viewModel { CreatorCommunityAllViewModel(get(), get()) }
viewModel { CreatorCommunityCommentListViewModel(get()) }
viewModel { CreatorCommunityWriteViewModel(get()) }
+ viewModel { CreatorCommunityModifyViewModel(get()) }
}
private val repositoryModule = module {
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityApi.kt
index 43ca47a..cda00c9 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityApi.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityApi.kt
@@ -84,4 +84,11 @@ interface CreatorCommunityApi {
@Query("timezone") timezone: String,
@Header("Authorization") authHeader: String
): Single>
+
+ @GET("/creator-community/{id}")
+ fun getCommunityPostDetail(
+ @Path("id") postId: Long,
+ @Query("timezone") timezone: String,
+ @Header("Authorization") authHeader: String
+ ): Single>
}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityRepository.kt
index 50f30c8..209d1f5 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityRepository.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/CreatorCommunityRepository.kt
@@ -92,4 +92,10 @@ class CreatorCommunityRepository(private val api: CreatorCommunityApi) {
request = request,
authHeader = token
)
+
+ fun getCommunityPostDetail(postId: Long, token: String) = api.getCommunityPostDetail(
+ postId = postId,
+ timezone = TimeZone.getDefault().id,
+ authHeader = token
+ )
}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllActivity.kt
index 96c8aef..297df55 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllActivity.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllActivity.kt
@@ -1,10 +1,12 @@
package kr.co.vividnext.sodalive.explorer.profile.creator_community.all
import android.annotation.SuppressLint
+import android.content.Intent
import android.graphics.Rect
import android.os.Bundle
import android.view.View
import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kr.co.vividnext.sodalive.base.BaseActivity
@@ -13,6 +15,7 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.databinding.ActivityCreatorCommunityAllBinding
import kr.co.vividnext.sodalive.explorer.profile.creator_community.all.comment.CreatorCommunityCommentFragment
+import kr.co.vividnext.sodalive.explorer.profile.creator_community.modify.CreatorCommunityModifyActivity
import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject
@@ -27,6 +30,18 @@ class CreatorCommunityAllActivity : BaseActivity
+ val resultCode = result.resultCode
+
+ if (resultCode == RESULT_OK) {
+ viewModel.page = 1
+ viewModel.isLast = false
+ viewModel.getCommunityPostList()
+ }
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -66,7 +81,14 @@ class CreatorCommunityAllActivity : BaseActivity
SodaDialog(
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllViewModel.kt
index e29decd..39713a4 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllViewModel.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/CreatorCommunityAllViewModel.kt
@@ -10,6 +10,7 @@ import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse
+import kr.co.vividnext.sodalive.explorer.profile.creator_community.modify.ModifyCommunityPostRequest
import kr.co.vividnext.sodalive.report.ReportRepository
import kr.co.vividnext.sodalive.report.ReportRequest
import kr.co.vividnext.sodalive.report.ReportType
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/CreatorCommunityModifyActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/CreatorCommunityModifyActivity.kt
new file mode 100644
index 0000000..956f5c4
--- /dev/null
+++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/CreatorCommunityModifyActivity.kt
@@ -0,0 +1,282 @@
+package kr.co.vividnext.sodalive.explorer.profile.creator_community.modify
+
+import android.Manifest
+import android.annotation.SuppressLint
+import android.os.Build
+import android.os.Bundle
+import android.view.View
+import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.core.content.ContextCompat
+import coil.load
+import coil.transform.RoundedCornersTransformation
+import com.github.dhaval2404.imagepicker.ImagePicker
+import com.gun0912.tedpermission.PermissionListener
+import com.gun0912.tedpermission.normal.TedPermission
+import com.jakewharton.rxbinding4.widget.textChanges
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
+import io.reactivex.rxjava3.schedulers.Schedulers
+import kr.co.vividnext.sodalive.R
+import kr.co.vividnext.sodalive.base.BaseActivity
+import kr.co.vividnext.sodalive.common.Constants
+import kr.co.vividnext.sodalive.common.LoadingDialog
+import kr.co.vividnext.sodalive.common.RealPathUtil
+import kr.co.vividnext.sodalive.common.SharedPreferenceManager
+import kr.co.vividnext.sodalive.databinding.ActivityCreatorCommunityModifyBinding
+import kr.co.vividnext.sodalive.extensions.dpToPx
+import kr.co.vividnext.sodalive.extensions.loadUrl
+import org.koin.android.ext.android.inject
+
+class CreatorCommunityModifyActivity : BaseActivity(
+ ActivityCreatorCommunityModifyBinding::inflate
+) {
+
+ private val viewModel: CreatorCommunityModifyViewModel by inject()
+
+ private lateinit var loadingDialog: LoadingDialog
+
+ private val imageResult = registerForActivityResult(
+ ActivityResultContracts.StartActivityForResult()
+ ) { result ->
+ val resultCode = result.resultCode
+ val data = result.data
+
+ if (resultCode == RESULT_OK) {
+ val fileUri = data?.data
+
+ if (fileUri != null) {
+ binding.ivContent.background = null
+ binding.ivContent.load(fileUri) {
+ crossfade(true)
+ placeholder(R.drawable.ic_place_holder)
+ transformations(RoundedCornersTransformation(8f.dpToPx()))
+ }
+ viewModel.imageUri = fileUri
+ } else {
+ Toast.makeText(
+ this,
+ "잘못된 파일입니다.\n다시 선택해 주세요.",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ } else if (resultCode == ImagePicker.RESULT_ERROR) {
+ Toast.makeText(this, ImagePicker.getError(data), Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ checkPermissions()
+
+ viewModel.getRealPathFromURI = {
+ RealPathUtil.getRealPath(applicationContext, it)
+ }
+
+ bindData()
+
+ val postId = intent.getLongExtra(Constants.EXTRA_COMMUNITY_POST_ID, 0)
+ if (postId <= 0) {
+ Toast.makeText(applicationContext, "잘못된 요청입니다.", Toast.LENGTH_LONG).show()
+ finish()
+ }
+
+ viewModel.postId = postId
+ viewModel.getCommunityPostDetail(
+ onFailure = {
+ Toast.makeText(applicationContext, "잘못된 요청입니다.", Toast.LENGTH_LONG).show()
+ finish()
+ }
+ )
+ }
+
+ override fun setupView() {
+ loadingDialog = LoadingDialog(this, layoutInflater)
+
+ binding.toolbar.tvBack.text = "게시글 등록"
+ binding.toolbar.tvBack.setOnClickListener { finish() }
+
+ binding.ivPhotoPicker.setOnClickListener {
+ ImagePicker.with(this)
+ .crop()
+ .galleryOnly()
+ .galleryMimeTypes( // Exclude gif images
+ mimeTypes = arrayOf(
+ "image/png",
+ "image/jpg",
+ "image/jpeg"
+ )
+ )
+ .createIntent { imageResult.launch(it) }
+ }
+
+ if (SharedPreferenceManager.isAuth) {
+ binding.llSetAdult.visibility = View.VISIBLE
+ } else {
+ binding.llSetAdult.visibility = View.GONE
+ }
+
+ binding.llCommentNo.setOnClickListener { viewModel.setAvailableComment(false) }
+ binding.llCommentYes.setOnClickListener { viewModel.setAvailableComment(true) }
+ binding.tvCancel.setOnClickListener { finish() }
+ binding.tvUpload.setOnClickListener {
+ viewModel.modifyCommunityPost {
+ setResult(RESULT_OK)
+ finish()
+ }
+ }
+ }
+
+ private fun checkPermissions() {
+ val permissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ listOf(Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.READ_MEDIA_IMAGES)
+ } else {
+ listOf(Manifest.permission.READ_EXTERNAL_STORAGE)
+ }
+
+ TedPermission.create()
+ .setPermissionListener(object : PermissionListener {
+ override fun onPermissionGranted() {
+ }
+
+ override fun onPermissionDenied(deniedPermissions: MutableList?) {
+ finish()
+ }
+ })
+ .setDeniedMessage(R.string.read_storage_permission_denied_message)
+ .setPermissions(*permissions.toTypedArray())
+ .check()
+ }
+
+ @SuppressLint("SetTextI18n")
+ private fun bindData() {
+ compositeDisposable.add(
+ binding.etContent.textChanges().skip(1)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe {
+ binding.tvNumberOfCharacters.text = "${it.length}자"
+ viewModel.content = it.toString()
+ }
+ )
+
+ viewModel.toastLiveData.observe(this) {
+ it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() }
+ }
+
+ viewModel.isLoading.observe(this) {
+ if (it) {
+ loadingDialog.show(screenWidth)
+ } else {
+ loadingDialog.dismiss()
+ }
+ }
+
+ viewModel.imageUrlLiveData.observe(this) {
+ if (!it.isNullOrBlank()) {
+ binding.ivContent.background = null
+ binding.ivContent.loadUrl(it) {
+ crossfade(true)
+ placeholder(R.drawable.ic_place_holder)
+ transformations(RoundedCornersTransformation(8f.dpToPx()))
+ }
+ }
+ }
+
+ viewModel.contentLiveData.observe(this) {
+ binding.etContent.setText(it)
+ }
+
+ viewModel.isAvailableCommentLiveData.observe(this) {
+ if (it) {
+ binding.ivCommentYes.visibility = View.VISIBLE
+ binding.tvCommentYes.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.white
+ )
+ )
+ binding.llCommentYes.setBackgroundResource(R.drawable.bg_round_corner_6_7_3bb9f1)
+
+ binding.ivCommentNo.visibility = View.GONE
+ binding.tvCommentNo.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.color_80d8ff
+ )
+ )
+ binding.llCommentNo.setBackgroundResource(
+ R.drawable.bg_round_corner_6_7_13181b
+ )
+ } else {
+ binding.ivCommentNo.visibility = View.VISIBLE
+ binding.tvCommentNo.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.white
+ )
+ )
+ binding.llCommentNo.setBackgroundResource(R.drawable.bg_round_corner_6_7_3bb9f1)
+
+ binding.ivCommentYes.visibility = View.GONE
+ binding.tvCommentYes.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.color_80d8ff
+ )
+ )
+ binding.llCommentYes
+ .setBackgroundResource(R.drawable.bg_round_corner_6_7_13181b)
+ }
+ }
+
+ if (SharedPreferenceManager.isAuth) {
+ binding.llAgeAll.setOnClickListener {
+ viewModel.setAdult(false)
+ }
+
+ binding.llAge19.setOnClickListener {
+ viewModel.setAdult(true)
+ }
+
+ viewModel.isAdultLiveData.observe(this) {
+ if (it) {
+ binding.ivAgeAll.visibility = View.GONE
+ binding.llAgeAll.setBackgroundResource(R.drawable.bg_round_corner_6_7_13181b)
+ binding.tvAgeAll.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.color_80d8ff
+ )
+ )
+
+ binding.ivAge19.visibility = View.VISIBLE
+ binding.llAge19.setBackgroundResource(R.drawable.bg_round_corner_6_7_3bb9f1)
+ binding.tvAge19.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.white
+ )
+ )
+ } else {
+ binding.ivAge19.visibility = View.GONE
+ binding.llAge19.setBackgroundResource(R.drawable.bg_round_corner_6_7_13181b)
+ binding.tvAge19.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.color_80d8ff
+ )
+ )
+
+ binding.ivAgeAll.visibility = View.VISIBLE
+ binding.llAgeAll.setBackgroundResource(R.drawable.bg_round_corner_6_7_3bb9f1)
+ binding.tvAgeAll.setTextColor(
+ ContextCompat.getColor(
+ applicationContext,
+ R.color.white
+ )
+ )
+ }
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/CreatorCommunityModifyViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/CreatorCommunityModifyViewModel.kt
new file mode 100644
index 0000000..964315b
--- /dev/null
+++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/CreatorCommunityModifyViewModel.kt
@@ -0,0 +1,209 @@
+package kr.co.vividnext.sodalive.explorer.profile.creator_community.modify
+
+import android.net.Uri
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import com.google.gson.Gson
+import com.orhanobut.logger.Logger
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
+import io.reactivex.rxjava3.schedulers.Schedulers
+import kr.co.vividnext.sodalive.base.BaseViewModel
+import kr.co.vividnext.sodalive.common.SharedPreferenceManager
+import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
+import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse
+import okhttp3.MediaType
+import okhttp3.MediaType.Companion.toMediaType
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.toRequestBody
+import okio.BufferedSink
+import java.io.File
+
+class CreatorCommunityModifyViewModel(
+ private val repository: CreatorCommunityRepository
+) : BaseViewModel() {
+ private val _toastLiveData = MutableLiveData()
+ val toastLiveData: LiveData
+ get() = _toastLiveData
+
+ private var _isLoading = MutableLiveData(false)
+ val isLoading: LiveData
+ get() = _isLoading
+
+ private val _imageUrlLiveData = MutableLiveData()
+ val imageUrlLiveData: LiveData
+ get() = _imageUrlLiveData
+
+ private val _contentLiveData = MutableLiveData("")
+ val contentLiveData: LiveData
+ get() = _contentLiveData
+
+ private val _isAdultLiveData = MutableLiveData(false)
+ val isAdultLiveData: LiveData
+ get() = _isAdultLiveData
+
+ private val _isAvailableCommentLiveData = MutableLiveData(true)
+ val isAvailableCommentLiveData: LiveData
+ get() = _isAvailableCommentLiveData
+
+ lateinit var getRealPathFromURI: (Uri) -> String?
+
+ var postId = 0L
+ var content = ""
+ var imageUri: Uri? = null
+ private var communityPost: GetCommunityPostListResponse? = null
+
+ fun setAdult(isAdult: Boolean) {
+ _isAdultLiveData.postValue(isAdult)
+ }
+
+ fun setAvailableComment(isAvailableComment: Boolean) {
+ _isAvailableCommentLiveData.postValue(isAvailableComment)
+ }
+
+ fun getCommunityPostDetail(onFailure: (() -> Unit)? = null) {
+ communityPost = null
+ _isLoading.value = true
+
+ compositeDisposable.add(
+ repository.getCommunityPostDetail(
+ postId = postId,
+ token = "Bearer ${SharedPreferenceManager.token}"
+ )
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(
+ {
+ _isLoading.value = false
+
+ if (it.success && it.data != null) {
+ communityPost = it.data
+ _imageUrlLiveData.value = it.data.imageUrl
+ _contentLiveData.value = it.data.content
+ _isAdultLiveData.value = it.data.isAdult
+ _isAvailableCommentLiveData.value = it.data.isCommentAvailable
+ } else {
+ if (it.message != null) {
+ _toastLiveData.postValue(it.message)
+ } else {
+ _toastLiveData.postValue(
+ "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
+ )
+ }
+
+ if (onFailure != null) {
+ onFailure()
+ }
+ }
+ },
+ {
+ _isLoading.value = false
+ it.message?.let { message -> Logger.e(message) }
+ _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
+ if (onFailure != null) {
+ onFailure()
+ }
+ }
+ )
+ )
+ }
+
+ fun modifyCommunityPost(onSuccess: () -> Unit) {
+ if (!_isLoading.value!! && validateData()) {
+ _isLoading.value = true
+ val request = ModifyCommunityPostRequest(
+ creatorCommunityId = postId,
+ content = if (communityPost!!.content != content) {
+ content
+ } else {
+ null
+ },
+ isCommentAvailable = if (
+ communityPost!!.isCommentAvailable != _isAvailableCommentLiveData.value!!
+ ) {
+ _isAvailableCommentLiveData.value!!
+ } else {
+ null
+ },
+ isAdult = if (communityPost!!.isAdult != _isAdultLiveData.value!!) {
+ _isAdultLiveData.value!!
+ } else {
+ null
+ }
+ )
+
+ val requestJson = Gson().toJson(request)
+
+ val postImage = if (imageUri != null) {
+ val file = File(getRealPathFromURI(imageUri!!))
+ MultipartBody.Part.createFormData(
+ "postImage",
+ file.name,
+ body = object : RequestBody() {
+ override fun contentType(): MediaType {
+ return "image/*".toMediaType()
+ }
+
+ override fun writeTo(sink: BufferedSink) {
+ file.inputStream().use { inputStream ->
+ val buffer = ByteArray(1024)
+ var bytesRead: Int
+ while (inputStream.read(buffer).also { bytesRead = it } != -1) {
+ sink.write(buffer, 0, bytesRead)
+ }
+ }
+ }
+
+ override fun contentLength(): Long {
+ return file.length()
+ }
+ }
+ )
+ } else {
+ null
+ }
+
+ compositeDisposable.add(
+ repository.modifyCommunityPost(
+ postImage,
+ request = requestJson.toRequestBody("text/plain".toMediaType()),
+ token = "Bearer ${SharedPreferenceManager.token}"
+ )
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(
+ {
+ _isLoading.value = false
+ if (it.success) {
+ onSuccess()
+ } else {
+ if (it.message != null) {
+ _toastLiveData.postValue(it.message)
+ } else {
+ _toastLiveData.postValue(
+ "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
+ )
+ }
+ }
+ },
+ {
+ _isLoading.value = false
+ it.message?.let { message -> Logger.e(message) }
+ _toastLiveData.postValue(
+ "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
+ )
+ }
+ )
+ )
+ }
+ }
+
+ private fun validateData(): Boolean {
+ if (content.isBlank() || content.length < 5) {
+ _toastLiveData.postValue("내용을 5자 이상 입력해 주세요.")
+ return false
+ }
+
+ return true
+ }
+}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/ModifyCommunityPostRequest.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/ModifyCommunityPostRequest.kt
similarity index 97%
rename from app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/ModifyCommunityPostRequest.kt
rename to app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/ModifyCommunityPostRequest.kt
index 857b31f..c10e977 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/all/ModifyCommunityPostRequest.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/creator_community/modify/ModifyCommunityPostRequest.kt
@@ -1,4 +1,4 @@
-package kr.co.vividnext.sodalive.explorer.profile.creator_community.all
+package kr.co.vividnext.sodalive.explorer.profile.creator_community.modify
import com.google.gson.annotations.SerializedName
diff --git a/app/src/main/res/layout/activity_creator_community_modify.xml b/app/src/main/res/layout/activity_creator_community_modify.xml
new file mode 100644
index 0000000..c04b417
--- /dev/null
+++ b/app/src/main/res/layout/activity_creator_community_modify.xml
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+