From 494d55cef223116f7a97dbf4e5b53f8208392763 Mon Sep 17 00:00:00 2001 From: junseo511 Date: Sat, 3 May 2025 23:21:37 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=ED=94=BC=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EC=8B=9C=20=EB=B9=84=EA=B3=B5=EA=B0=9C=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/into/websoso/data/mapper/FeedMapper.kt | 2 ++ app/src/main/java/com/into/websoso/data/mapper/UserMapper.kt | 1 + app/src/main/java/com/into/websoso/data/model/FeedEntity.kt | 1 + .../main/java/com/into/websoso/data/model/UserFeedsEntity.kt | 1 + .../websoso/data/remote/response/FeedDetailResponseDto.kt | 2 ++ .../com/into/websoso/data/remote/response/FeedResponseDto.kt | 2 ++ .../into/websoso/data/remote/response/UserFeedsResponseDto.kt | 4 +++- .../main/java/com/into/websoso/domain/mapper/FeedMapper.kt | 1 + app/src/main/java/com/into/websoso/domain/model/Feed.kt | 1 + .../into/websoso/ui/activityDetail/ActivityDetailActivity.kt | 1 + .../java/com/into/websoso/ui/feedDetail/FeedDetailActivity.kt | 1 + .../com/into/websoso/ui/feedDetail/model/FeedDetailUiState.kt | 1 - .../main/java/com/into/websoso/ui/main/feed/FeedFragment.kt | 1 + .../java/com/into/websoso/ui/main/feed/model/FeedModel.kt | 2 +- .../websoso/ui/main/myPage/myActivity/MyActivityFragment.kt | 2 ++ .../websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt | 4 ++-- .../ui/main/myPage/myActivity/model/ActivitiesModel.kt | 3 ++- .../main/java/com/into/websoso/ui/mapper/ActivityMapper.kt | 1 + app/src/main/java/com/into/websoso/ui/mapper/FeedMapper.kt | 2 ++ .../com/into/websoso/ui/novelDetail/NovelDetailActivity.kt | 4 ++-- .../java/com/into/websoso/ui/novelFeed/NovelFeedFragment.kt | 1 + 21 files changed, 30 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/into/websoso/data/mapper/FeedMapper.kt b/app/src/main/java/com/into/websoso/data/mapper/FeedMapper.kt index b905ec41e..031eac9c6 100644 --- a/app/src/main/java/com/into/websoso/data/mapper/FeedMapper.kt +++ b/app/src/main/java/com/into/websoso/data/mapper/FeedMapper.kt @@ -38,6 +38,7 @@ fun FeedResponseDto.toData(): FeedEntity = FeedEntity( isModified = isModified, isSpoiler = isSpoiler, isMyFeed = isMyFeed, + isPublic = isPublic, novel = NovelEntity( id = novelId, title = title, @@ -83,6 +84,7 @@ fun FeedDetailResponseDto.toData(): FeedEntity = FeedEntity( isModified = isModified, isSpoiler = isSpoiler, isMyFeed = isMyFeed, + isPublic = isPublic, novel = NovelEntity( id = novelId, title = title, diff --git a/app/src/main/java/com/into/websoso/data/mapper/UserMapper.kt b/app/src/main/java/com/into/websoso/data/mapper/UserMapper.kt index 93b676b87..a9d6a2cbd 100644 --- a/app/src/main/java/com/into/websoso/data/mapper/UserMapper.kt +++ b/app/src/main/java/com/into/websoso/data/mapper/UserMapper.kt @@ -133,6 +133,7 @@ fun UserFeedResponseDto.toData(): UserFeedEntity = createdDate = this.createdDate, isModified = this.isModified, isLiked = this.isLiked, + isPublic = this.isPublic, likeCount = this.likeCount, commentCount = this.commentCount, novelId = this.novelId, diff --git a/app/src/main/java/com/into/websoso/data/model/FeedEntity.kt b/app/src/main/java/com/into/websoso/data/model/FeedEntity.kt index 3cd870f06..6aeea05fb 100644 --- a/app/src/main/java/com/into/websoso/data/model/FeedEntity.kt +++ b/app/src/main/java/com/into/websoso/data/model/FeedEntity.kt @@ -12,6 +12,7 @@ data class FeedEntity( val isModified: Boolean, val isSpoiler: Boolean, val isMyFeed: Boolean, + val isPublic: Boolean, val novel: NovelEntity, ) { diff --git a/app/src/main/java/com/into/websoso/data/model/UserFeedsEntity.kt b/app/src/main/java/com/into/websoso/data/model/UserFeedsEntity.kt index f3745682e..b0d01bebf 100644 --- a/app/src/main/java/com/into/websoso/data/model/UserFeedsEntity.kt +++ b/app/src/main/java/com/into/websoso/data/model/UserFeedsEntity.kt @@ -11,6 +11,7 @@ data class UserFeedsEntity( val createdDate: String, val isModified: Boolean, val isLiked: Boolean, + val isPublic: Boolean, val likeCount: Int, val commentCount: Int, val novelId: Long?, diff --git a/app/src/main/java/com/into/websoso/data/remote/response/FeedDetailResponseDto.kt b/app/src/main/java/com/into/websoso/data/remote/response/FeedDetailResponseDto.kt index beb077716..9401a9ee3 100644 --- a/app/src/main/java/com/into/websoso/data/remote/response/FeedDetailResponseDto.kt +++ b/app/src/main/java/com/into/websoso/data/remote/response/FeedDetailResponseDto.kt @@ -39,4 +39,6 @@ data class FeedDetailResponseDto( val isModified: Boolean, @SerialName("isMyFeed") val isMyFeed: Boolean, + @SerialName("isPublic") + val isPublic: Boolean, ) diff --git a/app/src/main/java/com/into/websoso/data/remote/response/FeedResponseDto.kt b/app/src/main/java/com/into/websoso/data/remote/response/FeedResponseDto.kt index 86dfd45a6..1098bc22f 100644 --- a/app/src/main/java/com/into/websoso/data/remote/response/FeedResponseDto.kt +++ b/app/src/main/java/com/into/websoso/data/remote/response/FeedResponseDto.kt @@ -39,4 +39,6 @@ data class FeedResponseDto( val isModified: Boolean, @SerialName("isMyFeed") val isMyFeed: Boolean, + @SerialName("isPublic") + val isPublic: Boolean, ) diff --git a/app/src/main/java/com/into/websoso/data/remote/response/UserFeedsResponseDto.kt b/app/src/main/java/com/into/websoso/data/remote/response/UserFeedsResponseDto.kt index b33c1e100..06f653492 100644 --- a/app/src/main/java/com/into/websoso/data/remote/response/UserFeedsResponseDto.kt +++ b/app/src/main/java/com/into/websoso/data/remote/response/UserFeedsResponseDto.kt @@ -27,6 +27,8 @@ data class UserFeedsResponseDto( val isModified: Boolean, @SerialName("isSpoiler") val isSpoiler: Boolean, + @SerialName("isPublic") + val isPublic: Boolean, @SerialName("likeCount") val likeCount: Int, @SerialName("novelId") @@ -40,4 +42,4 @@ data class UserFeedsResponseDto( @SerialName("title") val title: String?, ) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/into/websoso/domain/mapper/FeedMapper.kt b/app/src/main/java/com/into/websoso/domain/mapper/FeedMapper.kt index 2213bfd85..51d053e38 100644 --- a/app/src/main/java/com/into/websoso/domain/mapper/FeedMapper.kt +++ b/app/src/main/java/com/into/websoso/domain/mapper/FeedMapper.kt @@ -27,6 +27,7 @@ fun FeedEntity.toDomain(): Feed = Feed( isModified = isModified, isSpoiler = isSpoiler, isMyFeed = isMyFeed, + isPublic = isPublic, novel = Feed.Novel( id = novel.id, title = novel.title, diff --git a/app/src/main/java/com/into/websoso/domain/model/Feed.kt b/app/src/main/java/com/into/websoso/domain/model/Feed.kt index 1c4d22881..6037fe11f 100644 --- a/app/src/main/java/com/into/websoso/domain/model/Feed.kt +++ b/app/src/main/java/com/into/websoso/domain/model/Feed.kt @@ -12,6 +12,7 @@ data class Feed( val isModified: Boolean, val isSpoiler: Boolean, val isMyFeed: Boolean, + val isPublic: Boolean, val novel: Novel, ) { data class User( diff --git a/app/src/main/java/com/into/websoso/ui/activityDetail/ActivityDetailActivity.kt b/app/src/main/java/com/into/websoso/ui/activityDetail/ActivityDetailActivity.kt index b779aef77..fa24b2743 100644 --- a/app/src/main/java/com/into/websoso/ui/activityDetail/ActivityDetailActivity.kt +++ b/app/src/main/java/com/into/websoso/ui/activityDetail/ActivityDetailActivity.kt @@ -291,6 +291,7 @@ class ActivityDetailActivity : BaseActivity(R.lay novelId = feed.novelId, novelTitle = feed.title, isSpoiler = feed.isSpoiler, + isPublic = feed.isPublic, feedContent = feed.feedContent, feedCategory = feed.relevantCategories?.split(", ") ?: emptyList(), ) diff --git a/app/src/main/java/com/into/websoso/ui/feedDetail/FeedDetailActivity.kt b/app/src/main/java/com/into/websoso/ui/feedDetail/FeedDetailActivity.kt index 37843c1d5..494f46990 100644 --- a/app/src/main/java/com/into/websoso/ui/feedDetail/FeedDetailActivity.kt +++ b/app/src/main/java/com/into/websoso/ui/feedDetail/FeedDetailActivity.kt @@ -229,6 +229,7 @@ class FeedDetailActivity : BaseActivity(activity_feed novelId = feed.novel.id, novelTitle = feed.novel.title, isSpoiler = feed.isSpoiler, + isPublic = feed.isPublic, feedContent = feed.content, feedCategory = feed.relevantCategories, ) diff --git a/app/src/main/java/com/into/websoso/ui/feedDetail/model/FeedDetailUiState.kt b/app/src/main/java/com/into/websoso/ui/feedDetail/model/FeedDetailUiState.kt index f0a6b7c6c..51d990fa9 100644 --- a/app/src/main/java/com/into/websoso/ui/feedDetail/model/FeedDetailUiState.kt +++ b/app/src/main/java/com/into/websoso/ui/feedDetail/model/FeedDetailUiState.kt @@ -12,7 +12,6 @@ data class FeedDetailUiState( val previousStack: PreviousStack = PreviousStack(Feed), val feedDetail: FeedDetailModel = FeedDetailModel(), ) { - data class PreviousStack( val from: ResultFrom, ) diff --git a/app/src/main/java/com/into/websoso/ui/main/feed/FeedFragment.kt b/app/src/main/java/com/into/websoso/ui/main/feed/FeedFragment.kt index 4617fe2fc..abc251af6 100644 --- a/app/src/main/java/com/into/websoso/ui/main/feed/FeedFragment.kt +++ b/app/src/main/java/com/into/websoso/ui/main/feed/FeedFragment.kt @@ -338,6 +338,7 @@ class FeedFragment : BaseFragment(fragment_feed) { novelId = feed.novel.id, novelTitle = feed.novel.title, isSpoiler = feed.isSpoiler, + isPublic = feed.isPublic, feedContent = feed.content, feedCategory = feed.relevantCategories, ) diff --git a/app/src/main/java/com/into/websoso/ui/main/feed/model/FeedModel.kt b/app/src/main/java/com/into/websoso/ui/main/feed/model/FeedModel.kt index 0793fef2a..b984e20b6 100644 --- a/app/src/main/java/com/into/websoso/ui/main/feed/model/FeedModel.kt +++ b/app/src/main/java/com/into/websoso/ui/main/feed/model/FeedModel.kt @@ -12,6 +12,7 @@ data class FeedModel( val isSpoiler: Boolean, val isLiked: Boolean, val isMyFeed: Boolean, + val isPublic: Boolean, val novel: NovelModel, val categories: String = relevantCategories.joinToString(prefix = "", postfix = ""), ) { @@ -30,7 +31,6 @@ data class FeedModel( val rating: Float?, val ratingCount: Int?, ) { - val isNothing: Boolean = id == null } } diff --git a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt index 6c9d76a2d..4c5722e1e 100644 --- a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt +++ b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt @@ -233,6 +233,7 @@ class MyActivityFragment : BaseFragment(R.layout.frag novelId = feed.novelId, novelTitle = feed.title, isSpoiler = feed.isSpoiler, + isPublic = feed.isPublic, feedContent = feed.feedContent, feedCategory = feed.relevantCategories?.split(", ") ?: emptyList(), ) @@ -258,6 +259,7 @@ class MyActivityFragment : BaseFragment(R.layout.frag override fun onResume() { super.onResume() + myActivityViewModel.updateMyActivities() view?.requestLayout() } diff --git a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt index e518eaa6f..c2b1c1847 100644 --- a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt +++ b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt @@ -39,7 +39,7 @@ class MyActivityViewModel @Inject constructor( updateMyActivities() } - private fun updateMyActivities() { + fun updateMyActivities() { viewModelScope.launch { _uiState.value = _uiState.value?.copy(isLoading = true) runCatching { @@ -119,4 +119,4 @@ class MyActivityViewModel @Inject constructor( const val ACTIVITY_LOAD_SIZE = 10 const val ACTIVITY_LIMIT_COUNT = 5 } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/model/ActivitiesModel.kt b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/model/ActivitiesModel.kt index cbf3aeaea..b16bc6d52 100644 --- a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/model/ActivitiesModel.kt +++ b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/model/ActivitiesModel.kt @@ -14,6 +14,7 @@ data class ActivitiesModel( val createdDate: String, val isModified: Boolean, val isLiked: Boolean, + val isPublic: Boolean, val likeCount: Int, val commentCount: Int, val novelId: Long?, @@ -52,4 +53,4 @@ data class ActivitiesModel( } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/into/websoso/ui/mapper/ActivityMapper.kt b/app/src/main/java/com/into/websoso/ui/mapper/ActivityMapper.kt index 00755002b..7a6118fe6 100644 --- a/app/src/main/java/com/into/websoso/ui/mapper/ActivityMapper.kt +++ b/app/src/main/java/com/into/websoso/ui/mapper/ActivityMapper.kt @@ -11,6 +11,7 @@ fun UserFeedEntity.toUi(): ActivityModel = createdDate = ActivityModel.formatDate(createdDate), isModified = isModified, isLiked = isLiked, + isPublic = isPublic, likeCount = likeCount, commentCount = commentCount, novelId = novelId, diff --git a/app/src/main/java/com/into/websoso/ui/mapper/FeedMapper.kt b/app/src/main/java/com/into/websoso/ui/mapper/FeedMapper.kt index 7830e2b6c..2d20913a4 100644 --- a/app/src/main/java/com/into/websoso/ui/mapper/FeedMapper.kt +++ b/app/src/main/java/com/into/websoso/ui/mapper/FeedMapper.kt @@ -24,6 +24,7 @@ fun Feed.toUi(): FeedModel = FeedModel( isSpoiler = isSpoiler, isLiked = isLiked, isMyFeed = isMyFeed, + isPublic = isPublic, novel = NovelModel( id = novel.id, title = novel.title, @@ -48,6 +49,7 @@ fun FeedEntity.toUi(): FeedModel = FeedModel( isSpoiler = isSpoiler, isLiked = isLiked, isMyFeed = isMyFeed, + isPublic = isPublic, novel = NovelModel( id = novel.id, title = novel.title, diff --git a/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt b/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt index 98570009c..cf106f040 100644 --- a/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt +++ b/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt @@ -364,8 +364,8 @@ class NovelDetailActivity : BaseActivity(R.layout.ac dialog.show(supportFragmentManager, LoginRequestDialogFragment.TAG) } - override fun onResume() { - super.onResume() + override fun onStart() { + super.onStart() binding.tgNovelDetailReadStatus.clearChecked() novelDetailViewModel.updateNovelDetail(novelId) } diff --git a/app/src/main/java/com/into/websoso/ui/novelFeed/NovelFeedFragment.kt b/app/src/main/java/com/into/websoso/ui/novelFeed/NovelFeedFragment.kt index c3d0f4dc0..5c676b0ee 100644 --- a/app/src/main/java/com/into/websoso/ui/novelFeed/NovelFeedFragment.kt +++ b/app/src/main/java/com/into/websoso/ui/novelFeed/NovelFeedFragment.kt @@ -244,6 +244,7 @@ class NovelFeedFragment : BaseFragment(R.layout.fragme novelId = feed.novel.id, novelTitle = feed.novel.title, isSpoiler = feed.isSpoiler, + isPublic = feed.isPublic, feedContent = feed.content, feedCategory = feed.relevantCategories, ) From bcebac16b5e15f9c1aa626d526c5bf4895657577 Mon Sep 17 00:00:00 2001 From: junseo511 Date: Sat, 3 May 2025 23:27:01 +0900 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20onResume=20=EC=98=A4=EB=B2=84?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=94=A9=20=ED=95=A8=EC=88=98=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=A1=A4=EB=B0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/novelDetail/NovelDetailActivity.kt | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt b/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt index cf106f040..0cccc882b 100644 --- a/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt +++ b/app/src/main/java/com/into/websoso/ui/novelDetail/NovelDetailActivity.kt @@ -163,12 +163,14 @@ class NovelDetailActivity : BaseActivity(R.layout.ac } private fun setupOnPageChangeCallback() { - binding.vpNovelDetail.registerOnPageChangeCallback(object : - ViewPager2.OnPageChangeCallback() { - override fun onPageSelected(position: Int) { - updateNovelFeedWriteButtonVisibility(position) - } - }) + binding.vpNovelDetail.registerOnPageChangeCallback( + object : + ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + updateNovelFeedWriteButtonVisibility(position) + } + }, + ) } private fun updateNovelFeedWriteButtonVisibility(position: Int) { @@ -207,18 +209,20 @@ class NovelDetailActivity : BaseActivity(R.layout.ac } private fun setupTooltipBottomFramePosition() { - binding.ctlNovelDetail.viewTreeObserver.addOnPreDrawListener(object : - ViewTreeObserver.OnPreDrawListener { - override fun onPreDraw(): Boolean { - binding.ctlNovelDetail.viewTreeObserver.removeOnPreDrawListener(this) + binding.ctlNovelDetail.viewTreeObserver.addOnPreDrawListener( + object : + ViewTreeObserver.OnPreDrawListener { + override fun onPreDraw(): Boolean { + binding.ctlNovelDetail.viewTreeObserver.removeOnPreDrawListener(this) - val layoutParams = binding.viewNovelDetailTooltipFrameBottom.layoutParams as ConstraintLayout.LayoutParams - layoutParams.topMargin = binding.ctlNovelDetail.height - binding.viewNovelDetailTooltipFrameBottom.layoutParams = layoutParams + val layoutParams = binding.viewNovelDetailTooltipFrameBottom.layoutParams as ConstraintLayout.LayoutParams + layoutParams.topMargin = binding.ctlNovelDetail.height + binding.viewNovelDetailTooltipFrameBottom.layoutParams = layoutParams - return true - } - }) + return true + } + }, + ) } private fun showTooltipWindow() { @@ -364,8 +368,8 @@ class NovelDetailActivity : BaseActivity(R.layout.ac dialog.show(supportFragmentManager, LoginRequestDialogFragment.TAG) } - override fun onStart() { - super.onStart() + override fun onResume() { + super.onResume() binding.tgNovelDetailReadStatus.clearChecked() novelDetailViewModel.updateNovelDetail(novelId) } From 4ae9945de9882a88b13d999e07196a8de17da34f Mon Sep 17 00:00:00 2001 From: junseo511 Date: Sat, 3 May 2025 23:29:31 +0900 Subject: [PATCH 3/3] =?UTF-8?q?refactor:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=94=BC=EB=93=9C=20=EA=B0=B1=EC=8B=A0=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=A0=91=EA=B7=BC=EC=A0=9C=ED=95=9C?= =?UTF-8?q?=EC=9E=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../websoso/ui/main/myPage/myActivity/MyActivityFragment.kt | 2 -- .../websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt index 4c5722e1e..53c15f0f7 100644 --- a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt +++ b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityFragment.kt @@ -258,8 +258,6 @@ class MyActivityFragment : BaseFragment(R.layout.frag override fun onResume() { super.onResume() - - myActivityViewModel.updateMyActivities() view?.requestLayout() } diff --git a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt index c2b1c1847..ed2c568b0 100644 --- a/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt +++ b/app/src/main/java/com/into/websoso/ui/main/myPage/myActivity/MyActivityViewModel.kt @@ -39,7 +39,7 @@ class MyActivityViewModel @Inject constructor( updateMyActivities() } - fun updateMyActivities() { + private fun updateMyActivities() { viewModelScope.launch { _uiState.value = _uiState.value?.copy(isLoading = true) runCatching {