diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bd0427f..d6962e2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,10 +11,10 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> diff --git a/app/src/main/java/com/example/cryptoapp/database/AppDatabase.kt b/app/src/main/java/com/example/cryptoapp/data/database/AppDatabase.kt similarity index 90% rename from app/src/main/java/com/example/cryptoapp/database/AppDatabase.kt rename to app/src/main/java/com/example/cryptoapp/data/database/AppDatabase.kt index 3f39d30..8a2f7a1 100644 --- a/app/src/main/java/com/example/cryptoapp/database/AppDatabase.kt +++ b/app/src/main/java/com/example/cryptoapp/data/database/AppDatabase.kt @@ -1,10 +1,10 @@ -package com.example.cryptoapp.database +package com.example.cryptoapp.data.database import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase -import com.example.cryptoapp.pojo.CoinPriceInfo +import com.example.cryptoapp.data.model.CoinPriceInfo @Database(entities = [CoinPriceInfo::class], version = 1, exportSchema = false) abstract class AppDatabase : RoomDatabase() { diff --git a/app/src/main/java/com/example/cryptoapp/database/CoinPriceInfoDao.kt b/app/src/main/java/com/example/cryptoapp/data/database/CoinPriceInfoDao.kt similarity index 85% rename from app/src/main/java/com/example/cryptoapp/database/CoinPriceInfoDao.kt rename to app/src/main/java/com/example/cryptoapp/data/database/CoinPriceInfoDao.kt index 7ca14aa..8e43011 100644 --- a/app/src/main/java/com/example/cryptoapp/database/CoinPriceInfoDao.kt +++ b/app/src/main/java/com/example/cryptoapp/data/database/CoinPriceInfoDao.kt @@ -1,11 +1,11 @@ -package com.example.cryptoapp.database +package com.example.cryptoapp.data.database import androidx.lifecycle.LiveData import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.example.cryptoapp.pojo.CoinPriceInfo +import com.example.cryptoapp.data.model.CoinPriceInfo @Dao interface CoinPriceInfoDao { diff --git a/app/src/main/java/com/example/cryptoapp/pojo/CoinInfo.kt b/app/src/main/java/com/example/cryptoapp/data/model/CoinInfo.kt similarity index 82% rename from app/src/main/java/com/example/cryptoapp/pojo/CoinInfo.kt rename to app/src/main/java/com/example/cryptoapp/data/model/CoinInfo.kt index 157c37b..ee4fd4a 100644 --- a/app/src/main/java/com/example/cryptoapp/pojo/CoinInfo.kt +++ b/app/src/main/java/com/example/cryptoapp/data/model/CoinInfo.kt @@ -1,4 +1,4 @@ -package com.example.cryptoapp.pojo +package com.example.cryptoapp.data.model import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/example/cryptoapp/pojo/CoinInfoListOfData.kt b/app/src/main/java/com/example/cryptoapp/data/model/CoinInfoListOfData.kt similarity index 83% rename from app/src/main/java/com/example/cryptoapp/pojo/CoinInfoListOfData.kt rename to app/src/main/java/com/example/cryptoapp/data/model/CoinInfoListOfData.kt index 10c7ac3..37bb800 100644 --- a/app/src/main/java/com/example/cryptoapp/pojo/CoinInfoListOfData.kt +++ b/app/src/main/java/com/example/cryptoapp/data/model/CoinInfoListOfData.kt @@ -1,4 +1,4 @@ -package com.example.cryptoapp.pojo +package com.example.cryptoapp.data.model import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/example/cryptoapp/pojo/CoinPriceInfo.kt b/app/src/main/java/com/example/cryptoapp/data/model/CoinPriceInfo.kt similarity index 96% rename from app/src/main/java/com/example/cryptoapp/pojo/CoinPriceInfo.kt rename to app/src/main/java/com/example/cryptoapp/data/model/CoinPriceInfo.kt index 39156cb..83f33a1 100644 --- a/app/src/main/java/com/example/cryptoapp/pojo/CoinPriceInfo.kt +++ b/app/src/main/java/com/example/cryptoapp/data/model/CoinPriceInfo.kt @@ -1,8 +1,8 @@ -package com.example.cryptoapp.pojo +package com.example.cryptoapp.data.model import androidx.room.Entity import androidx.room.PrimaryKey -import com.example.cryptoapp.api.ApiFactory.BASE_IMAGE_URL +import com.example.cryptoapp.data.network.ApiFactory.BASE_IMAGE_URL import com.example.cryptoapp.utils.convertTimestampToTime import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName @@ -128,6 +128,7 @@ data class CoinPriceInfo( @Expose val imageUrl: String? ) { + fun getFormattedTime(): String { return convertTimestampToTime(lastUpdate) } diff --git a/app/src/main/java/com/example/cryptoapp/pojo/CoinPriceInfoRawData.kt b/app/src/main/java/com/example/cryptoapp/data/model/CoinPriceInfoRawData.kt similarity index 86% rename from app/src/main/java/com/example/cryptoapp/pojo/CoinPriceInfoRawData.kt rename to app/src/main/java/com/example/cryptoapp/data/model/CoinPriceInfoRawData.kt index 844aa7e..7e2d142 100644 --- a/app/src/main/java/com/example/cryptoapp/pojo/CoinPriceInfoRawData.kt +++ b/app/src/main/java/com/example/cryptoapp/data/model/CoinPriceInfoRawData.kt @@ -1,4 +1,4 @@ -package com.example.cryptoapp.pojo +package com.example.cryptoapp.data.model import com.google.gson.JsonObject import com.google.gson.annotations.Expose diff --git a/app/src/main/java/com/example/cryptoapp/pojo/Datum.kt b/app/src/main/java/com/example/cryptoapp/data/model/Datum.kt similarity index 82% rename from app/src/main/java/com/example/cryptoapp/pojo/Datum.kt rename to app/src/main/java/com/example/cryptoapp/data/model/Datum.kt index 0aea9f8..5d5d0f8 100644 --- a/app/src/main/java/com/example/cryptoapp/pojo/Datum.kt +++ b/app/src/main/java/com/example/cryptoapp/data/model/Datum.kt @@ -1,4 +1,4 @@ -package com.example.cryptoapp.pojo +package com.example.cryptoapp.data.model import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/example/cryptoapp/api/ApiFactory.kt b/app/src/main/java/com/example/cryptoapp/data/network/ApiFactory.kt similarity index 93% rename from app/src/main/java/com/example/cryptoapp/api/ApiFactory.kt rename to app/src/main/java/com/example/cryptoapp/data/network/ApiFactory.kt index ebc9764..03fa156 100644 --- a/app/src/main/java/com/example/cryptoapp/api/ApiFactory.kt +++ b/app/src/main/java/com/example/cryptoapp/data/network/ApiFactory.kt @@ -1,4 +1,4 @@ -package com.example.cryptoapp.api +package com.example.cryptoapp.data.network import retrofit2.Retrofit import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory diff --git a/app/src/main/java/com/example/cryptoapp/api/ApiService.kt b/app/src/main/java/com/example/cryptoapp/data/network/ApiService.kt similarity index 85% rename from app/src/main/java/com/example/cryptoapp/api/ApiService.kt rename to app/src/main/java/com/example/cryptoapp/data/network/ApiService.kt index 83f2c8f..5867c8f 100644 --- a/app/src/main/java/com/example/cryptoapp/api/ApiService.kt +++ b/app/src/main/java/com/example/cryptoapp/data/network/ApiService.kt @@ -1,7 +1,7 @@ -package com.example.cryptoapp.api +package com.example.cryptoapp.data.network -import com.example.cryptoapp.pojo.CoinInfoListOfData -import com.example.cryptoapp.pojo.CoinPriceInfoRawData +import com.example.cryptoapp.data.model.CoinInfoListOfData +import com.example.cryptoapp.data.model.CoinPriceInfoRawData import io.reactivex.Single import retrofit2.http.GET import retrofit2.http.Query diff --git a/app/src/main/java/com/example/cryptoapp/domain/CoinInfo.kt b/app/src/main/java/com/example/cryptoapp/domain/CoinInfo.kt new file mode 100644 index 0000000..4a52452 --- /dev/null +++ b/app/src/main/java/com/example/cryptoapp/domain/CoinInfo.kt @@ -0,0 +1,12 @@ +package com.example.cryptoapp.domain + +data class CoinInfo( + val fromSymbol: String, + val toSymbol: String?, + val price: String?, + val lastUpdate: Long?, + val highDay: String?, + val lowDay: String?, + val lastMarket: String?, + val imageUrl: String? +) diff --git a/app/src/main/java/com/example/cryptoapp/domain/CoinRepository.kt b/app/src/main/java/com/example/cryptoapp/domain/CoinRepository.kt new file mode 100644 index 0000000..ce50f51 --- /dev/null +++ b/app/src/main/java/com/example/cryptoapp/domain/CoinRepository.kt @@ -0,0 +1,10 @@ +package com.example.cryptoapp.domain + +import androidx.lifecycle.LiveData + +interface CoinRepository { + + fun getCoinInfoList(): LiveData> + + fun getCoinInfo(fromSymbol: String): LiveData +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cryptoapp/domain/GetCoinInfoListUseCase.kt b/app/src/main/java/com/example/cryptoapp/domain/GetCoinInfoListUseCase.kt new file mode 100644 index 0000000..1b6e301 --- /dev/null +++ b/app/src/main/java/com/example/cryptoapp/domain/GetCoinInfoListUseCase.kt @@ -0,0 +1,6 @@ +package com.example.cryptoapp.domain + +class GetCoinInfoListUseCase(private val repository: CoinRepository) { + + operator fun invoke() = repository.getCoinInfoList() +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cryptoapp/domain/GetCoinInfoUseCase.kt b/app/src/main/java/com/example/cryptoapp/domain/GetCoinInfoUseCase.kt new file mode 100644 index 0000000..a3a887d --- /dev/null +++ b/app/src/main/java/com/example/cryptoapp/domain/GetCoinInfoUseCase.kt @@ -0,0 +1,6 @@ +package com.example.cryptoapp.domain + +class GetCoinInfoUseCase(private val repository: CoinRepository) { + + operator fun invoke(fromSymbol: String) = repository.getCoinInfo(fromSymbol) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cryptoapp/CoinDetailActivity.kt b/app/src/main/java/com/example/cryptoapp/presentation/CoinDetailActivity.kt similarity index 96% rename from app/src/main/java/com/example/cryptoapp/CoinDetailActivity.kt rename to app/src/main/java/com/example/cryptoapp/presentation/CoinDetailActivity.kt index d82bc21..a5dc298 100644 --- a/app/src/main/java/com/example/cryptoapp/CoinDetailActivity.kt +++ b/app/src/main/java/com/example/cryptoapp/presentation/CoinDetailActivity.kt @@ -1,4 +1,4 @@ -package com.example.cryptoapp +package com.example.cryptoapp.presentation import android.content.Context import android.content.Intent @@ -8,6 +8,7 @@ import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.example.cryptoapp.R import com.squareup.picasso.Picasso class CoinDetailActivity : AppCompatActivity() { diff --git a/app/src/main/java/com/example/cryptoapp/CoinPriceListActivity.kt b/app/src/main/java/com/example/cryptoapp/presentation/CoinPriceListActivity.kt similarity index 83% rename from app/src/main/java/com/example/cryptoapp/CoinPriceListActivity.kt rename to app/src/main/java/com/example/cryptoapp/presentation/CoinPriceListActivity.kt index d37565e..9b42678 100644 --- a/app/src/main/java/com/example/cryptoapp/CoinPriceListActivity.kt +++ b/app/src/main/java/com/example/cryptoapp/presentation/CoinPriceListActivity.kt @@ -1,12 +1,13 @@ -package com.example.cryptoapp +package com.example.cryptoapp.presentation import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView -import com.example.cryptoapp.adapters.CoinInfoAdapter -import com.example.cryptoapp.pojo.CoinPriceInfo +import com.example.cryptoapp.R +import com.example.cryptoapp.presentation.adapters.CoinInfoAdapter +import com.example.cryptoapp.data.model.CoinPriceInfo class CoinPriceListActivity : AppCompatActivity() { @@ -29,7 +30,7 @@ class CoinPriceListActivity : AppCompatActivity() { rvCoinPriceList.adapter = adapter viewModel = ViewModelProvider(this)[CoinViewModel::class.java] viewModel.priceList.observe(this, Observer { - adapter.coinInfoList = it + adapter.coinInfoList = it }) } } diff --git a/app/src/main/java/com/example/cryptoapp/CoinViewModel.kt b/app/src/main/java/com/example/cryptoapp/presentation/CoinViewModel.kt similarity index 89% rename from app/src/main/java/com/example/cryptoapp/CoinViewModel.kt rename to app/src/main/java/com/example/cryptoapp/presentation/CoinViewModel.kt index 78ad0ae..c8968d3 100644 --- a/app/src/main/java/com/example/cryptoapp/CoinViewModel.kt +++ b/app/src/main/java/com/example/cryptoapp/presentation/CoinViewModel.kt @@ -1,13 +1,13 @@ -package com.example.cryptoapp +package com.example.cryptoapp.presentation import android.app.Application import android.util.Log import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData -import com.example.cryptoapp.api.ApiFactory -import com.example.cryptoapp.database.AppDatabase -import com.example.cryptoapp.pojo.CoinPriceInfo -import com.example.cryptoapp.pojo.CoinPriceInfoRawData +import com.example.cryptoapp.data.network.ApiFactory +import com.example.cryptoapp.data.database.AppDatabase +import com.example.cryptoapp.data.model.CoinPriceInfo +import com.example.cryptoapp.data.model.CoinPriceInfoRawData import com.google.gson.Gson import io.reactivex.disposables.CompositeDisposable import io.reactivex.schedulers.Schedulers diff --git a/app/src/main/java/com/example/cryptoapp/adapters/CoinInfoAdapter.kt b/app/src/main/java/com/example/cryptoapp/presentation/adapters/CoinInfoAdapter.kt similarity index 95% rename from app/src/main/java/com/example/cryptoapp/adapters/CoinInfoAdapter.kt rename to app/src/main/java/com/example/cryptoapp/presentation/adapters/CoinInfoAdapter.kt index 60a672d..3c7a226 100644 --- a/app/src/main/java/com/example/cryptoapp/adapters/CoinInfoAdapter.kt +++ b/app/src/main/java/com/example/cryptoapp/presentation/adapters/CoinInfoAdapter.kt @@ -1,4 +1,4 @@ -package com.example.cryptoapp.adapters +package com.example.cryptoapp.presentation.adapters import android.content.Context import android.view.LayoutInflater @@ -8,7 +8,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.example.cryptoapp.R -import com.example.cryptoapp.pojo.CoinPriceInfo +import com.example.cryptoapp.data.model.CoinPriceInfo import com.squareup.picasso.Picasso class CoinInfoAdapter(private val context: Context) : diff --git a/app/src/main/res/layout/activity_coin_detail.xml b/app/src/main/res/layout/activity_coin_detail.xml index fabe2db..5f70a87 100644 --- a/app/src/main/res/layout/activity_coin_detail.xml +++ b/app/src/main/res/layout/activity_coin_detail.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".CoinDetailActivity"> + tools:context=".presentation.CoinDetailActivity"> + tools:context=".presentation.CoinPriceListActivity">