Skip to content
This repository was archived by the owner on Dec 16, 2023. It is now read-only.

Commit 1d65769

Browse files
authored
Prepare for Playstore (#3)
* Reset version counter * Increase minSdk * Update about * Add libraries * Increase coffee image size * Change cart icon * Fix styling * Add M-Pesa info * Sort previous orders * Fix some lint warnings
1 parent 1529b5e commit 1d65769

48 files changed

Lines changed: 459 additions & 381 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ android {
2626
buildToolsVersion '27.0.3'
2727
defaultConfig {
2828
applicationId "com.marknkamau.justjava"
29-
minSdkVersion 19
29+
minSdkVersion 21
3030
targetSdkVersion 27
31-
versionCode 5
32-
versionName "1.2.2"
31+
versionCode 1
32+
versionName "1.0.0"
3333
multiDexEnabled true
3434
vectorDrawables.useSupportLibrary = true
3535
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -47,15 +47,14 @@ android {
4747

4848
dependencies {
4949
implementation fileTree(include: ['*.jar'], dir: 'libs')
50-
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
50+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
5151

5252
// Crashlytics
5353
implementation('com.crashlytics.sdk.android:crashlytics:2.6.7@aar') {
5454
transitive = true;
5555
}
5656

5757
//Android libraries
58-
implementation 'com.android.support:multidex:1.0.3'
5958
implementation "com.android.support:design:$support_version"
6059
implementation "com.android.support:cardview-v7:$support_version"
6160
implementation "com.android.support:appcompat-v7:$support_version"

app/src/main/java/com/marknkamau/justjava/JustJavaApp.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.marknkamau.justjava
22

3+
import android.app.Application
34
import android.arch.persistence.room.Room
45
import android.preference.PreferenceManager
5-
import android.support.multidex.MultiDexApplication
66
import android.support.v4.content.LocalBroadcastManager
77
import com.crashlytics.android.Crashlytics
88
import com.marknkamau.justjava.data.network.authentication.AuthenticationService
@@ -12,14 +12,13 @@ import com.marknkamau.justjava.data.local.PreferencesRepository
1212
import com.marknkamau.justjava.data.local.PreferencesRepositoryImpl
1313
import com.marknkamau.justjava.data.network.db.DatabaseService
1414
import com.marknkamau.justjava.data.network.db.DatabaseServiceImpl
15-
import com.marknkamau.justjava.data.network.MpesaService
1615
import com.marknkamau.justjava.data.network.NetworkProvider
1716
import com.marknkamau.justjava.utils.NotificationHelper
1817
import com.marknkamau.justjava.utils.mpesa.Mpesa
1918
import io.fabric.sdk.android.Fabric
2019
import timber.log.Timber
2120

22-
class JustJavaApp : MultiDexApplication() {
21+
class JustJavaApp : Application() {
2322
lateinit var preferencesRepo: PreferencesRepository
2423
lateinit var authService: AuthenticationService
2524
lateinit var databaseService: DatabaseService

app/src/main/java/com/marknkamau/justjava/data/local/CartDao.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,4 @@ interface CartDao{
2323

2424
@Update
2525
fun updateItem(item: OrderItem)
26-
27-
@Query("UPDATE sqlite_sequence SET seq = (SELECT MAX(itemName) FROM cart) WHERE name='cart'")
28-
fun resetIndex()
2926
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.marknkamau.justjava.data.models
2+
3+
/**
4+
* Created by MarkNjunge.
5+
* mark.kamau@outlook.com
6+
* https://github.com/MarkNjunge
7+
*/
8+
9+
data class Library(val name: String, val author: String, val license: Int, val link: String) {
10+
companion object {
11+
const val MIT = 1
12+
const val APACHE2 = 2
13+
}
14+
15+
val licenseText: String
16+
get() {
17+
return when(license){
18+
MIT -> "MIT"
19+
APACHE2 -> "Apache-2.0"
20+
else -> "Unknown"
21+
}
22+
}
23+
24+
}

app/src/main/java/com/marknkamau/justjava/ui/about/AboutActivity.kt

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import android.content.Intent
44
import android.net.Uri
55
import android.os.Bundle
66
import android.support.v7.app.AppCompatActivity
7+
import android.support.v7.widget.DividerItemDecoration
8+
import android.support.v7.widget.LinearLayoutManager
79
import android.view.View
8-
import android.widget.Toast
9-
10+
import android.widget.LinearLayout
11+
import com.marknkamau.justjava.BuildConfig
1012
import com.marknkamau.justjava.R
11-
13+
import com.marknkamau.justjava.data.models.Library
1214
import kotlinx.android.synthetic.main.activity_about.*
1315

1416
class AboutActivity : AppCompatActivity(), View.OnClickListener {
@@ -17,29 +19,53 @@ class AboutActivity : AppCompatActivity(), View.OnClickListener {
1719
super.onCreate(savedInstanceState)
1820
setContentView(R.layout.activity_about)
1921

22+
tvVersion.text = "v${BuildConfig.VERSION_NAME}"
23+
24+
val libraries = mutableListOf(
25+
Library("Retrofit", "Square", Library.APACHE2, "http://square.github.io/retrofit/"),
26+
Library("Gson", "Google", Library.APACHE2, "https://github.com/google/gson"),
27+
Library("RxJava", "ReactiveX", Library.APACHE2, "https://github.com/ReactiveX/RxJava"),
28+
Library("RxAndroid", "ReactiveX", Library.APACHE2, "https://github.com/ReactiveX/RxAndroid"),
29+
Library("RxKotlin", "ReactiveX", Library.APACHE2, "https://github.com/ReactiveX/RxKotlin"),
30+
Library("Picasso", "Square", Library.APACHE2, "http://square.github.io/picasso/"),
31+
Library("Timber", "Jake Wharton", Library.APACHE2, "https://github.com/JakeWharton/timber"),
32+
Library("Mockito", "Mockito", Library.MIT, "https://github.com/mockito/mockito"),
33+
Library("Mockito-Kotlin", "Niek Haarman", Library.MIT, "https://github.com/nhaarman/mockito-kotlin")
34+
).sortedBy { it.name }
35+
36+
rvLibraries.layoutManager = LinearLayoutManager(this, LinearLayout.VERTICAL, false)
37+
rvLibraries.addItemDecoration(DividerItemDecoration(this, LinearLayout.VERTICAL))
38+
val librariesAdapter = LibrariesAdapter { library ->
39+
openUrl(library.link)
40+
}
41+
rvLibraries.adapter = librariesAdapter
42+
librariesAdapter.setItems(libraries)
43+
2044
tvSource.setOnClickListener(this)
2145
imgBack.setOnClickListener(this)
2246
imgMail.setOnClickListener(this)
2347
imgLinkedin.setOnClickListener(this)
2448
imgGithub.setOnClickListener(this)
49+
imgWebsite.setOnClickListener(this)
50+
51+
scrollView.post{
52+
Runnable {
53+
scrollView.scrollTo(0, scrollView.top)
54+
}.run()
55+
}
2556
}
2657

2758
override fun onClick(view: View) {
2859
when (view) {
2960
tvSource -> openUrl("https://github.com/MarkNjunge/JustJava-Android")
3061
imgBack -> finish()
3162
imgMail -> sendEmail()
32-
imgLinkedin -> openLinkedInProfile()
63+
imgLinkedin -> openUrl("https://linkedin.com/in/marknjunge")
3364
imgGithub -> openUrl("https://github.com/MarkNjunge")
65+
imgWebsite -> openUrl("https://marknjunge.com")
3466
}
3567
}
3668

37-
private fun openLinkedInProfile() {
38-
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://linkedin.com/in/marknkamau"))
39-
Toast.makeText(this, "linkedin.com/in/marknkamau", Toast.LENGTH_LONG).show()
40-
startActivity(intent)
41-
}
42-
4369
private fun openUrl(url: String) = startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
4470

4571

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.marknkamau.justjava.ui.about
2+
3+
import android.support.v7.widget.RecyclerView
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import com.marknkamau.justjava.R
8+
import com.marknkamau.justjava.data.models.Library
9+
import kotlinx.android.synthetic.main.item_library.view.*
10+
import java.util.*
11+
12+
/**
13+
* Created by MarkNjunge.
14+
* mark.kamau@outlook.com
15+
* https://github.com/MarkNjunge
16+
*/
17+
18+
class LibrariesAdapter(private val onClick: (Library) -> Unit) : RecyclerView.Adapter<LibrariesAdapter.ViewHolder>() {
19+
20+
private var data: List<Library> = ArrayList()
21+
22+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
23+
return ViewHolder(
24+
LayoutInflater.from(parent.context).inflate(R.layout.item_library, parent, false)
25+
)
26+
}
27+
28+
override fun getItemCount() = data.size
29+
30+
override fun onBindViewHolder(holder: ViewHolder, position: Int) = holder.bind(data[position], onClick)
31+
32+
fun setItems(data: List<Library>) {
33+
this.data = data
34+
notifyDataSetChanged()
35+
}
36+
37+
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
38+
fun bind(library: Library, onClick: (Library) -> Unit) {
39+
with(itemView) {
40+
tvName.text = library.name
41+
tvAuthor.text = library.author
42+
tvLicense.text = library.licenseText
43+
44+
rootLayout.setOnClickListener { onClick(library) }
45+
}
46+
}
47+
}
48+
}

app/src/main/java/com/marknkamau/justjava/ui/cart/CartPresenter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ internal class CartPresenter(private val activityView: CartView, private val car
5959
loadItems()
6060
},
6161
onError = {throwable ->
62-
Timber.e(throwable.message)
62+
Timber.e(throwable)
6363
activityView.displayMessage(throwable.message)
6464
}
6565
)
@@ -75,7 +75,7 @@ internal class CartPresenter(private val activityView: CartView, private val car
7575
loadItems()
7676
},
7777
onError = {throwable ->
78-
Timber.e(throwable.message)
78+
Timber.e(throwable)
7979
activityView.displayMessage(throwable.message)
8080
}
8181
)

app/src/main/java/com/marknkamau/justjava/ui/cart/EditCartDialog.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,16 @@ class EditCartDialog : DialogFragment(), View.OnClickListener {
5353

5454
item = args.getParcelable(CART_ITEM)
5555

56-
tvDrinkName = view.findViewById<TextView>(R.id.tvDrinkName) as TextView
57-
tvQuantity = view.findViewById<TextView>(R.id.tvQuantity) as TextView
58-
tvChocolate = view.findViewById<TextView>(R.id.tvChocolate) as TextView
59-
tvMarshmallows = view.findViewById<TextView>(R.id.tvMarshmallows) as TextView
60-
tvTotal = view.findViewById<TextView>(R.id.tv_total) as TextView
61-
tvCinnamon = view.findViewById<TextView>(R.id.tvToppings) as TextView
62-
imgMinusQty = view.findViewById<ImageView>(R.id.imgMinusQty) as ImageView
63-
imgDelete = view.findViewById<ImageView>(R.id.img_delete) as ImageView
64-
imgAddQty = view.findViewById<ImageView>(R.id.imgAddQty) as ImageView
65-
imgSave = view.findViewById<ImageView>(R.id.img_save) as ImageView
56+
tvDrinkName = view.findViewById(R.id.tvDrinkName) as TextView
57+
tvQuantity = view.findViewById(R.id.tvQuantity) as TextView
58+
tvChocolate = view.findViewById(R.id.tvChocolate) as TextView
59+
tvMarshmallows = view.findViewById(R.id.tvMarshmallows) as TextView
60+
tvTotal = view.findViewById(R.id.tv_total) as TextView
61+
tvCinnamon = view.findViewById(R.id.tvToppings) as TextView
62+
imgMinusQty = view.findViewById(R.id.imgMinusQty) as ImageView
63+
imgDelete = view.findViewById(R.id.img_delete) as ImageView
64+
imgAddQty = view.findViewById(R.id.imgAddQty) as ImageView
65+
imgSave = view.findViewById(R.id.img_save) as ImageView
6666

6767
tvCinnamon.setPadding(PADDING, PADDING, PADDING, PADDING)
6868
tvChocolate.setPadding(PADDING, PADDING, PADDING, PADDING)

app/src/main/java/com/marknkamau/justjava/ui/checkout/CheckoutActivity.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
package com.marknkamau.justjava.ui.checkout
22

3-
import android.app.PendingIntent
43
import android.content.Context
54
import android.content.Intent
65
import android.net.ConnectivityManager
76
import android.os.Bundle
87
import android.support.v4.app.TaskStackBuilder
9-
import android.support.v7.app.AlertDialog
108
import android.text.TextUtils
119
import android.view.View
1210
import android.widget.RadioButton
1311
import android.widget.Toast
14-
import com.marknkamau.justjava.BuildConfig
15-
1612
import com.marknkamau.justjava.JustJavaApp
1713
import com.marknkamau.justjava.R
1814
import com.marknkamau.justjava.data.models.Order
@@ -21,7 +17,6 @@ import com.marknkamau.justjava.ui.BaseActivity
2117
import com.marknkamau.justjava.ui.login.LogInActivity
2218
import com.marknkamau.justjava.ui.main.MainActivity
2319
import com.marknkamau.justjava.ui.previousOrder.PreviousOrderActivity
24-
2520
import com.marknkamau.justjava.utils.trimmedText
2621
import kotlinx.android.synthetic.main.activity_checkout.*
2722
import kotlinx.android.synthetic.main.content_appbar.*
@@ -48,7 +43,6 @@ class CheckoutActivity : BaseActivity(), CheckoutView {
4843
val authService = (application as JustJavaApp).authService
4944
val preferencesRepo = (application as JustJavaApp).preferencesRepo
5045
val database = (application as JustJavaApp).databaseService
51-
val mpesa = (application as JustJavaApp).mpesa
5246
val cart = (application as JustJavaApp).cartDatabase.cartDao()
5347

5448
presenter = CheckoutPresenter(this, authService, preferencesRepo, database, cart)

app/src/main/java/com/marknkamau/justjava/ui/login/LogInActivity.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ class LogInActivity : AppCompatActivity(), LogInView, View.OnClickListener {
5858
tvForgotPass -> resetUserPassword()
5959
tvSignup -> {
6060
startActivity(Intent(this@LogInActivity, SignUpActivity::class.java))
61-
finish()
6261
}
6362
}
6463
}

0 commit comments

Comments
 (0)