Skip to content

Commit

Permalink
Suspend iOS app when workflow emits output.
Browse files Browse the repository at this point in the history
  • Loading branch information
christiandeange committed Mar 26, 2024
1 parent 87c5327 commit 2dca347
Showing 1 changed file with 10 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ package sh.christian.ozone

import androidx.compose.foundation.layout.Box
import androidx.compose.ui.window.ComposeUIViewController
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.coroutines.CoroutineScope
import platform.Foundation.NSSelectorFromString
import platform.UIKit.UIApplication
import sh.christian.ozone.api.OzoneDispatchers.IO
import sh.christian.ozone.app.AppWorkflow
import sh.christian.ozone.app.initWorkflow
Expand All @@ -17,13 +20,19 @@ fun initialize() {
workflow = initWorkflow(CoroutineScope(IO), storage())
}

@OptIn(ExperimentalForeignApi::class)
@Suppress("unused", "FunctionName") // Called from iOS application code.
fun MainViewController() = ComposeUIViewController {
Box {
AppTheme {
WorkflowRendering(
workflow = workflow,
onOutput = { },
onOutput = {
UIApplication.sharedApplication.performSelector(
aSelector = NSSelectorFromString("suspend"),
withObject = null,
)
},
content = { it.Content() },
)
}
Expand Down

0 comments on commit 2dca347

Please sign in to comment.