Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MOB-466 Integrate Abacus changes for trigger order status notification #89

Merged
merged 2 commits into from
Apr 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions v4/app/src/main/java/exchange/dydx/trading/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import exchange.dydx.abacus.protocols.DYDXChainTransactionsProtocol
import exchange.dydx.abacus.protocols.FileSystemProtocol
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.abacus.protocols.ParserProtocol
import exchange.dydx.abacus.protocols.PresentationProtocol
import exchange.dydx.abacus.protocols.RestProtocol
import exchange.dydx.abacus.protocols.ThreadingProtocol
import exchange.dydx.abacus.protocols.TimerProtocol
Expand All @@ -33,6 +34,7 @@ import exchange.dydx.dydxstatemanager.clientState.wallets.DydxWalletStateManager
import exchange.dydx.dydxstatemanager.protocolImplementations.AbacusChainImp
import exchange.dydx.dydxstatemanager.protocolImplementations.AbacusFileSystemImp
import exchange.dydx.dydxstatemanager.protocolImplementations.AbacusLocalizerImp
import exchange.dydx.dydxstatemanager.protocolImplementations.AbacusPresentationImp
import exchange.dydx.dydxstatemanager.protocolImplementations.AbacusRestImp
import exchange.dydx.dydxstatemanager.protocolImplementations.AbacusThreadingImp
import exchange.dydx.dydxstatemanager.protocolImplementations.AbacusTimerImp
Expand Down Expand Up @@ -111,6 +113,7 @@ interface AppModule {
fun provideLanguageKey(): String = PreferenceKeys.Language

@Provides
@Singleton
fun providePlatformInfo(
@CoroutineScopes.App appScope: CoroutineScope,
): PlatformInfo =
Expand Down Expand Up @@ -166,6 +169,8 @@ interface AppModule {

@Binds fun bindTrackingProtocol(abacusTrackingImp: AbacusTrackingImp): TrackingProtocol

@Binds fun bindPresentationProtocol(abacusPresentationImp: AbacusPresentationImp): PresentationProtocol

@Binds fun bindTracking(compositeTracking: CompositeTracking): Tracking

@Binds fun bindThreading(abacusThreadingImp: AbacusThreadingImp): ThreadingProtocol
Expand Down
2 changes: 1 addition & 1 deletion v4/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ ext {
compileSdkVersion = 34

// App dependencies
abacusVersion = '1.6.46'
abacusVersion = '1.6.52'
carteraVersion = '0.1.13'
kollectionsVersion = '2.0.16'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.dydxstatemanager.AbacusStateManagerProtocol
import exchange.dydx.trading.common.DydxViewModel
import exchange.dydx.trading.feature.market.marketinfo.components.tabs.DydxMarketAccountTabView
import exchange.dydx.trading.feature.market.marketinfo.components.tabs.DydxMarketStatsTabView
Expand All @@ -21,7 +20,6 @@ class DydxMarketInfoViewModel @Inject constructor(
private val localizer: LocalizerProtocol,
private val mutableMarketInfoStream: MutableMarketInfoStreaming,
private val marketInfoStream: MarketInfoStreaming,
private val abacusStateManager: AbacusStateManagerProtocol,
statsTabFlow: Flow<@JvmSuppressWildcards DydxMarketStatsTabView.Selection>,
accountTabFlow: Flow<@JvmSuppressWildcards DydxMarketAccountTabView.Selection>,
tileFlow: Flow<@JvmSuppressWildcards DydxMarketTilesView.Tile>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.buttons.PlatformButton
import exchange.dydx.platformui.components.buttons.PlatformButtonState
import exchange.dydx.platformui.designSystem.theme.ThemeColor
Expand Down Expand Up @@ -74,12 +73,7 @@ object DydxOnboardConnectView : DydxComponent {
viewModel.updateContext(context)
}

PlatformInfoScaffold(
modifier = modifier,
platformInfo = viewModel.platformInfo,
) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.integration.javascript.JavascriptRunnerWebview
import exchange.dydx.platformui.components.PlatformDialogScaffold
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.camera.PlatformQrScanner
import exchange.dydx.platformui.components.dividers.PlatformDivider
import exchange.dydx.platformui.designSystem.theme.ThemeColor
Expand Down Expand Up @@ -48,12 +47,7 @@ object DydxDesktopScanView : DydxComponent {
val viewModel: DydxDesktopScanViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value
PlatformInfoScaffold(
modifier = modifier,
platformInfo = viewModel.platformInfo,
) {
Content(it, state)
}
Content(modifier, state)

PlatformDialogScaffold(dialog = viewModel.platformDialog)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.buttons.PlatformButton
import exchange.dydx.platformui.components.buttons.PlatformButtonState
import exchange.dydx.platformui.components.dividers.PlatformDivider
Expand Down Expand Up @@ -99,13 +98,7 @@ object DydxOrderDetailsView : DydxComponent {
val viewModel: DydxOrderDetailsViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value

PlatformInfoScaffold(
modifier = modifier,
platformInfo = viewModel.platformInfo,
) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.buttons.PlatformButton
import exchange.dydx.platformui.components.buttons.PlatformPillButton
import exchange.dydx.platformui.components.icons.PlatformImage
Expand Down Expand Up @@ -80,12 +79,7 @@ object DydxKeyExportView : DydxComponent {
val viewModel: DydxKeyExportViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value
PlatformInfoScaffold(
modifier = modifier,
platformInfo = viewModel.platformInfo,
) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import exchange.dydx.trading.common.DydxViewModel
import exchange.dydx.trading.common.formatter.DydxFormatter
import exchange.dydx.trading.feature.receipt.ReceiptType
import exchange.dydx.trading.feature.shared.views.AmountText
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
Expand All @@ -28,7 +27,6 @@ class DydxReceiptBuyingPowerViewModel @Inject constructor(
private val receiptTypeFlow: Flow<@JvmSuppressWildcards ReceiptType?>,
) : ViewModel(), DydxViewModel {

@OptIn(ExperimentalCoroutinesApi::class)
val state: Flow<DydxReceiptBuyingPowerView.ViewState?> =
receiptTypeFlow
.flatMapLatest { receiptType ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.zIndex
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.buttons.PlatformPillItem
import exchange.dydx.platformui.components.changes.PlatformAmountChange
import exchange.dydx.platformui.components.dividers.PlatformDivider
Expand Down Expand Up @@ -125,9 +124,7 @@ object DydxAdjustMarginInputView : DydxComponent {
val viewModel: DydxAdjustMarginInputViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value
PlatformInfoScaffold(modifier = modifier, platformInfo = viewModel.platformInfo) {
Content(modifier, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.dividers.PlatformDivider
import exchange.dydx.platformui.designSystem.theme.ThemeColor
import exchange.dydx.platformui.designSystem.theme.ThemeFont
Expand Down Expand Up @@ -90,9 +89,7 @@ object DydxTradeInputMarginModeView : DydxComponent {
val viewModel: DydxTradeInputMarginModeViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value
PlatformInfoScaffold(modifier = modifier, platformInfo = viewModel.platformInfo) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.buttons.PlatformButton
import exchange.dydx.platformui.components.buttons.PlatformButtonState
import exchange.dydx.platformui.components.buttons.PlatformPillItem
Expand Down Expand Up @@ -72,9 +71,7 @@ object DydxTradeInputTargetLeverageView : DydxComponent {
val viewModel: DydxTradeInputTargetLeverageViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value
PlatformInfoScaffold(modifier = modifier, platformInfo = viewModel.platformInfo) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.Lifecycle
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.OnLifecycleEvent
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.dividers.PlatformDivider
import exchange.dydx.platformui.designSystem.theme.ThemeColor
import exchange.dydx.platformui.designSystem.theme.ThemeFont
Expand Down Expand Up @@ -90,12 +89,7 @@ object DydxTriggerOrderInputView : DydxComponent {
}
}

PlatformInfoScaffold(
modifier = modifier,
platformInfo = viewModel.platformInfo,
) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import exchange.dydx.abacus.state.model.TriggerOrdersInputField
import exchange.dydx.dydxstatemanager.AbacusStateManagerProtocol
import exchange.dydx.dydxstatemanager.stopLossOrders
import exchange.dydx.dydxstatemanager.takeProfitOrders
import exchange.dydx.platformui.components.PlatformInfo
import exchange.dydx.trading.common.DydxViewModel
import exchange.dydx.trading.common.di.CoroutineScopes
import exchange.dydx.trading.common.formatter.DydxFormatter
Expand All @@ -25,7 +24,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import javax.inject.Inject
Expand All @@ -37,7 +35,6 @@ class DydxTriggerOrderInputViewModel @Inject constructor(
private val router: DydxRouter,
private val formatter: DydxFormatter,
savedStateHandle: SavedStateHandle,
val platformInfo: PlatformInfo,
private val triggerOrderStream: MutableTriggerOrderStreaming,
@CoroutineScopes.ViewModel private val viewModelScope: CoroutineScope,
) : ViewModel(), DydxViewModel {
Expand Down Expand Up @@ -78,8 +75,6 @@ class DydxTriggerOrderInputViewModel @Inject constructor(
}
.launchIn(viewModelScope)
}

subscribeToStatus()
}

private fun createViewState(
Expand Down Expand Up @@ -230,33 +225,4 @@ class DydxTriggerOrderInputViewModel @Inject constructor(
}
}
}

private fun subscribeToStatus() {
triggerOrderStream.submissionStatus
.filterNotNull()
.map { status ->
when (status) {
is AbacusStateManagerProtocol.SubmissionStatus.Success ->
platformInfo.show(
title = localizer.localize("trade.trigger.order.submission.success.title"),
message = localizer.localize("trade.trigger.order.submission.success.message"),
buttonTitle = localizer.localize("APP.GENERAL.BACK"),
buttonAction = {
router.navigateBack()
},
)

is AbacusStateManagerProtocol.SubmissionStatus.Failed ->
platformInfo.show(
title = localizer.localize("trade.trigger.order.submission.failed.title"),
message = localizer.localize("trade.trigger.order.submission.failed.message"),
type = PlatformInfo.InfoType.Error,
)

else -> null
}
}
.distinctUntilChanged()
.launchIn(viewModelScope)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import exchange.dydx.abacus.output.input.ValidationError
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.dydxstatemanager.AbacusStateManagerProtocol
import exchange.dydx.trading.common.DydxViewModel
import exchange.dydx.trading.common.navigation.DydxRouter
import exchange.dydx.trading.feature.trade.streams.MutableTriggerOrderStreaming
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
Expand All @@ -19,7 +20,7 @@ class DydxTriggerOrderCtaButtonViewModel @Inject constructor(
private val localizer: LocalizerProtocol,
private val abacusStateManager: AbacusStateManagerProtocol,
private val triggerOrderStream: MutableTriggerOrderStreaming,

private val router: DydxRouter,
) : ViewModel(), DydxViewModel {

val state: Flow<DydxTriggerOrderCtaButtonView.ViewState?> =
Expand Down Expand Up @@ -60,9 +61,9 @@ class DydxTriggerOrderCtaButtonViewModel @Inject constructor(
DydxTriggerOrderCtaButtonView.State.Disabled(buttonTitle)
},
ctaAction = {
triggerOrderStream.updatesubmissionStatus(null)
abacusStateManager.commitTriggerOrders { status ->
triggerOrderStream.updatesubmissionStatus(status)
router.navigateBack()
abacusStateManager.commitTriggerOrders { _ ->
// order status will be shown from PresentationProtocol.showToast()
}
},
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.dividers.PlatformDivider
import exchange.dydx.platformui.designSystem.theme.ThemeColor
import exchange.dydx.platformui.designSystem.theme.ThemeShapes
Expand Down Expand Up @@ -57,9 +56,7 @@ object DydxTransferView : DydxComponent {
val viewModel: DydxTransferViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value
PlatformInfoScaffold(modifier = modifier, platformInfo = viewModel.platformInfo) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import exchange.dydx.abacus.protocols.LocalizerProtocol
import exchange.dydx.platformui.components.PlatformInfoScaffold
import exchange.dydx.platformui.components.buttons.PlatformButton
import exchange.dydx.platformui.designSystem.theme.ThemeColor
import exchange.dydx.platformui.designSystem.theme.themeColor
Expand Down Expand Up @@ -45,13 +44,7 @@ object DydxTransferFaucetView : DydxComponent {
val viewModel: DydxTransferFaucetViewModel = hiltViewModel()

val state = viewModel.state.collectAsStateWithLifecycle(initialValue = null).value

PlatformInfoScaffold(
modifier = modifier,
platformInfo = viewModel.platformInfo,
) {
Content(it, state)
}
Content(modifier, state)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class DydxTransferFaucetViewModel @Inject constructor(
is AbacusStateManagerProtocol.SubmissionStatus.Success -> {
platformInfo.show(
title = "Faucet Request Submitted",
message = "Your portofolio balance will be updated after a short while.",
message = "Your portfolio balance will be updated after a short while.",
)
}
is AbacusStateManagerProtocol.SubmissionStatus.Failed -> {
Expand Down
Loading
Loading