Skip to content

Commit 9d66252

Browse files
authored
Merge pull request #534 from code-payments/feat/flip-shareable-tip-card
feat: add ability to flip shareable tip card to see the back
2 parents 81a5890 + ed019d9 commit 9d66252

12 files changed

Lines changed: 303 additions & 52 deletions

File tree

api/src/main/java/com/getcode/model/Feature.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,9 @@ data class CameraAFFeature(
5151
data class CameraZoomFeature(
5252
override val enabled: Boolean = BetaOptions.Defaults.cameraPinchZoomEnabled,
5353
override val available: Boolean = true, // always available
54+
): Feature
55+
56+
data class FlippableTipCardFeature(
57+
override val enabled: Boolean = BetaOptions.Defaults.canFlipTipCard,
58+
override val available: Boolean = true, // always available
5459
): Feature

api/src/main/java/com/getcode/model/PrefBool.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ sealed class PrefsBool(val value: String) {
6060
data object KADO_WEBVIEW_ENABLED : PrefsBool("kado_inapp_enabled"), BetaFlag
6161
data object SHARE_TWEET_TO_TIP : PrefsBool("share_tweet_to_tip"), BetaFlag, Immutable
6262
data object TIP_CARD_ON_HOMESCREEN: PrefsBool("tip_card_on_home_screen"), BetaFlag, Immutable
63-
63+
data object TIP_CARD_FLIPPABLE: PrefsBool("tipcard_flippable"), BetaFlag
6464
data object CAMERA_AF_ENABLED: PrefsBool("camera_af_enabled"), BetaFlag
6565
data object CAMERA_PINCH_ZOOM: PrefsBool("camera_pinch_zoom_enabled"), BetaFlag
6666
}

api/src/main/java/com/getcode/network/repository/BetaFlagsRepository.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ data class BetaOptions(
2323
val tipCardOnHomeScreen: Boolean,
2424
val cameraAFEnabled: Boolean,
2525
val cameraPinchZoomEnabled: Boolean,
26+
val canFlipTipCard: Boolean,
2627
) {
2728
companion object {
2829
// Default states for various beta flags in app.
@@ -44,6 +45,7 @@ data class BetaOptions(
4445
tipCardOnHomeScreen = true,
4546
cameraAFEnabled = true,
4647
cameraPinchZoomEnabled = true,
48+
canFlipTipCard = false
4749
)
4850
}
4951
}
@@ -83,6 +85,7 @@ class BetaFlagsRepository @Inject constructor(
8385
observeBetaFlag(PrefsBool.TIP_CARD_ON_HOMESCREEN, defaults.tipCardOnHomeScreen),
8486
observeBetaFlag(PrefsBool.CAMERA_AF_ENABLED, defaults.cameraAFEnabled),
8587
observeBetaFlag(PrefsBool.CAMERA_PINCH_ZOOM, defaults.cameraPinchZoomEnabled),
88+
observeBetaFlag(PrefsBool.TIP_CARD_FLIPPABLE, defaults.canFlipTipCard)
8689
) {
8790
BetaOptions(
8891
showNetworkDropOff = it[0],
@@ -101,7 +104,8 @@ class BetaFlagsRepository @Inject constructor(
101104
shareTweetToTip = it[13],
102105
tipCardOnHomeScreen = it[14],
103106
cameraAFEnabled = it[15],
104-
cameraPinchZoomEnabled = it[16]
107+
cameraPinchZoomEnabled = it[16],
108+
canFlipTipCard = it[17]
105109
)
106110
}
107111
}

api/src/main/java/com/getcode/network/repository/FeatureRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.getcode.model.TipCardFeature
99
import com.getcode.model.TipCardOnHomeScreenFeature
1010
import com.getcode.model.ConversationCashFeature
1111
import com.getcode.model.ConversationsFeature
12+
import com.getcode.model.FlippableTipCardFeature
1213
import kotlinx.coroutines.flow.combine
1314
import kotlinx.coroutines.flow.map
1415
import javax.inject.Inject
@@ -27,6 +28,7 @@ class FeatureRepository @Inject constructor(
2728

2829
val tipCards = betaFlags.observe().map { TipCardFeature(it.tipsEnabled) }
2930
val tipCardOnHomeScreen = betaFlags.observe().map { TipCardOnHomeScreenFeature(it.tipCardOnHomeScreen) }
31+
val tipCardFlippable = betaFlags.observe().map { FlippableTipCardFeature(it.canFlipTipCard) }
3032
val conversations = betaFlags.observe().map { ConversationsFeature(it.conversationsEnabled) }
3133
val conversationsCash = betaFlags.observe().map { ConversationCashFeature(it.conversationCashEnabled) }
3234

app/src/main/java/com/getcode/models/BillState.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ sealed interface Bill {
104104
is Tip -> true
105105
}
106106

107+
val canFlip: Boolean
108+
107109
val metadata: Metadata
108110
get() {
109111
return when (this) {
@@ -135,8 +137,10 @@ sealed interface Bill {
135137
override val amount: KinAmount,
136138
override val didReceive: Boolean = false,
137139
override val data: List<Byte> = emptyList(),
138-
val kind: Kind = Kind.cash
139-
) : Bill
140+
val kind: Kind = Kind.cash,
141+
) : Bill {
142+
override val canFlip: Boolean = false
143+
}
140144

141145
data class Payment(
142146
override val amount: KinAmount,
@@ -145,6 +149,7 @@ sealed interface Bill {
145149
) : Bill {
146150
override val didReceive: Boolean = false
147151
override val data: List<Byte> = payload.codeData.toList()
152+
override val canFlip: Boolean = false
148153
}
149154

150155
data class Login(
@@ -154,11 +159,13 @@ sealed interface Bill {
154159
) : Bill {
155160
override val didReceive: Boolean = false
156161
override val data: List<Byte> = payload.codeData.toList()
162+
override val canFlip: Boolean = false
157163
}
158164

159165
data class Tip(
160166
val payload: CodePayload,
161-
val request: DeepLinkRequest? = null
167+
val request: DeepLinkRequest? = null,
168+
override val canFlip: Boolean = false
162169
) : Bill {
163170
override val amount: KinAmount = KinAmount.newInstance(Kin.fromKin(0), Rate.oneToOne)
164171
override val didReceive: Boolean = false

app/src/main/java/com/getcode/view/main/account/BetaFlagsScreen.kt

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,42 @@ fun BetaFlagsScreen(
4242
val tipsEngine = LocalTipsEngine.current
4343

4444
val options = listOf(
45+
BetaFeature(
46+
PrefsBool.KADO_WEBVIEW_ENABLED,
47+
R.string.beta_kado_webview,
48+
stringResource(id = R.string.beta_kado_webview_description),
49+
state.kadoWebViewEnabled,
50+
),
51+
BetaFeature(
52+
PrefsBool.SHARE_TWEET_TO_TIP,
53+
R.string.beta_share_tweet_tip,
54+
stringResource(id = R.string.beta_share_tweet_tip_description),
55+
state.shareTweetToTip,
56+
),
57+
BetaFeature(
58+
PrefsBool.CAMERA_AF_ENABLED,
59+
R.string.beta_camera_af,
60+
stringResource(id = R.string.beta_camera_af_description),
61+
state.cameraAFEnabled,
62+
),
63+
BetaFeature(
64+
PrefsBool.CAMERA_PINCH_ZOOM,
65+
R.string.beta_camera_pinch_zoom,
66+
stringResource(id = R.string.beta_camera_pinch_zoom_description),
67+
state.cameraPinchZoomEnabled,
68+
),
69+
BetaFeature(
70+
PrefsBool.TIP_CARD_FLIPPABLE,
71+
R.string.beta_tipcard_can_flip,
72+
stringResource(id = R.string.beta_tipcard_can_flip_description),
73+
state.canFlipTipCard,
74+
),
75+
BetaFeature(
76+
PrefsBool.CONVERSATIONS_ENABLED,
77+
R.string.beta_conversations,
78+
stringResource(id = R.string.beta_conversations_description),
79+
state.conversationsEnabled,
80+
),
4581
BetaFeature(
4682
PrefsBool.VIBRATE_ON_SCAN,
4783
R.string.beta_vibrate_on_scan,
@@ -96,42 +132,12 @@ fun BetaFlagsScreen(
96132
stringResource(id = R.string.beta_tipcard_on_homescreen_description),
97133
state.tipCardOnHomeScreen,
98134
),
99-
BetaFeature(
100-
PrefsBool.CONVERSATIONS_ENABLED,
101-
R.string.beta_conversations,
102-
stringResource(id = R.string.beta_conversations_description),
103-
state.conversationsEnabled,
104-
),
105135
BetaFeature(
106136
PrefsBool.CONVERSATION_CASH_ENABLED,
107137
R.string.beta_conversations_cash,
108138
stringResource(id = R.string.beta_conversations_cash_description),
109139
state.conversationCashEnabled,
110140
),
111-
BetaFeature(
112-
PrefsBool.KADO_WEBVIEW_ENABLED,
113-
R.string.beta_kado_webview,
114-
stringResource(id = R.string.beta_kado_webview_description),
115-
state.kadoWebViewEnabled,
116-
),
117-
BetaFeature(
118-
PrefsBool.SHARE_TWEET_TO_TIP,
119-
R.string.beta_share_tweet_tip,
120-
stringResource(id = R.string.beta_share_tweet_tip_description),
121-
state.shareTweetToTip,
122-
),
123-
BetaFeature(
124-
PrefsBool.CAMERA_AF_ENABLED,
125-
R.string.beta_camera_af,
126-
stringResource(id = R.string.beta_camera_af_description),
127-
state.cameraAFEnabled,
128-
),
129-
BetaFeature(
130-
PrefsBool.CAMERA_PINCH_ZOOM,
131-
R.string.beta_camera_pinch_zoom,
132-
stringResource(id = R.string.beta_camera_pinch_zoom),
133-
state.cameraPinchZoomEnabled,
134-
),
135141
BetaFeature(
136142
PrefsBool.DISPLAY_ERRORS,
137143
R.string.beta_display_errors,

app/src/main/java/com/getcode/view/main/bill/Bill.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ fun Bill(
4242
modifier = modifier,
4343
username = bill.payload.username.orEmpty(),
4444
data = bill.data,
45+
interactive = bill.canFlip
4546
)
4647
}
4748
}

0 commit comments

Comments
 (0)