Skip to content

Commit

Permalink
Setup privacy policy text to use markdown and custom tab for displayi…
Browse files Browse the repository at this point in the history
…ng webview
  • Loading branch information
andraantariksa committed Apr 21, 2022
1 parent a7b600f commit 89e6bbd
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 41 deletions.
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

buildConfigField "String", "MIDTRANS_API", "\"SB-Mid-client-FGDd5FsG_5p0EiWB\""
buildConfigField "String", "MAPS_API_KEY", "\"AIzaSyCbCI0afslh5sjouwS4ah3xo3JUDXS2bUI\""
}

buildTypes {
Expand Down Expand Up @@ -112,6 +113,8 @@ dependencies {
// Datastore
implementation "androidx.datastore:datastore-preferences:1.0.0"

implementation "io.noties.markwon:core:4.6.2"

implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
Expand Down
35 changes: 35 additions & 0 deletions app/src/main/kotlin/id/shaderboi/koffie/di/ActivityModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package id.shaderboi.koffie.di

import android.content.Context
import android.net.Uri
import androidx.browser.customtabs.CustomTabsIntent
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ActivityContext
import id.shaderboi.koffie.R
import io.noties.markwon.AbstractMarkwonPlugin
import io.noties.markwon.Markwon
import io.noties.markwon.MarkwonConfiguration
import io.noties.markwon.core.CorePlugin

@Module
@InstallIn(ActivityComponent::class)
object ActivityModule {
@Provides
fun provideMarkwon(@ActivityContext context: Context): Markwon = Markwon.builder(context)
.usePlugin(CorePlugin.create())
.usePlugin(object : AbstractMarkwonPlugin() {
override fun configureConfiguration(builder: MarkwonConfiguration.Builder) {
super.configureConfiguration(builder)
builder.linkResolver { view, link ->
val customTabIntent = CustomTabsIntent.Builder()
.setToolbarColor(context.getColor(R.color.primary))
.build()
customTabIntent.launchUrl(context, Uri.parse(link))
}
}
})
.build()
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,16 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import id.shaderboi.koffie.R
import id.shaderboi.koffie.databinding.FragmentSigninBinding
import id.shaderboi.koffie.ui.auth.signin.view_model.SignInEvent
import id.shaderboi.koffie.ui.auth.signin.view_model.SignInUIEvent
import id.shaderboi.koffie.ui.auth.signin.view_model.SignInViewModel
import id.shaderboi.koffie.util.StringDisplay
import io.noties.markwon.Markwon
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import javax.inject.Inject

@AndroidEntryPoint
class SignInFragment : Fragment() {
Expand All @@ -27,6 +30,9 @@ class SignInFragment : Fragment() {

private val signInViewModel by viewModels<SignInViewModel>()

@Inject
lateinit var markwon: Markwon

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand Down Expand Up @@ -75,10 +81,13 @@ class SignInFragment : Fragment() {
}

private fun setupView() {
binding.buttonSigninSignup.setOnClickListener {
val phoneNumberText = binding.editTextPhoneNumber.text.toString()
val phoneNumber = "+62${phoneNumberText}"
signInViewModel.onEvent(SignInEvent.SignIn(phoneNumber, requireActivity()))
binding.apply {
buttonSigninSignup.setOnClickListener {
val phoneNumberText = binding.editTextPhoneNumber.text.toString()
val phoneNumber = "+62${phoneNumberText}"
signInViewModel.onEvent(SignInEvent.SignIn(phoneNumber, requireActivity()))
}
markwon.setMarkdown(textViewPrivacyPolicy, requireContext().getString(R.string.signin_signup_agreement))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint
import id.shaderboi.koffie.R
import id.shaderboi.koffie.databinding.FragmentVerifyBinding
import id.shaderboi.koffie.ui.auth.verify.view_model.VerifyEvent
import id.shaderboi.koffie.ui.auth.verify.view_model.VerifyUIEvent
import id.shaderboi.koffie.ui.auth.verify.view_model.VerifyViewModel
import id.shaderboi.koffie.ui.main.MainActivity
import id.shaderboi.koffie.util.StringDisplay
import io.noties.markwon.Markwon
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import javax.inject.Inject

@AndroidEntryPoint
class VerifyFragment : Fragment() {
Expand All @@ -32,6 +35,9 @@ class VerifyFragment : Fragment() {
private val verifyViewModel by viewModels<VerifyViewModel>()
val args by navArgs<VerifyFragmentArgs>()

@Inject
lateinit var markwon: Markwon

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand Down Expand Up @@ -90,50 +96,54 @@ class VerifyFragment : Fragment() {
}

private fun setupView() {
binding.editTextVerificationCode1.requestFocus()
binding.editTextVerificationCode1.doOnTextChanged { text, start, before, count ->
if (count > 0) {
binding.editTextVerificationCode2.requestFocus()
binding.apply {
editTextVerificationCode1.requestFocus()
editTextVerificationCode1.doOnTextChanged { text, start, before, count ->
if (count > 0) {
editTextVerificationCode2.requestFocus()
}
}
}
binding.editTextVerificationCode2.doOnTextChanged { text, start, before, count ->
if (count == 0) {
binding.editTextVerificationCode1.requestFocus()
} else {
binding.editTextVerificationCode3.requestFocus()
editTextVerificationCode2.doOnTextChanged { text, start, before, count ->
if (count == 0) {
editTextVerificationCode1.requestFocus()
} else {
editTextVerificationCode3.requestFocus()
}
}
}
binding.editTextVerificationCode3.doOnTextChanged { text, start, before, count ->
if (count == 0) {
binding.editTextVerificationCode2.requestFocus()
} else {
binding.editTextVerificationCode4.requestFocus()
editTextVerificationCode3.doOnTextChanged { text, start, before, count ->
if (count == 0) {
editTextVerificationCode2.requestFocus()
} else {
editTextVerificationCode4.requestFocus()
}
}
}
binding.editTextVerificationCode4.doOnTextChanged { text, start, before, count ->
if (count == 0) {
binding.editTextVerificationCode3.requestFocus()
} else {
binding.editTextVerificationCode5.requestFocus()
editTextVerificationCode4.doOnTextChanged { text, start, before, count ->
if (count == 0) {
editTextVerificationCode3.requestFocus()
} else {
editTextVerificationCode5.requestFocus()
}
}
}
binding.editTextVerificationCode5.doOnTextChanged { text, start, before, count ->
if (count == 0) {
binding.editTextVerificationCode4.requestFocus()
} else {
binding.editTextVerificationCode6.requestFocus()
editTextVerificationCode5.doOnTextChanged { text, start, before, count ->
if (count == 0) {
editTextVerificationCode4.requestFocus()
} else {
editTextVerificationCode6.requestFocus()
}
}
}
binding.editTextVerificationCode6.doOnTextChanged { text, start, before, count ->
if (count == 0) {
binding.editTextVerificationCode5.requestFocus()
} else {
editTextVerificationCode6.doOnTextChanged { text, start, before, count ->
if (count == 0) {
editTextVerificationCode5.requestFocus()
} else {
verify()
}
}

buttonVerify.setOnClickListener {
verify()
}
}

binding.buttonVerify.setOnClickListener {
verify()
markwon.setMarkdown(textViewPrivacyPolicy, requireContext().getString(R.string.signin_signup_agreement))
}
}

Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<string name="misc">Misc</string>
<string name="phone_number">Phone number</string>
<string name="signin_signup">Signin / Signup</string>
<string name="signin_signup_agreement">By signin or signup to our app, you are giving your consent and agree to our Term of Service and Privacy Policy</string>
<string name="signin_signup_agreement">By signin or signup to our app, you are giving your consent and agree to our [Term of Service](https://shaderboi.id) and Privacy Policy</string>
<string name="verify">Verify</string>
<string name="dummy_phone_number">812XXXXXXXX</string>
<string name="sign_out">Sign Out</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/themes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<style name="Theme.Koffie" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/onPrimary</item>
<!-- Secondary brand color. -->
Expand Down

0 comments on commit 89e6bbd

Please sign in to comment.