Skip to content

Commit

Permalink
Merge pull request #126 from pravinyo/fix_blank_time_bug
Browse files Browse the repository at this point in the history
multiple bug fixes
  • Loading branch information
pravinyo committed May 26, 2020
2 parents 4efbe89 + df98516 commit bf31e9f
Show file tree
Hide file tree
Showing 13 changed files with 155 additions and 79 deletions.
8 changes: 8 additions & 0 deletions common/src/main/res/drawable/ic_clock_outline.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<!-- drawable/clock_time_four_outline.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#FFFFFF" android:pathData="M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M17 13.9L16.3 15.2L11 12.3V7H12.5V11.4L17 13.9Z" />
</vector>
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package com.allsoftdroid.audiobook.feature.feature_audiobook_enhance_details.dat

data class BookDetails(
var webDocument: WebDocument? = null,
val runtime:String,
val archiveUrl : String,
val gutenbergUrl:String,
val description:String,
val genres:String,
val language:String,
val runtime:String="",
val archiveUrl : String="",
val gutenbergUrl:String="",
val description:String="",
val genres:String="",
val language:String="",
val chapters : List<Chapter>
)
Original file line number Diff line number Diff line change
Expand Up @@ -30,55 +30,62 @@ class SaveMetadataInDatabase(metadataDao: MetadataDao) : SaveInDatabase<Metadata
return this
}

override suspend fun execute(){
override suspend fun execute():Int{

//safe check performed
val result = mData

val metadata = DatabaseMetadataEntity(
identifier = result.metadata.identifier,
creator = result.metadata.creator,
date = result.metadata.date,
description = result.metadata.description,
licenseUrl = result.metadata.licenseurl,
tag = result.metadata.subject,
title = result.metadata.title,
release_year = result.metadata.publicdate,
runtime = result.metadata.runtime?:"NA"
)

val trackList = ArrayList<DatabaseTrackEntity>()

//scan the list and build the new track list to be inserted in the database
val tracks = result.files.filter {
it.format.toLowerCase(Locale.getDefault()).contains("mp3")
try{
val metadata = DatabaseMetadataEntity(
identifier = result.metadata.identifier,
creator = result.metadata.creator,
date = result.metadata.date,
description = result.metadata.description,
licenseUrl = result.metadata.licenseurl,
tag = result.metadata.subject,
title = result.metadata.title,
release_year = result.metadata.publicdate,
runtime = result.metadata.runtime?:"NA"
)

val trackList = ArrayList<DatabaseTrackEntity>()

//scan the list and build the new track list to be inserted in the database
val tracks = result.files.filter {
it.format.toLowerCase(Locale.getDefault()).contains("mp3")
}

for(track in tracks){
trackList.add(track.toDatabaseModel(metadata.identifier))
}

val album = DatabaseAlbumEntity(
identifier = result.metadata.identifier,
albumName = tracks[0].album,
creator = metadata.creator
)


mDao.insertMetadata(metadata)
Timber.d("Metadata loaded")
mDao.insertAlbum(album)
Timber.d("Album details loaded")
mDao.insertAllTracks(trackList)
Timber.d("#${trackList.size} tracks loaded in the DB")

val list = mDao.getTrackDetails(metadata_id = metadata.identifier).value

list?.forEach {
Timber.d(it.trackAlbum_id)
Timber.d(it.trackTitle)
}

list?: emptyList()
}catch (e:Exception){
e.printStackTrace()
return -1
}

for(track in tracks){
trackList.add(track.toDatabaseModel(metadata.identifier))
}

val album = DatabaseAlbumEntity(
identifier = result.metadata.identifier,
albumName = tracks[0].album,
creator = metadata.creator
)


mDao.insertMetadata(metadata)
Timber.d("Metadata loaded")
mDao.insertAlbum(album)
Timber.d("Album details loaded")
mDao.insertAllTracks(trackList)
Timber.d("#${trackList.size} tracks loaded in the DB")

val list = mDao.getTrackDetails(metadata_id = metadata.identifier).value

list?.forEach {
Timber.d(it.trackAlbum_id)
Timber.d(it.trackTitle)
}

list?: emptyList()
return 0
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.allsoftdroid.feature.book_details.data.repository

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Transformations
import com.allsoftdroid.common.base.extension.Event
import com.allsoftdroid.common.base.extension.Variable
Expand All @@ -10,12 +9,9 @@ import com.allsoftdroid.database.common.SaveInDatabase
import com.allsoftdroid.database.metadataCacheDB.MetadataDao
import com.allsoftdroid.feature.book_details.data.databaseExtension.SaveMetadataInDatabase
import com.allsoftdroid.feature.book_details.data.databaseExtension.asMetadataDomainModel
import com.allsoftdroid.feature.book_details.data.databaseExtension.asTrackDomainModel
import com.allsoftdroid.feature.book_details.data.model.TrackFormat
import com.allsoftdroid.feature.book_details.data.network.response.GetAudioBookMetadataResponse
import com.allsoftdroid.feature.book_details.data.network.service.ArchiveMetadataService
import com.allsoftdroid.feature.book_details.domain.model.AudioBookMetadataDomainModel
import com.allsoftdroid.feature.book_details.domain.model.AudioBookTrackDomainModel
import com.allsoftdroid.feature.book_details.domain.repository.IMetadataRepository
import com.allsoftdroid.feature.book_details.utils.NetworkState
import com.google.gson.Gson
Expand Down Expand Up @@ -68,7 +64,7 @@ class MetadataRepositoryImpl(
metadataDataSource.getMetadata(bookId).enqueue(object : Callback<String> {
override fun onFailure(call: Call<String>, t: Throwable) {
Timber.i("Failure occur:${t.message}")
_networkResponse.value= Event(NetworkState.ERROR)
_networkResponse.value= Event(NetworkState.CONNECTION_ERROR)
}

override fun onResponse(call: Call<String>, response: Response<String>) {
Expand All @@ -86,9 +82,13 @@ class MetadataRepositoryImpl(
* Run with application scope
*/
GlobalScope.launch {
saveInDatabase
val dbResponse = saveInDatabase
.addData(result)
.execute()

if (dbResponse!=0){
_networkResponse.value = Event(NetworkState.SERVER_ERROR)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,16 @@ class GetMetadataUsecase( private val metadataRepository: IMetadataRepository) :
it.getContentIfNotHandled()?.let { networkState ->
when(networkState){

NetworkState.ERROR -> {
NetworkState.SERVER_ERROR,
NetworkState.CONNECTION_ERROR -> {
GlobalScope.launch(Dispatchers.Main) {
useCaseCallback?.onError(Error("Network Error"))
useCaseCallback?.onError(Error(networkState.value))
}
}

NetworkState.COMPLETED->{
GlobalScope.launch(Dispatchers.Main) {
val responseValues = ResponseValues(Event(Unit))
val responseValues = ResponseValues(Event(networkState.value))
useCaseCallback?.onSuccess(responseValues)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,13 +152,22 @@ class AudioBookDetailsFragment : BaseUIFragment(),KoinComponent {
removeLoading()
setVisibility(dataBindingReference.pbContentLoading,set = false)
Timber.d("Completed")}
NetworkState.ERROR -> {
NetworkState.CONNECTION_ERROR -> {
setVisibility(dataBinding.pbContentLoading,set = false)

if(bookDetailsViewModel.audioBookTracks.value.isNullOrEmpty()){
setVisibility(dataBinding.networkNoConnection,set = true)
}
Toast.makeText(activity,"Connection Error",Toast.LENGTH_SHORT).show()}
Toast.makeText(activity,"Connection Error",Toast.LENGTH_SHORT).show()
}
NetworkState.SERVER_ERROR -> {
setVisibility(dataBinding.pbContentLoading,set = false)

if(bookDetailsViewModel.audioBookTracks.value.isNullOrEmpty()){
setVisibility(dataBinding.serverError,set = true)
}
Toast.makeText(activity,"Server Error",Toast.LENGTH_SHORT).show()
}
}
}
})
Expand Down Expand Up @@ -236,8 +245,8 @@ class AudioBookDetailsFragment : BaseUIFragment(),KoinComponent {
it.getContentIfNotHandled()?.let { isAdded ->
dataBinding.imgViewBookListenLater.apply {
setImageResource(when(isAdded){
true -> R.drawable.ic_bookmark_minus
else -> R.drawable.ic_bookmark_plus_outline
true -> R.drawable.ic_clock
else -> R.drawable.ic_clock_outline
})
}
}
Expand Down Expand Up @@ -267,7 +276,7 @@ class AudioBookDetailsFragment : BaseUIFragment(),KoinComponent {
dataBinding.imgViewBookDownload.setOnClickListener {
val isSent = bookDetailsViewModel.downloadAllChapters()
if (!isSent) {
Toast.makeText(this.requireActivity(),"Download will soon start...",Toast.LENGTH_SHORT).show()
Toast.makeText(this.requireActivity(),getString(R.string.download_soon_start),Toast.LENGTH_SHORT).show()
}

it.setBackgroundResource(R.drawable.gradiant_background)
Expand All @@ -277,12 +286,16 @@ class AudioBookDetailsFragment : BaseUIFragment(),KoinComponent {
resumeOrPlayFromStart()
}

dataBinding.bookMediaActionsListen.setOnClickListener {
dataBinding.bookMediaActionsRead.setOnClickListener {
bookDetailsViewModel.additionalBookDetails.value?.let {
val uri = Uri.parse(it.gutenbergUrl)
val intent = Intent(Intent.ACTION_VIEW,uri)
startActivity(Intent.createChooser(intent,"Open with"))
}?:Toast.makeText(this.requireActivity(),"No Link Found",Toast.LENGTH_SHORT).show()
if (it.archiveUrl.isEmpty()){
Toast.makeText(this.requireActivity(),getString(R.string.no_link_found),Toast.LENGTH_SHORT).show()
}else{
val uri = Uri.parse(it.gutenbergUrl)
val intent = Intent(Intent.ACTION_VIEW,uri)
startActivity(Intent.createChooser(intent,getString(R.string.open_with_label)))
}
}?:Toast.makeText(this.requireActivity(),getString(R.string.wait_message),Toast.LENGTH_SHORT).show()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ internal class BookDetailsViewModel(
}

override suspend fun onError(t: Throwable) {
_additionalBookDetails.value = BookDetails(chapters = emptyList())
Timber.d("Enhanced Error:${t.message}")
}
}
Expand All @@ -210,7 +211,7 @@ internal class BookDetailsViewModel(
it.webDocument = webDocument
_additionalBookDetails.value = it
}else{
_additionalBookDetails.value = null
_additionalBookDetails.value = BookDetails(chapters = emptyList())
}
}

Expand Down Expand Up @@ -273,7 +274,11 @@ internal class BookDetailsViewModel(
}

override suspend fun onError(t: Throwable) {
_networkResponse.value = Event(NetworkState.ERROR)
_networkResponse.value = when(t.message){
NetworkState.CONNECTION_ERROR.value -> Event(NetworkState.CONNECTION_ERROR)
else -> Event(NetworkState.SERVER_ERROR)
}

metadataStateChangeEvent.value = Event(Unit)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,9 @@ Binding adapter for updating the title in list items
fun TextView.setBookPlayTime2(item: BookDetails?){
item?.let {
if(text=="NA"){
text = it.runtime
if(it.runtime.isNotEmpty()){
text = it.runtime
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.allsoftdroid.feature.book_details.utils

enum class NetworkState {
ERROR,
LOADING,
COMPLETED
enum class NetworkState(val value:String) {
CONNECTION_ERROR("Network Error"),
SERVER_ERROR("Server Error"),
LOADING("Loading"),
COMPLETED("Done")
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@
android:visibility="gone"
layout="@layout/layout_no_connection"/>

<include android:id="@+id/server_error"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
layout="@layout/layout_server_error"/>

<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
Expand Down Expand Up @@ -88,10 +94,11 @@

<ImageView
android:id="@+id/imgView_book_listen_later"
android:src="@drawable/ic_bookmark_plus_outline"
android:src="@drawable/ic_clock_outline"
android:layout_width="@dimen/track_item_control_btn_size"
android:layout_height="@dimen/track_item_control_btn_size"
android:layout_marginEnd="@dimen/banner_image_margin_end_normal"
android:padding="@dimen/padding_min"
android:contentDescription="@string/banner_image_listen_later"
android:layout_marginTop="@dimen/track_item_control_btn_margin"
android:clickable="true"
Expand All @@ -106,6 +113,7 @@
android:layout_width="@dimen/track_item_control_btn_size"
android:layout_height="@dimen/track_item_control_btn_size"
android:layout_marginTop="@dimen/track_item_control_btn_margin"
android:padding="@dimen/padding_min"
android:contentDescription="@string/banner_image_download"
app:layout_constraintEnd_toEndOf="@+id/imgView_book_listen_later"
app:layout_constraintStart_toStartOf="@+id/imgView_book_listen_later"
Expand All @@ -117,6 +125,7 @@
android:layout_width="@dimen/track_item_control_btn_size"
android:layout_height="@dimen/track_item_control_btn_size"
android:layout_marginTop="@dimen/track_item_control_btn_margin"
android:padding="@dimen/padding_min"
android:contentDescription="@string/banner_image_share"
app:layout_constraintEnd_toEndOf="@+id/imgView_book_listen_later"
app:layout_constraintStart_toStartOf="@+id/imgView_book_listen_later"
Expand All @@ -128,6 +137,7 @@
android:layout_width="@dimen/track_item_control_btn_size"
android:layout_height="@dimen/track_item_control_btn_size"
android:layout_marginTop="@dimen/track_item_control_btn_margin"
android:padding="@dimen/padding_min"
android:clickable="true"
android:focusable="true"
android:contentDescription="@string/banner_image_info"
Expand All @@ -150,7 +160,7 @@
app:layout_constraintTop_toBottomOf="@+id/fl_book_image_holder">

<LinearLayout
android:id="@+id/book_media_actions_listen"
android:id="@+id/book_media_actions_read"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="match_parent"
Expand Down
Loading

0 comments on commit bf31e9f

Please sign in to comment.