Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0/segundo entregable #48

Open
wants to merge 32 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
50f9ca9
Reupload to correct project
Feb 2, 2023
ea3aa01
+ order adapter + list + fragment
Feb 2, 2023
44e51e0
+ map type of order + init mapping strings
Feb 3, 2023
abdf32a
+ onclick book order item
Feb 3, 2023
5775be2
+ ticker request api + repo + use case + viewmodel + fragment and states
Feb 3, 2023
d2ab523
+ list order book request + models + repo + states + use case
Feb 3, 2023
b16dace
+ provisional views for bids and asks
Feb 3, 2023
06cad7a
Map some string resources to Order book
Feb 3, 2023
b9d34a1
+ Renames & refactors for clarity
Feb 7, 2023
96f53e2
refactor ui package
Feb 7, 2023
00d9010
+ adds network monitor state livedata class
Feb 7, 2023
57a30fc
+ refactor viewmodels
Feb 8, 2023
2bb989a
+ add layer for clean architecture, separates domain models from API …
Feb 9, 2023
030e661
+ split on 2 repositories + singleton db pattern
Feb 9, 2023
b725e13
+ on repository adds write & delete exchange order book
Feb 9, 2023
1f06e71
refactor open orders for service list_order
Feb 9, 2023
0ca3e52
refactor for entities
Feb 9, 2023
c6eea1d
+ init testing + daos fro bids ask and ticker
Feb 10, 2023
809428f
+ dont allow backup to freely update db + extra datos sesion retrofit…
Feb 13, 2023
d467efa
+ strategy for insert or update ticker to db + implemented back from …
Feb 14, 2023
d030d99
init repo for db asks and bids
Feb 14, 2023
9c54f78
+ write bids and asks to db table + reformat models
Feb 14, 2023
7f2d4a6
+ read available order books from db + read ticker from db
Feb 15, 2023
b2851fb
+ refactor binding first fragment + read asks and bids from db + refr…
Feb 16, 2023
f2fe4a1
+ Uses ListAdapter for bids & asks + show a key for book
Feb 16, 2023
2532c51
improve UI
Feb 16, 2023
9d753d3
fixed UI bug
Feb 16, 2023
e1fe098
move local repo to interface
Feb 16, 2023
cf23bf7
refactor ticket response + test available order books remote repository
Feb 17, 2023
255ccd6
+ tests for remote repositories for success response
Feb 17, 2023
e6d1ea8
+ User-Agent header to all requests
Feb 17, 2023
4d4e1f8
Workaround for bug on internet detection
Feb 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
move local repo to interface
0MA committed Feb 16, 2023
commit e1fe098e01aa276adf976b784342a740751147bc
Original file line number Diff line number Diff line change
@@ -2,7 +2,6 @@ package com.axiasoft.android.zerocoins.ui.features.available_books.domain.models

import com.google.gson.annotations.SerializedName


data class ExchangeOrderBook(
@SerializedName("book") var book: String? = null,
@SerializedName("minimum_amount") var minimumAmount: String? = null,
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
package com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book

import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.exchange_order_book.ExchangeOrderBook
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.open_orders_book.Ask
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.open_orders_book.Bids
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.ticker.Ticker

interface LocalOrderBookRepository {
//TODO

suspend fun storeAvailableExchangeOrderBooks(
availableExchangeOrderBook: ArrayList<ExchangeOrderBook>
)

suspend fun retrieveExchangeOrderBooks(): ArrayList<ExchangeOrderBook>

fun storeTickerDBWithScope(ticker: Ticker)

suspend fun retrieveTicker(book: String): Ticker?

fun storeBidsAndAsks(asks: List<Ask>, bids: List<Bids>)

suspend fun retrieveBidsAndAsks(book: String): Pair<List<Ask>, List<Bids>>
}
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ class LocalOrderBookRepositoryImpl: LocalOrderBookRepository {

val scope = CoroutineScope(Dispatchers.IO)

suspend fun storeAvailableExchangeOrderBooks(
override suspend fun storeAvailableExchangeOrderBooks(
availableExchangeOrderBook: ArrayList<ExchangeOrderBook>
){
withContext(Dispatchers.IO){
@@ -33,7 +33,7 @@ class LocalOrderBookRepositoryImpl: LocalOrderBookRepository {
}
}

suspend fun retrieveExchangeOrderBooks(): ArrayList<ExchangeOrderBook>{
override suspend fun retrieveExchangeOrderBooks(): ArrayList<ExchangeOrderBook>{
return withContext(Dispatchers.IO){
try {
val entities = db.bookDao().getAvailableBooks() as ArrayList
@@ -47,7 +47,7 @@ class LocalOrderBookRepositoryImpl: LocalOrderBookRepository {
}
}

fun storeTickerDBWithScope(ticker: Ticker){
override fun storeTickerDBWithScope(ticker: Ticker){
scope.launch(Dispatchers.IO) {
val tickerEntity = ticker.toEntity()
db.tickerDao().upsertTicker(tickerEntity)
@@ -61,7 +61,7 @@ class LocalOrderBookRepositoryImpl: LocalOrderBookRepository {
}
}

suspend fun retrieveTicker(book: String): Ticker?{
override suspend fun retrieveTicker(book: String): Ticker?{
return withContext(Dispatchers.IO){
try {
val tickerEntity = db.tickerDao().getBook(book)
@@ -74,7 +74,7 @@ class LocalOrderBookRepositoryImpl: LocalOrderBookRepository {
}
}

fun storeBidsAndAsks(asks: List<Ask>, bids: List<Bids>){
override fun storeBidsAndAsks(asks: List<Ask>, bids: List<Bids>){
scope.launch {
val askEntities = asks.map { it.toEntity() }
val bidsEntities = bids.map { it.toEntity() }
@@ -87,7 +87,7 @@ class LocalOrderBookRepositoryImpl: LocalOrderBookRepository {
}
}

suspend fun retrieveBidsAndAsks(book: String): Pair<List<Ask>, List<Bids>>{
override suspend fun retrieveBidsAndAsks(book: String): Pair<List<Ask>, List<Bids>>{
return withContext(Dispatchers.IO){
try {
val asksEntities = db.askDao().getAsks(book)
Original file line number Diff line number Diff line change
@@ -5,11 +5,12 @@ import com.axiasoft.android.zerocoins.ui.features.available_books.views.ui_state
import com.axiasoft.android.zerocoins.network.bitso.wrappers.BitsoApiResponseWrap
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.mappers.toDomain
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.exchange_order_book.ExchangeOrderBook
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.LocalOrderBookRepository
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.LocalOrderBookRepositoryImpl

class GetBooksUseCase(
private val remoteOrderBooksRepository: RemoteOrderBooksRepository,
private val localOrderBookRepositoryImpl: LocalOrderBookRepositoryImpl
private val localOrderBookRepository: LocalOrderBookRepository
) {
suspend operator fun invoke(): BooksScreenState {
val booksWrappedResponse = remoteOrderBooksRepository.getBooksFromApi()
@@ -33,7 +34,7 @@ class GetBooksUseCase(
}

suspend fun retrieveExchangeOrderBook(): BooksScreenState{
val localExchangeOrderBooks = localOrderBookRepositoryImpl.retrieveExchangeOrderBooks()
val localExchangeOrderBooks = localOrderBookRepository.retrieveExchangeOrderBooks()
return if (localExchangeOrderBooks.isNotEmpty()){
BooksScreenState.BooksSuccess(localExchangeOrderBooks)
} else {
@@ -42,6 +43,6 @@ class GetBooksUseCase(
}

private suspend fun updateDBAvailableExchangeOrderBook(availableExchangeOrderBook: ArrayList<ExchangeOrderBook>){
localOrderBookRepositoryImpl.storeAvailableExchangeOrderBooks(availableExchangeOrderBook)
localOrderBookRepository.storeAvailableExchangeOrderBooks(availableExchangeOrderBook)
}
}
Original file line number Diff line number Diff line change
@@ -4,13 +4,13 @@ import com.axiasoft.android.zerocoins.network.bitso.wrappers.BitsoApiResponseWra
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.exchange_order_book.ExchangeOrderBook
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.open_orders_book.Ask
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.open_orders_book.Bids
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.LocalOrderBookRepositoryImpl
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.LocalOrderBookRepository
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.RemoteOrderBooksRepository
import com.axiasoft.android.zerocoins.ui.features.available_books.views.ui_states.ListOrderBookScreenState

class GetListOrderBookUseCase(
private val remoteOrderBooksRepository: RemoteOrderBooksRepository,
private val localOrderBookRepository: LocalOrderBookRepositoryImpl
private val localOrderBookRepository: LocalOrderBookRepository

) {
suspend fun invoke(book: ExchangeOrderBook): ListOrderBookScreenState {
Original file line number Diff line number Diff line change
@@ -4,13 +4,13 @@ import com.axiasoft.android.zerocoins.common.emptyString
import com.axiasoft.android.zerocoins.network.bitso.wrappers.BitsoApiResponseWrap
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.exchange_order_book.ExchangeOrderBook
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.models.data.ticker.Ticker
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.LocalOrderBookRepositoryImpl
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.LocalOrderBookRepository
import com.axiasoft.android.zerocoins.ui.features.available_books.domain.repositories.order_book.RemoteOrderBooksRepository
import com.axiasoft.android.zerocoins.ui.features.available_books.views.ui_states.TickerScreenState

class GetTickerUseCase(
private val remoteOrderBooksRepository: RemoteOrderBooksRepository,
private val localOrderBookRepository: LocalOrderBookRepositoryImpl
private val localOrderBookRepository: LocalOrderBookRepository
) {
suspend fun invoke(book: ExchangeOrderBook): TickerScreenState {
val tickerWrappedResponse = remoteOrderBooksRepository.getTicketsFromApi(book.book ?: "")
Original file line number Diff line number Diff line change
@@ -63,11 +63,8 @@ class BookOrderListFragment : Fragment(R.layout.fragment_book_order_list) {
fun initViewModels() {
availableBooksViewModel =
ViewModelProvider(requireActivity()).get(AvailableBooksViewModel::class.java)
//bookOrderViewModel = ViewModelProvider(requireActivity()).get(BookOrderViewModel::class.java)

bookOrderViewModel = activity?.run {
ViewModelProvider(requireActivity()).get(BookOrderViewModel::class.java)
} ?: throw Exception("Invalid Activity")
bookOrderViewModel = ViewModelProvider(requireActivity()).get(BookOrderViewModel::class.java)
}

fun initObservers() {
7 changes: 0 additions & 7 deletions 0-Coins/app/src/main/res/layout/fragment_ticker.xml
Original file line number Diff line number Diff line change
@@ -27,15 +27,8 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
/>


</androidx.constraintlayout.widget.ConstraintLayout>

<!--<include
android:id="@+id/separator"
layout="@layout/label_ask_bids"
app:layout_constraintTop_toBottomOf="@+id/cl_ticker"
/>-->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_asks"
android:layout_width="0dp"
2 changes: 1 addition & 1 deletion 0-Coins/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@
<string name="ticker_ticker_subtitle">Información de intercambio</string>
<string name="ticker_ticker_last_price">Último precio: </string>
<string name="ticker_ticker_high_price">Precio más alto: </string>
<string name="ticker_ticker_lower_price">Precio más alto: </string>
<string name="ticker_ticker_lower_price">Precio más bajo: </string>

<string name="ticker_ask">Asks</string>
<string name="ticker_bid">Bids</string>