Skip to content
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 api/src/main/java/com/getcode/model/Feature.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ data class TipCardFeature(
override val available: Boolean = true, // always available
): Feature

data class TipCardOnHomeScreenFeature(
override val enabled: Boolean = BetaOptions.Defaults.tipCardOnHomeScreen,
override val available: Boolean = true, // always available
): Feature

data class TipChatFeature(
override val enabled: Boolean = BetaOptions.Defaults.tipsChatEnabled,
override val available: Boolean = true, // always available
Expand Down
1 change: 1 addition & 0 deletions api/src/main/java/com/getcode/model/PrefBool.kt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ sealed class PrefsBool(val value: String) {
data object BALANCE_CURRENCY_SELECTION_ENABLED: PrefsBool("balance_currency_enabled"), BetaFlag
data object KADO_WEBVIEW_ENABLED : PrefsBool("kado_inapp_enabled"), BetaFlag
data object SHARE_TWEET_TO_TIP : PrefsBool("share_tweet_to_tip"), BetaFlag
data object TIP_CARD_ON_HOMESCREEN: PrefsBool("tip_card_on_home_screen"), BetaFlag
}

val APP_SETTINGS: List<AppSetting> = listOf(PrefsBool.CAMERA_START_BY_DEFAULT, PrefsBool.REQUIRE_BIOMETRICS)
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ data class BetaOptions(
val balanceCurrencySelectionEnabled: Boolean,
val kadoWebViewEnabled: Boolean,
val shareTweetToTip: Boolean,
val tipCardOnHomeScreen: Boolean,
) {
companion object {
// Default states for various beta flags in app.
Expand All @@ -37,7 +38,8 @@ data class BetaOptions(
tipsChatCashEnabled = false,
balanceCurrencySelectionEnabled = true,
kadoWebViewEnabled = false,
shareTweetToTip = false
shareTweetToTip = false,
tipCardOnHomeScreen = true,
)
}
}
Expand Down Expand Up @@ -73,7 +75,8 @@ class BetaFlagsRepository @Inject constructor(
observeBetaFlag(PrefsBool.BALANCE_CURRENCY_SELECTION_ENABLED, defaults.balanceCurrencySelectionEnabled),
observeBetaFlag(PrefsBool.DISPLAY_ERRORS, default = defaults.displayErrors),
observeBetaFlag(PrefsBool.KADO_WEBVIEW_ENABLED, default = defaults.kadoWebViewEnabled),
observeBetaFlag(PrefsBool.SHARE_TWEET_TO_TIP, default = defaults.shareTweetToTip)
observeBetaFlag(PrefsBool.SHARE_TWEET_TO_TIP, default = defaults.shareTweetToTip),
observeBetaFlag(PrefsBool.TIP_CARD_ON_HOMESCREEN, defaults.tipCardOnHomeScreen)
) {
BetaOptions(
showNetworkDropOff = it[0],
Expand All @@ -89,7 +92,8 @@ class BetaFlagsRepository @Inject constructor(
balanceCurrencySelectionEnabled = it[10],
displayErrors = it[11],
kadoWebViewEnabled = it[12],
shareTweetToTip = it[13]
shareTweetToTip = it[13],
tipCardOnHomeScreen = it[14]
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.getcode.model.Feature
import com.getcode.model.PrefsBool
import com.getcode.model.RequestKinFeature
import com.getcode.model.TipCardFeature
import com.getcode.model.TipCardOnHomeScreenFeature
import com.getcode.model.TipChatCashFeature
import com.getcode.model.TipChatFeature
import kotlinx.coroutines.flow.combine
Expand All @@ -26,7 +27,7 @@ class FeatureRepository @Inject constructor(
) { enabled, available -> BuyModuleFeature(enabled, available) }

val tipCards = betaFlags.observe().map { TipCardFeature(it.tipsEnabled) }

val tipCardOnHomeScreen = betaFlags.observe().map { TipCardOnHomeScreenFeature(it.tipCardOnHomeScreen) }
val tipChat = betaFlags.observe().map { TipChatFeature(it.tipsChatEnabled) }
val tipChatCash = betaFlags.observe().map { TipChatCashFeature(it.tipsChatCashEnabled) }

Expand Down
34 changes: 25 additions & 9 deletions app/src/main/java/com/getcode/navigation/screens/ModalScreens.kt
Original file line number Diff line number Diff line change
Expand Up @@ -466,19 +466,35 @@ data class ConnectAccount(
override fun Content() {
val navigator = LocalCodeNavigator.current
val viewModel = getViewModel<TipConnectViewModel>()
ModalContainer(
backButtonEnabled = {
if (navigator.isVisible) {
it is ConnectAccount
} else {
navigator.progress > 0f
when (reason) {
IdentityConnectionReason.TipCard -> {
ModalContainer(
closeButtonEnabled = {
if (navigator.isVisible) {
it is ConnectAccount
} else {
navigator.progress > 0f
}
}
) {
ConnectAccountScreen(viewModel)
}
}
IdentityConnectionReason.IdentityReveal -> {
ModalContainer(
backButtonEnabled = {
if (navigator.isVisible) {
it is ConnectAccount
} else {
navigator.progress > 0f
}
}
) {
ConnectAccountScreen(viewModel)
}
}
) {
ConnectAccountScreen(viewModel)
}


LaunchedEffect(viewModel, reason) {
viewModel.dispatchEvent(TipConnectViewModel.Event.OnReasonChanged(reason))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,12 @@ fun BetaFlagsScreen(
stringResource(id = R.string.beta_tipcard_description),
state.tipsEnabled,
),
BetaFeature(
PrefsBool.TIP_CARD_ON_HOMESCREEN,
R.string.beta_tipcard_on_homescreen,
stringResource(id = R.string.beta_tipcard_on_homescreen_description),
state.tipCardOnHomeScreen,
),
BetaFeature(
PrefsBool.TIPS_CHAT_ENABLED,
R.string.beta_tipchats,
Expand Down
12 changes: 11 additions & 1 deletion app/src/main/java/com/getcode/view/main/home/HomeScan.kt
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,11 @@ import com.getcode.navigation.screens.AccountModal
import com.getcode.navigation.screens.BalanceModal
import com.getcode.navigation.screens.BuyMoreKinModal
import com.getcode.navigation.screens.BuySellScreen
import com.getcode.navigation.screens.ConnectAccount
import com.getcode.navigation.screens.EnterTipModal
import com.getcode.navigation.screens.GetKinModal
import com.getcode.navigation.screens.GiveKinModal
import com.getcode.navigation.screens.HomeResult
import com.getcode.navigation.screens.ShareDownloadLinkModal
import com.getcode.ui.components.OnLifecycleEvent
import com.getcode.ui.components.PermissionCheck
Expand Down Expand Up @@ -81,7 +83,8 @@ enum class HomeBottomSheet {
GIVE_KIN,
GET_KIN,
BALANCE,
SHARE_DOWNLOAD
SHARE_DOWNLOAD,
TIP_CARD
}

@Composable
Expand Down Expand Up @@ -191,6 +194,13 @@ private fun HomeScan(
HomeBottomSheet.GET_KIN -> navigator.show(GetKinModal)
HomeBottomSheet.BALANCE -> navigator.show(BalanceModal)
HomeBottomSheet.SHARE_DOWNLOAD -> navigator.show(ShareDownloadLinkModal)
HomeBottomSheet.TIP_CARD -> {
if (dataState.tipCardConnected) {
homeViewModel.presentShareableTipCard()
} else {
navigator.push(ConnectAccount())
}
}
HomeBottomSheet.NONE -> Unit
}
}
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/java/com/getcode/view/main/home/HomeViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import com.getcode.model.PrefsBool
import com.getcode.model.Rate
import com.getcode.model.RequestKinFeature
import com.getcode.model.TipCardFeature
import com.getcode.model.TipCardOnHomeScreenFeature
import com.getcode.model.TwitterUser
import com.getcode.model.Username
import com.getcode.models.Bill
Expand Down Expand Up @@ -147,6 +148,7 @@ data class HomeUiModel(
val buyModule: Feature = BuyModuleFeature(),
val requestKin: Feature = RequestKinFeature(),
val tips: Feature = TipCardFeature(),
val tipCardOnHomeScreen: Feature = TipCardOnHomeScreenFeature(),
val tipCardConnected: Boolean = false,
)

Expand Down Expand Up @@ -225,6 +227,13 @@ class HomeViewModel @Inject constructor(
}
}.launchIn(viewModelScope)

features.tipCardOnHomeScreen
.onEach { module ->
uiFlow.update {
it.copy(tipCardOnHomeScreen = module)
}
}.launchIn(viewModelScope)

features.requestKin
.onEach { module ->
uiFlow.update {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,30 @@ internal fun HomeBottom(
contentPadding = PaddingValues(horizontal = CodeTheme.dimens.grid.x3),
) {
BottomBarAction(
label = stringResource(R.string.title_getKin),
label = if (state.tipCardOnHomeScreen.enabled) {
stringResource(R.string.title_tipCard)
} else {
stringResource(R.string.title_getKin)
},
contentPadding = PaddingValues(
start = CodeTheme.dimens.grid.x3,
end = CodeTheme.dimens.grid.x3,
top = CodeTheme.dimens.grid.x1,
bottom = CodeTheme.dimens.grid.x2,
),
imageSize = CodeTheme.dimens.grid.x7,
painter = painterResource(R.drawable.ic_wallet),
onClick = { onPress(HomeBottomSheet.GET_KIN) },
painter = if (state.tipCardOnHomeScreen.enabled) {
painterResource(R.drawable.ic_tip_card)
} else {
painterResource(R.drawable.ic_wallet)
},
onClick = {
if (state.tipCardOnHomeScreen.enabled) {
onPress(HomeBottomSheet.TIP_CARD)
} else {
onPress(HomeBottomSheet.GET_KIN)
}
},
)
Spacer(modifier = Modifier.weight(1f))
BottomBarAction(
Expand All @@ -86,7 +100,12 @@ internal fun HomeBottom(
modifier = Modifier.padding(top = 2.dp, end = 2.dp),
count = state.chatUnreadCount,
color = ChatNodeDefaults.UnreadIndicator,
enterTransition = scaleIn(animationSpec = tween(durationMillis = 300, delayMillis = 1000)) + fadeIn()
enterTransition = scaleIn(
animationSpec = tween(
durationMillis = 300,
delayMillis = 1000
)
) + fadeIn()
)
}
)
Expand Down
20 changes: 20 additions & 0 deletions app/src/main/res/drawable/ic_tip_card.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="22dp"
android:height="32dp"
android:viewportWidth="22"
android:viewportHeight="32">
<group>
<clip-path
android:pathData="M1,0L21,0A1,1 0,0 1,22 1L22,31A1,1 0,0 1,21 32L1,32A1,1 0,0 1,0 31L0,1A1,1 0,0 1,1 0z"/>
<path
android:pathData="M1,0L21,0A1,1 0,0 1,22 1L22,31A1,1 0,0 1,21 32L1,32A1,1 0,0 1,0 31L0,1A1,1 0,0 1,1 0z"
android:strokeWidth="6"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
</group>
<path
android:pathData="M11,13m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:strokeWidth="3"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
</vector>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings-universal.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<string translatable="false" name="beta_vibrate_on_scan">Vibrate on Scan</string>
<string translatable="false" name="beta_network_dropoff">Show Connectivity Status</string>
<string translatable="false" name="beta_tipcard">Tip Card</string>
<string translatable="false" name="beta_tipcard_on_homescreen">Tip Card on Home Screen</string>
<string translatable="false" name="beta_tipchats">Tip Chats</string>
<string translatable="false" name="beta_tipchats_cash">Tip Chats Cash</string>
<string translatable="false" name="beta_balance_currency">Currency Selection in Balance</string>
Expand All @@ -35,6 +36,7 @@
<string name="beta_code_relationship_description" translatable="false">If enabled, a relationship account will be established with getcode.com if it doesn\'t yet exist.</string>
<string name="beta_chat_unsub_description" translatable="false">If enabled, an option to unsubscribe from a chat will appear for supported chats.</string>
<string name="beta_tipcard_description" translatable="false">If enabled, you\'ll gain the ability to share a tip card.</string>
<string name="beta_tipcard_on_homescreen_description" translatable="false">If enabled, your tip card will replace Get Cash on the home screen.</string>
<string name="beta_tipchats_description" translatable="false">If enabled, you\'ll gain the ability to chat with tippers.</string>
<string name="beta_tipchats_cash_description" translatable="false">If enabled, you\'ll gain the ability to send Kin in Tip Chats.</string>
<string name="beta_kado_webview_description" translatable="false">If enabled, the Buy Kin flow will open in an internal WebView.</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,5 @@
<string name="title_connectAccount">Connect Account</string>
<string name="subtitle_connectXAccount">Connecting your X account allows you to reveal your identity to the people you tip. To connect your account post to X.</string>
<string name="title_useKadoSandbox">Use Kado Sandbox</string>
<string name="title_tipCard">Tip Card</string>
</resources>