Shivam Kanodia
05/01/2024, 10:10 AMArkadii Ivanov
05/01/2024, 10:13 AMShivam Kanodia
05/01/2024, 10:14 AMcreateNewOrder = *{* childContext, projectId, isOpenedFromBOQ, orgId, immediateClientId, context, openFrom, orderDetailsRes, output *->*
CreateNewOrderComponent(
componentContext = componentContext,
storeFactory = storeFactory,
projectId = projectId,
isOpenedFromBOQ = isOpenedFromBOQ,
orgId = orgId,
immediateClientId = immediateClientId,
context = context,
openFrom = openFrom,
orderDetailsRes = orderDetailsRes,
output = output,
)
*}*,
createNewOrderStep2 = *{* childContext, projectId, isOpenedFromBOQ, orgId, immediateClientId, clientId1, output *->*
CreateNewOrderComponent(
componentContext = componentContext, // childContext
storeFactory = storeFactory,
projectId = projectId,
isOpenedFromBOQ = isOpenedFromBOQ,
orgId = orgId,
immediateClientId = immediateClientId,
clientId = clientId ?: clientId1,
output = output,
)
*}*,
for step1 and step2
Shivam Kanodia
05/01/2024, 10:15 AMShivam Kanodia
05/01/2024, 10:15 AMclass CreateNewOrderComponent(
componentContext: ComponentContext,
storeFactory: StoreFactory,
var projectId: String,
val clientId: String? = null,
val libraryId: String? = null,
val isOpenedFromBOQ: Boolean,
val orgId: String?,
val immediateClientId: String?,
val orderItem: OrderElementCreateData? = null,
val preFilledPODetails: AddPOResponseModel? = null,
val context: String? = null,
val openFrom: String? = null,
val orderDetailsRes: OrderDetailResModel? = null,
private val output: (Output) -> Unit,
) : ComponentContext by componentContext {
private val createNewOrderStore = instanceKeeper.getOrCreate {
CreateNewOrderStoreFactory(
storeFactory = storeFactory,
projectId = projectId
).create()
}
@OptIn(ExperimentalCoroutinesApi::class)
val state = createNewOrderStore.stateFlow
fun onEvent(event: CreateNewOrderStore.Intent) {
println("createNewOrderStore ${createNewOrderStore}")
createNewOrderStore.accept(event)
}
fun onOutput(output: Output) {
output(output)
}
fun clearStore() {
createNewOrderStore.dispose()
}
}
Arkadii Ivanov
05/01/2024, 10:18 AMShivam Kanodia
05/01/2024, 10:19 AMShivam Kanodia
05/01/2024, 10:19 AMArkadii Ivanov
05/01/2024, 10:22 AMShivam Kanodia
05/01/2024, 10:23 AM@Parcelize
data class CreateNewOrderScreenStep2(
val projectId: String?,
val isOpenedFromBOQ: Boolean,
val orgId: String?,
val immediateClientId: String?,
val clientId: String?,
) : Configuration()Arkadii Ivanov
05/01/2024, 10:24 AMShivam Kanodia
05/01/2024, 10:26 AMclass RootComponent internal constructor(
componentContext: ComponentContext, private val createNewOrderStep2: (ComponentContext, projectId: String, isOpenedFromBOQ: Boolean, orgId: String?, immediateClientId: String?, clientId: String?, (CreateNewOrderComponent.Output) -> Unit) -> CreateNewOrderComponent)
Shivam Kanodia
05/01/2024, 10:26 AMArkadii Ivanov
05/01/2024, 10:29 AMShivam Kanodia
05/01/2024, 10:30 AMis Configuration.CreateNewOrderScreenStep2 -> Child.CreateNewOrderScreenStep2(
createNewOrderStep2(
componentContext,
configuration.projectId ?: "",
configuration.isOpenedFromBOQ,
orgId ?: configuration.orgId,
immediateClientId ?: configuration.immediateClientId,
configuration.clientId,
null, // what to put here for store,
::onCreateNewOrderScreenOutput
)
). / what to put here for store,? we cant get that data from configuration?Arkadii Ivanov
05/01/2024, 10:31 AMShivam Kanodia
05/01/2024, 10:31 AMArkadii Ivanov
05/01/2024, 10:34 AMShivam Kanodia
05/01/2024, 10:35 AMShivam Kanodia
05/01/2024, 10:36 AMArkadii Ivanov
05/01/2024, 10:37 AM