RenameServerContent.kt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. package org.sirekanyan.outline.ui
  2. import androidx.compose.runtime.Composable
  3. import androidx.compose.runtime.remember
  4. import androidx.compose.ui.platform.LocalContext
  5. import org.sirekanyan.outline.Router
  6. import org.sirekanyan.outline.SelectedPage
  7. import org.sirekanyan.outline.api.model.Server
  8. import org.sirekanyan.outline.app
  9. import org.sirekanyan.outline.repository.ServerRepository
  10. @Composable
  11. private fun rememberRenameServerDelegate(router: Router, server: Server): RenameDelegate {
  12. val context = LocalContext.current
  13. val servers = remember { context.app().serverRepository }
  14. return remember(server) { RenameServerDelegate(router, servers, server) }
  15. }
  16. private class RenameServerDelegate(
  17. private val router: Router,
  18. private val servers: ServerRepository,
  19. private val server: Server,
  20. ) : RenameDelegate {
  21. override suspend fun onRename(newName: String) {
  22. val newServer = servers.renameServer(server, newName)
  23. router.page = SelectedPage(newServer)
  24. }
  25. }
  26. @Composable
  27. fun RenameServerContent(router: Router, server: Server) {
  28. val delegate = rememberRenameServerDelegate(router, server)
  29. val state = rememberRenameState(router, delegate)
  30. RenameContent(state, router, "Edit server", server.name, server.getHost())
  31. }