Skip to content

Commit eb600d7

Browse files
cmaierFabtron
andauthored
ui-toolkit: Receipt list to display receipts in detail (#83)
Add a list and the functionality to display a list of all receipts and receipts in detail. Co-authored-by: Fabian Bender <[email protected]>
1 parent 3d0cbb8 commit eb600d7

27 files changed

+854
-14
lines changed

core/src/main/java/io/snabble/sdk/Receipts.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,4 @@ class Receipts internal constructor() {
123123
fun success(pdf: File?)
124124
fun failure()
125125
}
126-
}
126+
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# The setting is particularly useful for tweaking memory settings.
1212
android.enableJetifier=true
1313
android.useAndroidX=true
14-
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
14+
org.gradle.jvmargs=-Xmx2g -XX:+UseParallelGC
1515
org.gradle.unsafe.configuration-cache=true
1616

1717
# When configured, Gradle will run in incubating parallel mode.

kotlin-sample/src/main/AndroidManifest.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
android:exported="true"
3333
android:windowSoftInputMode="adjustPan" />
3434

35+
<activity
36+
android:name="io.snabble.sdk.screens.receipts.ReceiptListActivity"
37+
android:exported="false"
38+
android:label="@string/Snabble.Receipts.title"
39+
android:theme="@style/AppTheme.ActionBar" />
40+
3541
<meta-data
3642
android:name="snabble_network_interceptor"
3743
android:value="io.snabble.sdk.sample.LoggingInterceptor" />

kotlin-sample/src/main/assets/profileConfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
},
2020
{
2121
"type": "text",
22-
"id": "3",
22+
"id": "show.lastPurchases",
2323
"text": "Profile.lastPurchases",
2424
"padding": [16, 8]
2525
},

kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ import com.google.android.material.navigation.NavigationBarView
2020
import com.google.gson.Gson
2121
import io.snabble.sdk.Snabble
2222
import io.snabble.sdk.SnabbleUiToolkit
23+
import io.snabble.sdk.SnabbleUiToolkit.Event.SHOW_RECEIPT_LIST
2324
import io.snabble.sdk.sample.onboarding.repository.OnboardingRepository
2425
import io.snabble.sdk.sample.onboarding.repository.OnboardingRepositoryImpl
2526
import io.snabble.sdk.screens.home.viewmodel.DynamicHomeViewModel
2627
import io.snabble.sdk.screens.profile.viewmodel.DynamicProfileViewModel
28+
import io.snabble.sdk.screens.receipts.showDetails
2729
import kotlinx.coroutines.launch
2830

2931
class MainActivity : AppCompatActivity() {
@@ -74,6 +76,7 @@ class MainActivity : AppCompatActivity() {
7476
profileViewModel.actions.asLiveData()
7577
.observe(this) { action ->
7678
when (action.widget.id) {
79+
"show.lastPurchases" -> SnabbleUiToolkit.executeAction(context = this, SHOW_RECEIPT_LIST)
7780
else -> Unit
7881
}
7982
}
@@ -83,6 +86,19 @@ class MainActivity : AppCompatActivity() {
8386
when (action.widget.id) {
8487
"start" -> navBarView.selectedItemId = R.id.navigation_scanner
8588
"stores" -> navBarView.selectedItemId = R.id.navigation_shop
89+
"purchases" -> {
90+
when (action.info?.get("action")) {
91+
"more" -> SnabbleUiToolkit.executeAction(context = this, SHOW_RECEIPT_LIST)
92+
93+
"purchase" -> {
94+
(action.info?.get("id") as? String)?.let {
95+
lifecycleScope.launch {
96+
showDetails(this@MainActivity.findViewById(android.R.id.content), it)
97+
}
98+
}
99+
}
100+
}
101+
}
86102
else -> Unit
87103
}
88104
}

kotlin-sample/src/main/res/values/themes.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,10 @@
3535
</style>
3636

3737
<style name="AppTheme" parent="AppTheme.Parent" />
38-
38+
39+
<style name="AppTheme.ActionBar" parent="AppTheme">
40+
<!-- Needed to load the layout w/ Actionbar! -->
41+
<item name="snabbleToolbarStyle" />
42+
</style>
43+
3944
</resources>

ui-toolkit/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ dependencies {
9999

100100
implementation 'com.squareup.picasso:picasso:2.8'
101101

102+
implementation 'commons-io:commons-io:2.11.0'
103+
102104
implementation "io.insert-koin:koin-core:$koin_version"
103105
implementation "io.insert-koin:koin-android:$koin_version"
104106
implementation "io.insert-koin:koin-android-compat:$koin_version"

ui-toolkit/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
<activity
1919
android:name="io.snabble.sdk.screens.shopfinder.ShopDetailsActivity"
2020
android:exported="false" />
21+
<activity
22+
android:name="io.snabble.sdk.screens.receipts.ReceiptListActivity"
23+
android:exported="false" />
2124

2225
<provider
2326
android:name="androidx.startup.InitializationProvider"

ui-toolkit/src/main/kotlin/io/snabble/sdk/SnabbleUiToolkit.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ import io.snabble.sdk.SnabbleUiToolkit.Event.SHOW_DEEPLINK
1414
import io.snabble.sdk.SnabbleUiToolkit.Event.SHOW_DETAILS_SHOP_LIST
1515
import io.snabble.sdk.SnabbleUiToolkit.Event.SHOW_ONBOARDING
1616
import io.snabble.sdk.SnabbleUiToolkit.Event.SHOW_ONBOARDING_DONE
17+
import io.snabble.sdk.SnabbleUiToolkit.Event.SHOW_RECEIPT_LIST
1718
import io.snabble.sdk.SnabbleUiToolkit.Event.SHOW_SHOP_LIST
1819
import io.snabble.sdk.SnabbleUiToolkit.Event.START_NAVIGATION
1920
import io.snabble.sdk.screens.onboarding.ui.OnboardingActivity
21+
import io.snabble.sdk.screens.receipts.ReceiptListActivity
2022
import io.snabble.sdk.screens.shopfinder.ShopDetailsActivity
2123
import io.snabble.sdk.screens.shopfinder.ShopListActivity
2224
import io.snabble.sdk.ui.Action
@@ -44,6 +46,7 @@ object SnabbleUiToolkit {
4446
SHOW_SHOP_LIST,
4547
SHOW_DETAILS_SHOP_LIST,
4648
SHOW_DEEPLINK,
49+
SHOW_RECEIPT_LIST,
4750
DETAILS_SHOP_BUTTON_ACTION,
4851
START_NAVIGATION,
4952
GO_BACK
@@ -122,6 +125,12 @@ object SnabbleUiToolkit {
122125
args,
123126
true
124127
)
128+
SHOW_RECEIPT_LIST -> startActivity(
129+
context,
130+
ReceiptListActivity::class.java,
131+
args,
132+
canGoBack = true
133+
)
125134
SHOW_DEEPLINK,
126135
GO_BACK,
127136
DETAILS_SHOP_BUTTON_ACTION,

ui-toolkit/src/main/kotlin/io/snabble/sdk/di/KoinInitializer.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.startup.Initializer
55
import io.snabble.sdk.dynamicview.data.di.configModule
66
import io.snabble.sdk.screens.home.di.homeModule
77
import io.snabble.sdk.screens.profile.di.profileModule
8+
import io.snabble.sdk.screens.receipts.di.receiptModule
89
import io.snabble.sdk.ui.toolkit.BuildConfig
910
import io.snabble.sdk.widgets.snabble.customercard.di.customerCardModule
1011
import io.snabble.sdk.widgets.snabble.locationpermission.di.locationPermissionModule
@@ -37,6 +38,7 @@ internal class KoinInitializer : Initializer<Koin> {
3738
homeModule,
3839
profileModule,
3940
wlanManagerModule,
41+
receiptModule,
4042
)
4143
}
4244
.koin

0 commit comments

Comments
 (0)