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">