Skip to content

Commit 4060985

Browse files
authored
Fixes for UI toolkit (#66)
1. Fix Shoplist, distance is now visible if location permission is granted. 2. Fix broken tos link 3. Fix location bug for Api < 30
1 parent 1cc11e7 commit 4060985

File tree

7 files changed

+49
-14
lines changed

7 files changed

+49
-14
lines changed

core/src/main/java/io/snabble/sdk/checkin/CheckInLocationManager.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import android.annotation.SuppressLint
55
import android.app.Application
66
import android.content.Context
77
import android.content.pm.PackageManager
8-
import android.location.*
8+
import android.location.Location
9+
import android.location.LocationListener
10+
import android.location.LocationManager
911
import android.os.Bundle
1012
import androidx.core.app.ActivityCompat
1113
import androidx.lifecycle.MutableLiveData
@@ -60,6 +62,10 @@ class CheckInLocationManager(val application: Application) {
6062
override fun onProviderEnabled(provider: String) {}
6163

6264
override fun onProviderDisabled(provider: String) {}
65+
66+
@Deprecated("Deprecated in Java")
67+
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
68+
}
6369
}
6470

6571
/**

kotlin-sample/src/main/AndroidManifest.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,9 @@
4141
<meta-data
4242
android:name="snabble_network_interceptor"
4343
android:value="io.snabble.sdk.sample.LoggingInterceptor" />
44+
45+
<meta-data
46+
android:name="com.google.android.geo.API_KEY"
47+
android:value=""/>
4448
</application>
4549
</manifest>

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

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package io.snabble.sdk.sample
22

33
import android.Manifest
4+
import android.content.SharedPreferences
45
import android.content.pm.PackageManager
6+
import android.net.Uri
57
import android.os.Bundle
68
import android.widget.Toast
79
import androidx.activity.result.ActivityResultLauncher
@@ -13,10 +15,12 @@ import androidx.core.os.bundleOf
1315
import androidx.core.view.isVisible
1416
import androidx.lifecycle.lifecycleScope
1517
import androidx.navigation.NavController
18+
import androidx.navigation.NavDeepLinkRequest
1619
import androidx.navigation.findNavController
1720
import androidx.navigation.ui.AppBarConfiguration
1821
import androidx.navigation.ui.setupActionBarWithNavController
1922
import androidx.navigation.ui.setupWithNavController
23+
import androidx.preference.PreferenceManager
2024
import com.google.android.material.navigation.NavigationBarView
2125
import com.google.gson.Gson
2226
import io.snabble.sdk.Shop
@@ -36,6 +40,15 @@ class MainActivity : AppCompatActivity(), PermissionSupport {
3640

3741
private lateinit var locationManager: CheckInLocationManager
3842

43+
private val sharedPreferences: SharedPreferences
44+
get() = PreferenceManager.getDefaultSharedPreferences(this)
45+
46+
private var onboardingSeen: Boolean
47+
get() = sharedPreferences.getBoolean(ONBOARDING_SEEN, false)
48+
set(onboardingSeen) = sharedPreferences.edit()
49+
.putBoolean(ONBOARDING_SEEN, onboardingSeen)
50+
.apply()
51+
3952
private val onboardingRepo: OnboardingRepository by lazy {
4053
OnboardingRepositoryImpl(assets, Gson())
4154
}
@@ -55,7 +68,7 @@ class MainActivity : AppCompatActivity(), PermissionSupport {
5568
val toolbar: Toolbar = findViewById(R.id.toolbar)
5669
setupToolbar(toolbar, navController, navBarView)
5770

58-
if (savedInstanceState == null) {
71+
if (savedInstanceState == null && !onboardingSeen) {
5972
lifecycleScope.launch {
6073
val model = onboardingRepo.getOnboardingModel()
6174
SnabbleUiToolkit.executeAction(
@@ -211,19 +224,27 @@ class MainActivity : AppCompatActivity(), PermissionSupport {
211224
this@MainActivity,
212225
SnabbleUiToolkit.Event.DETAILS_SHOP_BUTTON_ACTION
213226
) { _, _ ->
214-
popBackStack()
227+
navBarView.selectedItemId = R.id.navigation_scanner
215228
}
216229
SnabbleUiToolkit.setUiAction(
217230
this@MainActivity,
218-
SnabbleUiToolkit.Event.SHOW_DETAILS_SHOP_LIST
231+
SnabbleUiToolkit.Event.SHOW_DEEPLINK
219232
) { _, args ->
220-
navigate(R.id.navigation_shops_details, args)
233+
val uri = Uri.parse(requireNotNull(args?.getString(SnabbleUiToolkit.DEEPLINK)))
234+
navigate(NavDeepLinkRequest.Builder.fromUri(uri).build())
221235
}
222236
SnabbleUiToolkit.setUiAction(
223237
this@MainActivity,
224-
SnabbleUiToolkit.Event.DETAILS_SHOP_BUTTON_ACTION
238+
SnabbleUiToolkit.Event.SHOW_ONBOARDING
239+
) { _, args ->
240+
navigate(R.id.frag_onboarding, args)
241+
}
242+
SnabbleUiToolkit.setUiAction(
243+
this@MainActivity,
244+
SnabbleUiToolkit.Event.SHOW_ONBOARDING_DONE
225245
) { _, _ ->
226-
navBarView.selectedItemId = R.id.navigation_scanner
246+
popBackStack()
247+
onboardingSeen = true
227248
}
228249

229250
// listens to permission result and start tracking if permission is granted
@@ -311,4 +332,8 @@ class MainActivity : AppCompatActivity(), PermissionSupport {
311332
}
312333
}
313334
}
335+
336+
companion object {
337+
private const val ONBOARDING_SEEN = "onboarding_seen"
338+
}
314339
}

kotlin-sample/src/main/res/navigation/mobile_navigation.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
android:name="headerTitle"
2222
android:defaultValue="@string/Sample.Onboarding.message3"
2323
app:argType="reference" />
24+
<argument
25+
android:name="hideBottomNavigation"
26+
android:defaultValue="true"
27+
app:argType="boolean" />
2428
<deepLink
2529
android:id="@+id/deepLink"
2630
app:uri="kotlin-sample://terms" />

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package io.snabble.sdk
22

33
import android.content.Context
44
import android.content.Intent
5-
import android.net.Uri
65
import android.os.Bundle
76
import androidx.annotation.RestrictTo
87
import androidx.appcompat.app.AppCompatActivity
@@ -122,10 +121,7 @@ object SnabbleUiToolkit {
122121
args,
123122
true
124123
)
125-
SHOW_DEEPLINK -> {
126-
val deeplink = Uri.parse(requireNotNull(args?.getString(DEEPLINK)))
127-
context.startActivity(Intent(Intent.ACTION_VIEW).apply { data = deeplink })
128-
}
124+
SHOW_DEEPLINK,
129125
GO_BACK,
130126
DETAILS_SHOP_BUTTON_ACTION,
131127
START_NAVIGATION,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class OnboardingStepView @JvmOverloads constructor(
8080
private fun showDeeplink(context: Context, url: String) =
8181
SnabbleUiToolkit.executeAction(
8282
context,
83-
SnabbleUiToolkit.Event.SHOW_ONBOARDING_DONE,
83+
SnabbleUiToolkit.Event.SHOW_DEEPLINK,
8484
bundleOf(SnabbleUiToolkit.DEEPLINK to url)
8585
)
8686

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class ShopListView @JvmOverloads constructor(
4545
)
4646
youAreHereContainer.isVisible = item.isCheckedIn
4747

48-
val label = if (item.isCheckedIn) item.distanceLabel else null
48+
val label = if (!item.isCheckedIn) item.distanceLabel else null
4949
distance.setTextOrHide(label)
5050

5151
setOnClickListener {

0 commit comments

Comments
 (0)