anytype-kotlin-wild/app/src/main/java/com/anytypeio/anytype/ui/editor/CreateObjectFragment.kt
Evgenii Kozlov 5886fc1ae5
DROID-1654 App | Feature | Multispaces + Misc. enhancements (#300)
Co-authored-by: Konstantin Ivanov <54908981+konstantiniiv@users.noreply.github.com>
2023-10-24 12:41:32 +02:00

74 lines
2.5 KiB
Kotlin

package com.anytypeio.anytype.ui.editor
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavOptions
import androidx.navigation.fragment.findNavController
import com.anytypeio.anytype.R
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_utils.ext.arg
import com.anytypeio.anytype.core_utils.ext.subscribe
import com.anytypeio.anytype.core_utils.ext.toast
import com.anytypeio.anytype.core_utils.ui.BaseFragment
import com.anytypeio.anytype.databinding.FragmentCreateObjectBinding
import com.anytypeio.anytype.di.common.componentManager
import com.anytypeio.anytype.presentation.objects.CreateObjectViewModel
import javax.inject.Inject
class CreateObjectFragment : BaseFragment<FragmentCreateObjectBinding>(R.layout.fragment_create_object) {
@Inject
lateinit var factory: CreateObjectViewModel.Factory
private val vm by viewModels<CreateObjectViewModel> { factory }
private val mType get() = arg<Key>(TYPE_KEY)
override fun onStart() {
jobs += lifecycleScope.subscribe(vm.createObjectStatus) { state ->
when (state) {
is CreateObjectViewModel.State.Error -> {
activity?.toast(state.msg)
}
is CreateObjectViewModel.State.Success -> {
val navOptions = NavOptions.Builder()
.setPopUpTo(R.id.createObjectFragment, true)
.build()
findNavController().navigate(
R.id.objectNavigation,
bundleOf(EditorFragment.ID_KEY to state.id),
navOptions
)
}
}
}
super.onStart()
vm.onStart(mType)
}
override fun onStop() {
vm.onStop()
super.onStop()
}
override fun injectDependencies() {
componentManager().createObjectComponent.get().inject(this)
}
override fun releaseDependencies() {
componentManager().createObjectComponent.release()
}
override fun inflateBinding(
inflater: LayoutInflater,
container: ViewGroup?
): FragmentCreateObjectBinding = FragmentCreateObjectBinding.inflate(
inflater, container, false
)
companion object {
const val TYPE_KEY = "arg.ui.editor.create.type"
}
}