jw
06/16/2021, 1:58 AMfun main() {
val db = MyDatabase()
renderComposable(rootElementId = "root") {
val model = db.models().collectAsState()
MainComposable(model)
}
}
Daniele B
06/16/2021, 1:59 AMDaniele B
06/16/2021, 2:03 AMfun MainComposable(model: DKMPViewModel) {
val appState by model.stateFlow.collectAsState()
val dkmpNav = appState.getNavigation(model)
dkmpNav.Router()
}
Daniele B
06/16/2021, 2:03 AMDaniele B
06/16/2021, 2:04 AMfun main() {
myComposeApp { myModel ->
renderComposable(rootElementId = "root") {
val appState by myModel.stateFlow.collectAsState()
val dkmpNav = appState.getNavigation(myModel)
dkmpNav.Router()
}
}
}
Daniele B
06/16/2021, 2:08 AMjw
06/16/2021, 2:16 AMDaniele B
06/16/2021, 2:18 AMjw
06/16/2021, 2:20 AMjw
06/16/2021, 2:21 AMDaniele B
06/16/2021, 2:23 AMDerek Ellis
06/16/2021, 2:26 AMFlow
that gets exposed to compose, since all of the JS driver stuff needs to be in suspend
functions.jw
06/16/2021, 2:28 AMval models = flow {
val db = initDb() // <-- suspending lazy init pattern
emitAll(db.whatever.models())
}
which hides the async initialization behind the first caller and also isolates your db as an implementation detail of the data layerDerek Ellis
06/16/2021, 2:31 AMDerek Ellis
06/16/2021, 2:32 AMjw
06/16/2021, 2:33 AMDerek Ellis
06/16/2021, 2:33 AMNikiizvorski
06/17/2021, 1:40 PMalec
06/18/2021, 12:28 PMeinar
06/18/2021, 12:28 PMalec
06/18/2021, 12:30 PMeinar
06/18/2021, 1:15 PMdimsuz
06/18/2021, 2:17 PMsqldelight {
MyDatabase {
packageName = "<http://com.example.db.my|com.example.db.my>"
sourceFolders = ["sqldelight/com/example/db/my"]
}
MyOtherDatabase {
packageName = "com.example.db.other"
sourceFolders = ["sqldelight/com/example/db/other"]
}
}
Intuitively passing a "`sqldelight/com/example/db/other`" leads to generateSqlDelightInterface gradle task error:
SqlDelight files must be placed in a package directory.
On the other hand,
sqldelight {
MyDatabase {
packageName = "<http://com.example.db.my|com.example.db.my>"
sourceFolders = ["sqldelight-my"]
}
MyOtherDatabase {
packageName = "com.example.db.other"
sourceFolders = ["sqldelight-other"]
}
}
Works as intended, generating two separate databases from *.sq files from corresponding directoriesLastExceed
06/20/2021, 12:14 PMkotlinpoet
in a project ? i get that i can compile code that generates a string that contains kotlin code, but that code then needs to be compiled as well. is there a way to set up some sort of 2step compilation or do i manually need to write that code to a file and then manually compile it with the rest of the project ?LastExceed
06/20/2021, 12:14 PMdiesieben07
06/20/2021, 12:16 PMjw
06/20/2021, 12:19 PMephemient
06/20/2021, 3:25 PMephemient
06/20/2021, 3:27 PMThomas
06/21/2021, 12:16 PM