Skip to content

Commit

Permalink
Small reafactor to use the FrameworkLocalStorage
Browse files Browse the repository at this point in the history
  • Loading branch information
JoaquimLey committed Feb 15, 2019
1 parent c2463e9 commit 39fb0f0
Show file tree
Hide file tree
Showing 10 changed files with 47 additions and 18 deletions.
1 change: 1 addition & 0 deletions transport-eta-android/data-sharedpreferences/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ android {

buildTypes {
debug {
debuggable true
testCoverageEnabled true
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,22 @@ class TransportDataStoreImpl @Inject constructor(private val frameworkLocalStora
: TransportDataStore {

override fun markAsFavorite(transportEntity: TransportEntity): Completable {
return Completable.error(NotImplementedError("Won't be ready for v1.0"))
// return Completable.error(NotImplementedError("Won't be ready for v1.0"))
return saveTransport(transportEntity)
}

override fun removeAsFavorite(transportEntity: TransportEntity): Completable {
return Completable.error(NotImplementedError("Won't be ready for v1.0"))
// return Completable.error(NotImplementedError("Won't be ready for v1.0"))
return deleteTransport(transportEntity.id)
}

override fun getAllFavorites(): Flowable<List<TransportEntity>> {
return frameworkLocalStorage.getAll().toFlowable()
}

override fun clearAllFavorites(): Completable {
return Completable.error(NotImplementedError("Won't be ready for v1.0"))
// return Completable.error(NotImplementedError("Won't be ready for v1.0"))
return frameworkLocalStorage.clearAll()
}

override fun saveTransport(transportEntity: TransportEntity): Completable {
Expand All @@ -41,7 +44,7 @@ class TransportDataStoreImpl @Inject constructor(private val frameworkLocalStora
}

override fun getAll(): Flowable<List<TransportEntity>> {
return frameworkLocalStorage.getAll().toFlowable()
return getAllFavorites()
}

// TODO Should these be in the [SmSController] instead? [RequestEtaUseCase]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ class PresentationTransportMapper {
}

fun toModel(from: TransportView): Transport {
return Transport(from.id, "", from.code, from.latestEta, from.isFavorite, from.type.name.toLowerCase())
return Transport(from.id ?: "", "", from.code, from.latestEta, from.isFavorite, from.type.name.toLowerCase())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import kotlinx.android.parcel.Parcelize
*/

@Parcelize
data class TransportView(val id: String, val code: Int = -1, val latestEta: String = "",
data class TransportView(val id: String? = null, val code: Int = -1, val latestEta: String = "",
var isFavorite: Boolean, val type: Type = Type.BUS) : Parcelable {
enum class Type {
BUS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ internal class FavoritesViewModelImpl(getFavoritesUseCase: GetFavoritesUseCase,

private fun fetchFavorites() {
compositeDisposable.add(
getFavoritesUseCase.execute(null)
getFavoritesUseCase.execute()
.doOnSubscribe { favouritesLiveData.loading() }
.subscribe({
favouritesLiveData.success(mapper.toView(it))
Expand Down
2 changes: 2 additions & 0 deletions transport-eta-android/sms/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@ android {

buildTypes {
debug {
debuggable true
testCoverageEnabled true
}


release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import com.joaquimley.transporteta.presentation.model.TransportView
import com.joaquimley.transporteta.ui.util.extensions.load
import kotlinx.android.synthetic.main.item_favorite.view.*

class FavoritesAdapter(private val clickListener: (TransportView) -> Unit)
class FavoritesAdapter(val listener: Listener)
: ListAdapter<TransportView, androidx.recyclerview.widget.RecyclerView.ViewHolder>(FavoriteViewDiffCallback()) {

override fun getItemViewType(position: Int): Int {
Expand Down Expand Up @@ -62,8 +62,13 @@ class FavoritesAdapter(private val clickListener: (TransportView) -> Unit)
// itemView.eta_button.alpha = if (it) 1.0f else 0.3f
// }

itemView.setOnLongClickListener {
listener.onLongClick(transportView)
true
}

itemView.eta_button.setOnClickListener {
clickListener(transportView)
listener.onRequestSmsButtonTapped(transportView)
}
}
}
Expand All @@ -82,4 +87,9 @@ class FavoritesAdapter(private val clickListener: (TransportView) -> Unit)
return oldItem == newItem
}
}

interface Listener{
fun onRequestSmsButtonTapped(transportView: TransportView)
fun onLongClick(transportView: TransportView)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class FavoritesFragment : Fragment() {
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?):
// TODO Inspiration for UI https://www.behance.net/gallery/69860023/Bust-app
// TODO Inspiration for UI https://www.behance.net/gallery/69860023/Bust-app
View = inflater.inflate(R.layout.fragment_favourites, container, false)

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
Expand All @@ -70,8 +70,8 @@ class FavoritesFragment : Fragment() {

private fun observeFavourites() {
viewModel.getFavorites().observe(this,
Observer { transportList ->
transportList?.let { handleDataState(it.status, it.data, it.message) }
Observer { data ->
data?.let { handleDataState(it.status, it.data, it.message) }
})
}

Expand Down Expand Up @@ -119,8 +119,8 @@ class FavoritesFragment : Fragment() {
message_view?.setVisible(true)
} else {
message?.let {
com.google.android.material.snackbar.Snackbar.make(favorites_fragment_container, it, LENGTH_LONG)
.setAction(R.string.action_retry) { _ -> viewModel.onRefresh() }
Snackbar.make(favorites_fragment_container, it, LENGTH_LONG)
.setAction(R.string.action_retry) { viewModel.onRefresh() }
.show()
}
}
Expand All @@ -137,11 +137,20 @@ class FavoritesFragment : Fragment() {
private fun setupRecyclerView() {
recycler_view?.setHasFixedSize(true)
recycler_view?.layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context)
adapter = FavoritesAdapter { viewModel.onEtaRequested(it) }
adapter = FavoritesAdapter(object : FavoritesAdapter.Listener {
override fun onRequestSmsButtonTapped(transportView: TransportView) {
viewModel.onEtaRequested(transportView)
}

override fun onLongClick(transportView: TransportView) {
viewModel.onMarkAsFavorite(transportView, false)
}
})

recycler_view?.adapter = adapter
recycler_view?.addBottomPaddingDecoration()
recycler_view.addOnScrollListener(object : androidx.recyclerview.widget.RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: androidx.recyclerview.widget.RecyclerView, newState: Int) {
recycler_view.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
when (newState) {
RecyclerView.SCROLL_STATE_DRAGGING -> fab.hide()
Expand Down Expand Up @@ -178,6 +187,9 @@ class FavoritesFragment : Fragment() {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { _ ->
if (TextUtils.isEmpty(busStopCodeEditText?.text)) {
busStopCodeEditText?.error = getString(R.string.error_create_favorite_code_required)
} else {
viewModel.onMarkAsFavorite(TransportView(code = Integer.valueOf(busStopCodeEditText?.text.toString()), isFavorite = true), true)
dialog.dismiss()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_view"
style="@style/CardItemListStyle"
android:background="?attr/selectableItemBackground"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<dimen name="text_margin">16dp</dimen>
<dimen name="app_bar_height">220dp</dimen>
<dimen name="list_bottom_padding_fab">80dp</dimen>
<dimen name="progress_bar_dimensions">220dp</dimen>
<dimen name="progress_bar_dimensions">80dp</dimen>
<dimen name="default_dialog_corners">8dp</dimen>

<!-- Bottom Navigation View -->
Expand Down

0 comments on commit 39fb0f0

Please sign in to comment.