Skip to content

Commit

Permalink
Feature/remove fabric (#74)
Browse files Browse the repository at this point in the history
* #Fabric: WIP

* #Joyce - initial version

* #Joyce: Clean up History

* #Joyce: Fixing memory leak in History

* #Joyce: Clean up

* #Joyce: Cleanup

* #Joyce: Remove Jacoco from Travis
  • Loading branch information
Entreco authored Jun 23, 2020
1 parent ed2b5c8 commit 4241345
Show file tree
Hide file tree
Showing 50 changed files with 265 additions and 319 deletions.
2 changes: 0 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ before_install:
- ./gradlew dependencies || true
script:
- ./gradlew clean :app:bundle -PdisablePreDex --stacktrace
after_success:
- ./gradlew jacocoFullReport coveralls
before_deploy:
- APP_NAME=$(./gradlew -q showBundleName | tail -n 1)
- cp $TRAVIS_BUILD_DIR/android/DartsScorecard/scripts/dsc_keystore $HOME
Expand Down
11 changes: 2 additions & 9 deletions android/DartsScorecard/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
apply from: '../scripts/coverage.gradle'
apply plugin: 'com.google.firebase.crashlytics'
apply from: '../scripts/android_common.gradle'
apply from: '../scripts/versioning.gradle'

Expand All @@ -15,12 +14,6 @@ android {
resValue "string", "version", "${config.versionName}"

ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" }

javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.incremental":"true"]
}
}
}
buildTypes {
debug {
Expand Down Expand Up @@ -69,7 +62,7 @@ dependencies {
implementation "com.airbnb.android:lottie:$lottieVersion"
implementation "com.google.code.gson:gson:$gson"

implementation "com.crashlytics.sdk.android:crashlytics:$crash"
implementation "com.google.firebase:firebase-crashlytics:$fbCrash"

// Leaks
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanary"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ import javax.inject.Inject
* Created by entreco on 20/02/2018.
*/
class DialogHelper @Inject constructor(
private val builder: AlertDialog.Builder, @ActivityScope private val ratingPrefRepository: RatingPrefRepository) {
private val builder: AlertDialog.Builder,
@ActivityScope private val ratingPrefRepository: RatingPrefRepository
) {

fun revanche(previousIndex: Int, teams: Array<Team>, select: (Int) -> Unit) {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package nl.entreco.dartsscorecard.beta

import android.view.View
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.bottomsheet.BottomSheetBehavior
import android.view.View
import kotlinx.android.synthetic.main.include_beta_detail.view.voteFab
import nl.entreco.dartsscorecard.databinding.ActivityBetaBinding
import kotlin.math.abs
Expand Down Expand Up @@ -64,7 +64,12 @@ class BetaAnimator(binding: ActivityBetaBinding) {
return null
}

internal class BetaAnimatorHandler(private val appBar: AppBarLayout, private val toolbar: View, private val sheet: View, private val fab: View) {
internal class BetaAnimatorHandler(
private val appBar: AppBarLayout,
private val toolbar: View,
private val sheet: View,
private val fab: View
) {

private val fraction: Float = 0.85F
private val rotationFactor: Int = 5
Expand All @@ -84,9 +89,7 @@ class BetaAnimator(binding: ActivityBetaBinding) {

fun onStateChanged(newState: Int) {
when (newState) {
BottomSheetBehavior.STATE_COLLAPSED -> {
appBar.isEnabled = true
}
BottomSheetBehavior.STATE_COLLAPSED -> appBar.isEnabled = true
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ package nl.entreco.dartsscorecard.beta
import androidx.recyclerview.widget.DiffUtil
import nl.entreco.domain.beta.Feature

class BetaDiffCalculator(private val old: List<Feature>, private val new: List<Feature>) : DiffUtil.Callback() {
class BetaDiffCalculator(
private val old: List<Feature>,
private val new: List<Feature>
) : DiffUtil.Callback() {

override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
return old[oldItemPosition].ref == new[newItemPosition].ref
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ import javax.inject.Inject
/**
* Created by entreco on 30/01/2018.
*/
class BetaViewModel @Inject constructor(private val subscribeToFeaturesUsecase: SubscribeToFeaturesUsecase) : BaseViewModel() {
class BetaViewModel @Inject constructor(
private val subscribeToFeaturesUsecase: SubscribeToFeaturesUsecase
) : BaseViewModel() {

private val features: MutableLiveData<List<Feature>> = MutableLiveData()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class VoteViewModel @Inject constructor(private val submitVoteUsecase: SubmitVot
submitVote(amount) {}
}

fun submitVote(amount: Int, done:()->Unit) {
private fun submitVote(amount: Int, done:()->Unit) {
feature.get()?.let { betaModel ->
val currentFeature = betaModel.feature
if (allowedToVote(betaModel, currentFeature)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package nl.entreco.dartsscorecard.di.hiscore

import dagger.Subcomponent
import nl.entreco.dartsscorecard.hiscores.HiScoreAdapter
import nl.entreco.dartsscorecard.hiscores.HiScoreNavigator
import nl.entreco.dartsscorecard.hiscores.HiScorePager
import nl.entreco.dartsscorecard.hiscores.HiScoreViewModel

@HiScoreScope
@Subcomponent(modules = [HiscoreModule::class])
interface HiscoreComponent {
fun viewModel(): HiScoreViewModel
fun navigator(): HiScoreNavigator
fun adapter(): HiScoreAdapter
fun pager(): HiScorePager
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
package nl.entreco.dartsscorecard.di.hiscore

import androidx.fragment.app.FragmentActivity
import dagger.Module
import dagger.Provides
import nl.entreco.dartsscorecard.hiscores.HiScoreActivity
import nl.entreco.data.db.DscDatabase
import nl.entreco.data.db.hiscores.HiScoreMapper
import nl.entreco.data.db.hiscores.LocalHiScoresRepository
import nl.entreco.domain.repository.HiScoreRepository

@Module
class HiscoreModule {
class HiscoreModule(
private val activity: HiScoreActivity
) {

@Provides
@HiScoreScope
fun provideActivity(): FragmentActivity {
return activity
}

@Provides
@HiScoreScope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class WtfAdapter @Inject constructor(private val bg: Background, private val fg:

override fun search(text: CharSequence) {
if (text.isNotEmpty() && text.length >= 3) {
searchText = text.toString().toLowerCase()
searchText = text.toString().toLowerCase(Locale.getDefault())
onChanged(allItems.values.toList())
} else {
clearSearch()
Expand Down Expand Up @@ -101,13 +101,13 @@ class WtfAdapter @Inject constructor(private val bg: Background, private val fg:

private fun doFilter(item: WtfItem, searchText: String): Boolean {
if(searchText.isBlank()) return true
return item.title.toLowerCase().contains(searchText) || item.description.toLowerCase().contains(searchText)
return item.title.toLowerCase(Locale.getDefault()).contains(searchText) || item.description.toLowerCase(Locale.getDefault()).contains(searchText)
}

private fun score(item: WtfItem, searchText: String): Int {
if(searchText.isBlank()) return 0
return if(item.title.toLowerCase().contains(searchText)) 10 else 0 +
if(item.description.toLowerCase().contains(searchText)) 5 else 0
return if(item.title.toLowerCase(Locale.getDefault()).contains(searchText)) 10 else 0 +
if(item.description.toLowerCase(Locale.getDefault()).contains(searchText)) 5 else 0
}

private fun updateItems(features: List<WtfItem>, diff: DiffUtil.DiffResult) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,18 @@ import nl.entreco.dartsscorecard.databinding.ActivityHiscoreBinding
import nl.entreco.dartsscorecard.di.hiscore.HiscoreComponent
import nl.entreco.dartsscorecard.di.hiscore.HiscoreModule

class HiScoreActivity : ViewModelActivity() {
class HiScoreActivity : ViewModelActivity(), HiscoreComponentProvider {

private lateinit var binding: ActivityHiscoreBinding
private val component: HiscoreComponent by componentProvider { it.plus(HiscoreModule()) }
private val component: HiscoreComponent by componentProvider { it.plus(HiscoreModule(this)) }
override fun provide() = component

private val viewModel: HiScoreViewModel by viewModelProvider { component.viewModel() }
private val pageAdapter: HiScorePager by lazy { component.pager() }
private val animator: PagerAnimator by lazy {
PagerAnimator(binding.hiscorePager, binding.hiscorePrev, binding.hiscoreNext)
}
private val navigator by lazy { component.navigator() }

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -45,6 +48,8 @@ class HiScoreActivity : ViewModelActivity() {
pageAdapter.show(hiscores[0].hiScore)
}
})

viewModel.events().observe(this, navigator)
}

private fun toolbar(binding: ActivityHiscoreBinding): Toolbar {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import nl.entreco.dartsscorecard.R
import nl.entreco.dartsscorecard.databinding.HiscoreListItemBinding
import javax.inject.Inject

class HiScoreAdapter(private val navigator: HiScoreNavigator): ListAdapter<HiScoreItemModel, HiScoreViewHolder>(HiScoreDif()) {
class HiScoreAdapter @Inject constructor(): ListAdapter<HiScoreItemModel, HiScoreViewHolder>(HiScoreDif()) {

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HiScoreViewHolder {
val binding = DataBindingUtil.inflate<HiscoreListItemBinding>(
Expand All @@ -18,27 +19,29 @@ class HiScoreAdapter(private val navigator: HiScoreNavigator): ListAdapter<HiSco
}

override fun onBindViewHolder(holder: HiScoreViewHolder, position: Int) {
holder.bind(getItem(position), navigator)
holder.bind(getItem(position))
}
}

class HiScoreDif : DiffUtil.ItemCallback<HiScoreItemModel>() {
override fun areItemsTheSame(oldItem: HiScoreItemModel,
newItem: HiScoreItemModel): Boolean {
return oldItem == newItem
}

override fun areContentsTheSame(oldItem: HiScoreItemModel,
newItem: HiScoreItemModel): Boolean {
return oldItem == newItem
}
override fun areItemsTheSame(
oldItem: HiScoreItemModel,
newItem: HiScoreItemModel
) = oldItem.id == newItem.id

override fun areContentsTheSame(
oldItem: HiScoreItemModel,
newItem: HiScoreItemModel
) = oldItem == newItem
}

class HiScoreViewHolder(private val binding: HiscoreListItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: HiScoreItemModel, navigator: HiScoreNavigator) {
class HiScoreViewHolder(
private val binding: HiscoreListItemBinding
) : RecyclerView.ViewHolder(binding.root) {

fun bind(item: HiScoreItemModel) {
binding.item = item
binding.navigator = navigator
binding.executePendingBindings()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ object HiScoreBinding {
@JvmStatic
@BindingAdapter("medal")
fun showMedalForPosition(view: ImageView, position: Int) {
val (width, medal) = when (position) {
val (_, medal) = when (position) {
1 -> Pair(2, R.drawable.medal_1)
2 -> Pair(2, R.drawable.medal_2)
3 -> Pair(2, R.drawable.medal_3)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import nl.entreco.dartsscorecard.R
import nl.entreco.dartsscorecard.databinding.FragmentHiscoreBinding
import nl.entreco.dartsscorecard.hiscores.ParentInjector.parent
import nl.entreco.dartsscorecard.hiscores.ParentInjector.parentViewModel

class HiScoreFragment : Fragment() {

Expand All @@ -27,25 +28,25 @@ class HiScoreFragment : Fragment() {
}
}

private val viewModel by lazy {
ViewModelProvider(activity!!).get(HiScoreViewModel::class.java)
}
private val component by parent()
private val viewModel by parentViewModel()

private val navigator by lazy { HiScoreNavigator(activity!!) }
private val adapter by lazy { HiScoreAdapter(navigator) }
private val adapter by lazy { component.adapter() }

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val binding = DataBindingUtil.inflate<FragmentHiscoreBinding>(inflater,
R.layout.fragment_hiscore, container, false)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding = DataBindingUtil.inflate<FragmentHiscoreBinding>(inflater, R.layout.fragment_hiscore, container, false)
initRecyclerView(binding.hiscoreRecycler)
handlePagerPosition()
return binding.root
}

private fun handlePagerPosition() {
val position = arguments?.getInt(EXTRA_POS) ?: 0
viewModel.dataAtPosition(position).observe(this, Observer {
viewModel.dataAtPosition(position).observe(viewLifecycleOwner, Observer {
adapter.submitList(it)
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@ package nl.entreco.dartsscorecard.hiscores
import androidx.databinding.ObservableBoolean
import androidx.databinding.ObservableField

data class HiScoreItemModel(val id: Long, val name: String, val hiScore: String, val pos: Int) {
data class HiScoreItemModel(
val id: Long,
val name: String,
val hiScore: String,
val pos: Int,
val onClick: (HiScoreItemModel)->Unit
) {
val score = ObservableField(hiScore)
val position = ObservableField("$pos")
val hasMedal = ObservableBoolean(pos <= 3)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
package nl.entreco.dartsscorecard.hiscores

import android.app.Activity
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Observer
import nl.entreco.dartsscorecard.di.hiscore.HiScoreScope
import nl.entreco.dartsscorecard.profile.view.ProfileActivity
import javax.inject.Inject

class HiScoreNavigator(private val activity: Activity) {
class HiScoreNavigator @Inject constructor(
@HiScoreScope private val activity: FragmentActivity
) : Observer<HiScoreItemModel> {

fun onProfileSelected(item: HiScoreItemModel) {
val id = longArrayOf(item.id)
ProfileActivity.launch(activity, id)
override fun onChanged(item: HiScoreItemModel?) {
item?.let {
val id = longArrayOf(item.id)
ProfileActivity.launch(activity, id)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import javax.inject.Inject
class HiScorePager @Inject constructor(
@ActivityScope private val context: Context,
@ActivityScope fm: FragmentManager
) : FragmentPagerAdapter(fm) {
) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {

private val items = mutableListOf<HiScoreItem>()

Expand Down
Loading

0 comments on commit 4241345

Please sign in to comment.