diff --git a/app/src/main/java/com/pixelized/biblib/database/factory/AuthorDboFactory.kt b/app/src/main/java/com/pixelized/biblib/database/factory/AuthorDboFactory.kt new file mode 100644 index 0000000..a0bcd02 --- /dev/null +++ b/app/src/main/java/com/pixelized/biblib/database/factory/AuthorDboFactory.kt @@ -0,0 +1,16 @@ +package com.pixelized.biblib.database.factory + +import com.pixelized.biblib.database.data.AuthorDbo +import com.pixelized.biblib.model.book.Author + +fun AuthorDbo.toAuthor() = Author( + id = id, + name = name, + sort = sort, +) + +fun Author.toDbo() = AuthorDbo( + id = id, + name = name, + sort = sort, +) \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/database/factory/BookDboFactory.kt b/app/src/main/java/com/pixelized/biblib/database/factory/BookDboFactory.kt new file mode 100644 index 0000000..ccb7d6f --- /dev/null +++ b/app/src/main/java/com/pixelized/biblib/database/factory/BookDboFactory.kt @@ -0,0 +1,36 @@ +package com.pixelized.biblib.database.factory + +import com.pixelized.biblib.database.data.BookDbo +import com.pixelized.biblib.database.relation.BookRelation +import com.pixelized.biblib.model.book.Book + +fun BookRelation.toBook(): Book = Book( + id = book.id, + title = book.title, + sort = book.sort, + author = authors.map { it.toAuthor() }, + haveCover = book.haveCover, + releaseDate = book.releaseDate, + language = language?.toLanguage(), + rating = book.rating, + genre = genres?.map { it.toGenre() }, + series = series?.toSeries(), + seriesIndex = book.seriesIndex, + synopsis = book.synopsis, + isNew = book.isNew, +) + +fun Book.toDbo() = BookDbo( + id = id, + title = title, + sort = sort, + haveCover = haveCover, + releaseDate = releaseDate, + language = language?.id, + rating = rating, + series = series?.id, + seriesIndex = seriesIndex, + synopsis = synopsis, + isNew = isNew, + newOrder = newOrder, +) \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/database/factory/GenreDboFactory.kt b/app/src/main/java/com/pixelized/biblib/database/factory/GenreDboFactory.kt new file mode 100644 index 0000000..8b5e206 --- /dev/null +++ b/app/src/main/java/com/pixelized/biblib/database/factory/GenreDboFactory.kt @@ -0,0 +1,14 @@ +package com.pixelized.biblib.database.factory + +import com.pixelized.biblib.database.data.GenreDbo +import com.pixelized.biblib.model.book.Genre + +fun GenreDbo.toGenre() = Genre( + id = id, + name = name, +) + +fun Genre.toDbo() = GenreDbo( + id = id, + name = name, +) \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/database/factory/LanguageDboFactory.kt b/app/src/main/java/com/pixelized/biblib/database/factory/LanguageDboFactory.kt new file mode 100644 index 0000000..002755d --- /dev/null +++ b/app/src/main/java/com/pixelized/biblib/database/factory/LanguageDboFactory.kt @@ -0,0 +1,14 @@ +package com.pixelized.biblib.database.factory + +import com.pixelized.biblib.database.data.LanguageDbo +import com.pixelized.biblib.model.book.Language + +fun LanguageDbo.toLanguage() = Language( + id = id, + code = code, +) + +fun Language.toDbo() = LanguageDbo( + id = id, + code = code +) \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/database/factory/SeriesDboFactory.kt b/app/src/main/java/com/pixelized/biblib/database/factory/SeriesDboFactory.kt new file mode 100644 index 0000000..e5415c6 --- /dev/null +++ b/app/src/main/java/com/pixelized/biblib/database/factory/SeriesDboFactory.kt @@ -0,0 +1,16 @@ +package com.pixelized.biblib.database.factory + +import com.pixelized.biblib.database.data.SeriesDbo +import com.pixelized.biblib.model.book.Series + +fun SeriesDbo.toSeries() = Series( + id = id, + name = name, + sort = sort, +) + +fun Series.toDbo(id: Int) = SeriesDbo( + id = id, + name = name, + sort = sort, +) \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/module/NetworkModule.kt b/app/src/main/java/com/pixelized/biblib/module/NetworkModule.kt index 5d4bfeb..159925a 100644 --- a/app/src/main/java/com/pixelized/biblib/module/NetworkModule.kt +++ b/app/src/main/java/com/pixelized/biblib/module/NetworkModule.kt @@ -6,6 +6,7 @@ import com.google.gson.GsonBuilder import com.pixelized.biblib.network.client.BibLibClient import com.pixelized.biblib.network.client.IBibLibClient import com.pixelized.biblib.repository.connectivity.ConnectivityRepository +import com.pixelized.biblib.repository.connectivity.IConnectivityRepository import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -37,7 +38,7 @@ class NetworkModule { @Singleton fun provideConnectivityRepository( @ApplicationContext context: Context, - ): ConnectivityRepository { + ): IConnectivityRepository { return ConnectivityRepository(context) } } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/repository/book/BookRepository.kt b/app/src/main/java/com/pixelized/biblib/repository/book/BookRepository.kt index 55143d2..9a10ec4 100644 --- a/app/src/main/java/com/pixelized/biblib/repository/book/BookRepository.kt +++ b/app/src/main/java/com/pixelized/biblib/repository/book/BookRepository.kt @@ -6,8 +6,8 @@ import com.pixelized.biblib.database.BibLibDatabase import com.pixelized.biblib.database.crossref.BookAuthorCrossRef import com.pixelized.biblib.database.crossref.BookGenreCrossRef import com.pixelized.biblib.database.data.* -import com.pixelized.biblib.database.relation.BookRelation import com.pixelized.biblib.model.book.* +import com.pixelized.biblib.database.factory.* import javax.inject.Inject class BookRepository @Inject constructor( @@ -75,79 +75,4 @@ class BookRepository @Inject constructor( database.crossRefDao().insert(*bookAuthorCrossRef.toTypedArray()) database.crossRefDao().insert(*bookGenreCrossRef.toTypedArray()) } - - private fun Author.toDbo() = AuthorDbo( - id = id, - name = name, - sort = sort, - ) - - private fun Genre.toDbo() = GenreDbo( - id = id, - name = name, - ) - - private fun Series.toDbo(id: Int) = SeriesDbo( - id = id, - name = name, - sort = sort, - ) - - private fun Language.toDbo() = LanguageDbo( - id = id, - code = code - ) - - private fun Book.toDbo() = BookDbo( - id = id, - title = title, - sort = sort, - haveCover = haveCover, - releaseDate = releaseDate, - language = language?.id, - rating = rating, - series = series?.id, - seriesIndex = seriesIndex, - synopsis = synopsis, - isNew = isNew, - newOrder = newOrder, - ) - - private fun BookRelation.toBook(): Book = Book( - id = book.id, - title = book.title, - sort = book.sort, - author = authors.map { it.toAuthor() }, - haveCover = book.haveCover, - releaseDate = book.releaseDate, - language = language?.toLanguage(), - rating = book.rating, - genre = genres?.map { it.toGenre() }, - series = series?.toSeries(), - seriesIndex = book.seriesIndex, - synopsis = book.synopsis, - isNew = book.isNew, - ) - - private fun AuthorDbo.toAuthor() = Author( - id = id, - name = name, - sort = sort, - ) - - private fun LanguageDbo.toLanguage() = Language( - id = id, - code = code, - ) - - private fun GenreDbo.toGenre() = Genre( - id = id, - name = name, - ) - - private fun SeriesDbo.toSeries() = Series( - id = id, - name = name, - sort = sort, - ) } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/repository/connectivity/ConnectivityRepository.kt b/app/src/main/java/com/pixelized/biblib/repository/connectivity/ConnectivityRepository.kt index 3e68d30..f12e020 100644 --- a/app/src/main/java/com/pixelized/biblib/repository/connectivity/ConnectivityRepository.kt +++ b/app/src/main/java/com/pixelized/biblib/repository/connectivity/ConnectivityRepository.kt @@ -16,12 +16,11 @@ import kotlinx.coroutines.flow.MutableStateFlow */ class ConnectivityRepository constructor( @ApplicationContext context: Context, -) { - +) : IConnectivityRepository { private val _networkAvailabilityFlow = MutableStateFlow(true) - val networkAvailabilityFlow: Flow get() = _networkAvailabilityFlow - val isNetworkAvailable: Boolean get() = _networkAvailabilityFlow.value + override val networkAvailabilityFlow: Flow get() = _networkAvailabilityFlow + override val isNetworkAvailable: Boolean get() = _networkAvailabilityFlow.value init { context.getSystemService()?.let { connectivityManager -> diff --git a/app/src/main/java/com/pixelized/biblib/repository/connectivity/IConnectivityRepository.kt b/app/src/main/java/com/pixelized/biblib/repository/connectivity/IConnectivityRepository.kt new file mode 100644 index 0000000..59aeea2 --- /dev/null +++ b/app/src/main/java/com/pixelized/biblib/repository/connectivity/IConnectivityRepository.kt @@ -0,0 +1,14 @@ +package com.pixelized.biblib.repository.connectivity + +import kotlinx.coroutines.flow.Flow + +/** + * This class is responsible to check for internet availability. + * https://developer.android.com/training/monitoring-device-state/connectivity-status-type + */ +interface IConnectivityRepository { + + val networkAvailabilityFlow: Flow + + val isNetworkAvailable: Boolean +} \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/repository/search/SearchRepository.kt b/app/src/main/java/com/pixelized/biblib/repository/search/SearchRepository.kt index 939ef06..66f60a3 100644 --- a/app/src/main/java/com/pixelized/biblib/repository/search/SearchRepository.kt +++ b/app/src/main/java/com/pixelized/biblib/repository/search/SearchRepository.kt @@ -5,9 +5,9 @@ import com.pixelized.biblib.database.BibLibDatabase import com.pixelized.biblib.database.crossref.BookAuthorCrossRef import com.pixelized.biblib.database.crossref.BookGenreCrossRef import com.pixelized.biblib.database.data.* -import com.pixelized.biblib.database.relation.BookRelation import com.pixelized.biblib.model.book.* import com.pixelized.biblib.model.search.SortType +import com.pixelized.biblib.database.factory.* import javax.inject.Inject class SearchRepository @Inject constructor( @@ -20,7 +20,7 @@ class SearchRepository @Inject constructor( seriesId: Int?, genreId: Int?, languageId: Int?, - sortBy : SortType, + sortBy: SortType, limit: Int, offset: Int ): List { @@ -132,44 +132,4 @@ private fun MutableList.where( } else { "" } -} - -// TODO Duplicate - -private fun BookRelation.toBook(): Book = Book( - id = book.id, - title = book.title, - sort = book.sort, - author = authors.map { it.toAuthor() }, - haveCover = book.haveCover, - releaseDate = book.releaseDate, - language = language?.toLanguage(), - rating = book.rating, - genre = genres?.map { it.toGenre() }, - series = series?.toSeries(), - seriesIndex = book.seriesIndex, - synopsis = book.synopsis, - isNew = book.isNew, -) - -private fun AuthorDbo.toAuthor() = Author( - id = id, - name = name, - sort = sort, -) - -private fun LanguageDbo.toLanguage() = Language( - id = id, - code = code, -) - -private fun GenreDbo.toGenre() = Genre( - id = id, - name = name, -) - -private fun SeriesDbo.toSeries() = Series( - id = id, - name = name, - sort = sort, -) \ No newline at end of file +} \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/biblib/ui/screen/home/common/connectivity/ConnectivityViewModel.kt b/app/src/main/java/com/pixelized/biblib/ui/screen/home/common/connectivity/ConnectivityViewModel.kt index c76b024..8ea55ef 100644 --- a/app/src/main/java/com/pixelized/biblib/ui/screen/home/common/connectivity/ConnectivityViewModel.kt +++ b/app/src/main/java/com/pixelized/biblib/ui/screen/home/common/connectivity/ConnectivityViewModel.kt @@ -4,14 +4,14 @@ import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.pixelized.biblib.repository.connectivity.ConnectivityRepository +import com.pixelized.biblib.repository.connectivity.IConnectivityRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel class ConnectivityViewModel @Inject constructor( - private val connectivityRepository: ConnectivityRepository, + private val connectivityRepository: IConnectivityRepository, ) : ViewModel() { private val _isNetworkAvailable = mutableStateOf(connectivityRepository.isNetworkAvailable)