Итак, пока я не найду какое-то официальное решение этой проблемы, вот что я придумал:
Вместо того, чтобы возвращать Flow, я создал функцию-оболочку, принимающую два аргумента:
@JsName("getUsersListWithUpdatesJs")
fun UserUseCase.getUsersListWithUpdatesJs(
success: (List<User>) -> Unit,
error: (Throwable) -> Unit
) = GlobalScope.promise {
try {
getUsersList().collect {
success(it)
}
} catch (exception: Throwable) {
error(exception)
}
}
Затем я опубликовал библиотеку Js на нашем сервере Nexus.
Добавлен в качестве зависимости в проект JS с использованием npm.
Затем использование:
import * as domain from "my-multiplatform-library";
…
…
…
domain.com.abc.usecase.createUserUseCaseJs().then(
(useCase) => {
console.log(useCase);
useCase. getUsersListWithUpdatesJs(
(list) => {
// This block should be called twice. For Empty and Non-empty array
console.log("Response", list)
},
(error) => {
// Ignore this block for now
},
);
},
(error) => {
console.log(error);
}
);