Skip to content

Commit 7af79e1

Browse files
committed
on blog update success
1 parent 4334b86 commit 7af79e1

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

app/src/main/java/com/codingwithmitch/openapi/ui/main/blog/UpdateBlogFragment.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import androidx.lifecycle.Observer
77
import androidx.navigation.fragment.findNavController
88
import com.codingwithmitch.openapi.R
99
import com.codingwithmitch.openapi.ui.main.blog.state.BlogStateEvent
10+
import com.codingwithmitch.openapi.ui.main.blog.viewmodel.onBlogPostUpdateSuccess
11+
import com.codingwithmitch.openapi.ui.main.blog.viewmodel.setUpdatedBlogFields
1012
import kotlinx.android.synthetic.main.fragment_update_blog.*
1113
import okhttp3.MultipartBody
1214

@@ -35,7 +37,9 @@ class UpdateBlogFragment : BaseBlogFragment(){
3537

3638
// if this is not null, the blogpost was updated
3739
viewState.viewBlogFields.blogPost?.let{ blogPost ->
38-
// TODO("onBlogPostUpdateSuccess")
40+
viewModel.onBlogPostUpdateSuccess(blogPost).let {
41+
findNavController().popBackStack()
42+
}
3943
}
4044
}
4145
}
@@ -86,6 +90,14 @@ class UpdateBlogFragment : BaseBlogFragment(){
8690
return super.onOptionsItemSelected(item)
8791
}
8892

93+
override fun onPause() {
94+
super.onPause()
95+
viewModel.setUpdatedBlogFields(
96+
uri = null,
97+
title = blog_title.text.toString(),
98+
body = blog_body.text.toString()
99+
)
100+
}
89101
}
90102

91103

app/src/main/java/com/codingwithmitch/openapi/ui/main/blog/viewmodel/Setters.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,30 @@ fun BlogViewModel.setUpdatedBlogFields(title: String?, body: String?, uri: Uri?)
8181
}
8282

8383

84+
fun BlogViewModel.updateListItem(newBlogPost: BlogPost){
85+
val update = getCurrentViewStateOrNew()
86+
val list = update.blogFields.blogList.toMutableList()
87+
for(i in 0..(list.size - 1)){
88+
if(list[i].pk == newBlogPost.pk){
89+
list[i] = newBlogPost
90+
break
91+
}
92+
}
93+
update.blogFields.blogList = list
94+
setViewState(update)
95+
}
8496

8597

98+
fun BlogViewModel.onBlogPostUpdateSuccess(blogPost: BlogPost){
99+
setUpdatedBlogFields(
100+
uri = null,
101+
title = blogPost.title,
102+
body = blogPost.body
103+
) // update UpdateBlogFragment (not really necessary since navigating back)
104+
setBlogPost(blogPost) // update ViewBlogFragment
105+
updateListItem(blogPost) // update BlogFragment
106+
}
107+
86108

87109

88110

0 commit comments

Comments
 (0)