mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-19 08:45:27 +02:00
parent
8ffaf4b08b
commit
2e2ec1d753
@ -0,0 +1,166 @@
|
|||||||
|
{
|
||||||
|
"formatVersion": 1,
|
||||||
|
"database": {
|
||||||
|
"version": 5,
|
||||||
|
"identityHash": "920913c194487fd80e7020d3606cf8da",
|
||||||
|
"entities": [
|
||||||
|
{
|
||||||
|
"tableName": "units",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`unitId` TEXT NOT NULL, `is_favorite` INTEGER NOT NULL, `paired_unit_id` TEXT, `frequency` INTEGER NOT NULL, PRIMARY KEY(`unitId`))",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "unitId",
|
||||||
|
"columnName": "unitId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "isFavorite",
|
||||||
|
"columnName": "is_favorite",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "pairedUnitId",
|
||||||
|
"columnName": "paired_unit_id",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "frequency",
|
||||||
|
"columnName": "frequency",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"unitId"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [],
|
||||||
|
"foreignKeys": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "calculator_history",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`entityId` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `timestamp` INTEGER NOT NULL, `expression` TEXT NOT NULL, `result` TEXT NOT NULL)",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "entityId",
|
||||||
|
"columnName": "entityId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "timestamp",
|
||||||
|
"columnName": "timestamp",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "expression",
|
||||||
|
"columnName": "expression",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "result",
|
||||||
|
"columnName": "result",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": true,
|
||||||
|
"columnNames": [
|
||||||
|
"entityId"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [],
|
||||||
|
"foreignKeys": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "time_zones",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `position` INTEGER NOT NULL, `label` TEXT NOT NULL, PRIMARY KEY(`id`))",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "id",
|
||||||
|
"columnName": "id",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "position",
|
||||||
|
"columnName": "position",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "label",
|
||||||
|
"columnName": "label",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"id"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [],
|
||||||
|
"foreignKeys": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "currency_rates",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`entityId` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `base_unit_id` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `pair_unit_id` TEXT NOT NULL, `pair_unit_value` TEXT)",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "entityId",
|
||||||
|
"columnName": "entityId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "baseUnitId",
|
||||||
|
"columnName": "base_unit_id",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "date",
|
||||||
|
"columnName": "timestamp",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "pairUnitId",
|
||||||
|
"columnName": "pair_unit_id",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "pairUnitValue",
|
||||||
|
"columnName": "pair_unit_value",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": true,
|
||||||
|
"columnNames": [
|
||||||
|
"entityId"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [],
|
||||||
|
"foreignKeys": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"views": [],
|
||||||
|
"setupQueries": [
|
||||||
|
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
||||||
|
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '920913c194487fd80e7020d3606cf8da')"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Unitto is a unit converter for Android
|
||||||
|
* Copyright (c) 2023 Elshan Agaev
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sadellie.unitto.data.database
|
||||||
|
|
||||||
|
import androidx.room.Dao
|
||||||
|
import androidx.room.Insert
|
||||||
|
import androidx.room.OnConflictStrategy
|
||||||
|
import androidx.room.Query
|
||||||
|
|
||||||
|
@Dao
|
||||||
|
interface CurrencyRatesDao {
|
||||||
|
|
||||||
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
|
suspend fun insertRates(currencyRates: List<CurrencyRatesEntity>)
|
||||||
|
|
||||||
|
@Query("SELECT DISTINCT * FROM currency_rates WHERE timestamp = (SELECT MAX(timestamp) FROM currency_rates) AND base_unit_id = :baseId")
|
||||||
|
suspend fun getLatestRates(baseId: String): List<CurrencyRatesEntity>
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Unitto is a unit converter for Android
|
||||||
|
* Copyright (c) 2023 Elshan Agaev
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sadellie.unitto.data.database
|
||||||
|
|
||||||
|
import androidx.room.ColumnInfo
|
||||||
|
import androidx.room.Entity
|
||||||
|
import androidx.room.PrimaryKey
|
||||||
|
import java.math.BigDecimal
|
||||||
|
|
||||||
|
@Entity(tableName = "currency_rates")
|
||||||
|
class CurrencyRatesEntity(
|
||||||
|
@PrimaryKey(autoGenerate = true) val entityId: Int = 0,
|
||||||
|
@ColumnInfo(name = "base_unit_id") val baseUnitId: String,
|
||||||
|
@ColumnInfo(name = "timestamp") val date: Long,
|
||||||
|
@ColumnInfo(name = "pair_unit_id") val pairUnitId: String,
|
||||||
|
@ColumnInfo(name = "pair_unit_value") val pairUnitValue: BigDecimal?
|
||||||
|
)
|
@ -21,23 +21,29 @@ package com.sadellie.unitto.data.database
|
|||||||
import androidx.room.AutoMigration
|
import androidx.room.AutoMigration
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
|
import androidx.room.TypeConverters
|
||||||
|
import com.sadellie.unitto.data.database.converters.Converters
|
||||||
|
|
||||||
@Database(
|
@Database(
|
||||||
version = 4,
|
version = 5,
|
||||||
exportSchema = true,
|
exportSchema = true,
|
||||||
entities = [
|
entities = [
|
||||||
UnitsEntity::class,
|
UnitsEntity::class,
|
||||||
CalculatorHistoryEntity::class,
|
CalculatorHistoryEntity::class,
|
||||||
TimeZoneEntity::class
|
TimeZoneEntity::class,
|
||||||
|
CurrencyRatesEntity::class,
|
||||||
],
|
],
|
||||||
autoMigrations = [
|
autoMigrations = [
|
||||||
AutoMigration (from = 1, to = 2),
|
AutoMigration (from = 1, to = 2),
|
||||||
AutoMigration (from = 2, to = 3),
|
AutoMigration (from = 2, to = 3),
|
||||||
AutoMigration (from = 3, to = 4),
|
AutoMigration (from = 3, to = 4),
|
||||||
|
AutoMigration (from = 4, to = 5),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@TypeConverters(Converters::class)
|
||||||
abstract class UnittoDatabase : RoomDatabase() {
|
abstract class UnittoDatabase : RoomDatabase() {
|
||||||
abstract fun unitsDao(): UnitsDao
|
abstract fun unitsDao(): UnitsDao
|
||||||
abstract fun calculatorHistoryDao(): CalculatorHistoryDao
|
abstract fun calculatorHistoryDao(): CalculatorHistoryDao
|
||||||
abstract fun timeZoneDao(): TimeZoneDao
|
abstract fun timeZoneDao(): TimeZoneDao
|
||||||
|
abstract fun currencyRatesDao(): CurrencyRatesDao
|
||||||
}
|
}
|
||||||
|
@ -34,23 +34,12 @@ import javax.inject.Singleton
|
|||||||
@InstallIn(SingletonComponent::class)
|
@InstallIn(SingletonComponent::class)
|
||||||
@Module
|
@Module
|
||||||
class UnittoDatabaseModule {
|
class UnittoDatabaseModule {
|
||||||
/**
|
|
||||||
* Tells Hilt to use this method to get [UnitsDao]
|
|
||||||
*
|
|
||||||
* @param unittoDatabase Database for which we need DAO
|
|
||||||
* @return Singleton of [UnitsDao]
|
|
||||||
*/
|
|
||||||
@Provides
|
@Provides
|
||||||
fun provideUnitsDao(unittoDatabase: UnittoDatabase): UnitsDao {
|
fun provideUnitsDao(unittoDatabase: UnittoDatabase): UnitsDao {
|
||||||
return unittoDatabase.unitsDao()
|
return unittoDatabase.unitsDao()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Tells Hilt to use this method to get [CalculatorHistoryDao]
|
|
||||||
*
|
|
||||||
* @param unittoDatabase Database for which we need DAO
|
|
||||||
* @return Singleton of [CalculatorHistoryDao]
|
|
||||||
*/
|
|
||||||
@Provides
|
@Provides
|
||||||
fun provideCalculatorHistoryDao(unittoDatabase: UnittoDatabase): CalculatorHistoryDao {
|
fun provideCalculatorHistoryDao(unittoDatabase: UnittoDatabase): CalculatorHistoryDao {
|
||||||
return unittoDatabase.calculatorHistoryDao()
|
return unittoDatabase.calculatorHistoryDao()
|
||||||
@ -68,6 +57,11 @@ class UnittoDatabaseModule {
|
|||||||
// return unittoDatabase.timeZoneDao()
|
// return unittoDatabase.timeZoneDao()
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
fun provideCurrencyRatesDao(unittoDatabase: UnittoDatabase): CurrencyRatesDao {
|
||||||
|
return unittoDatabase.currencyRatesDao()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tells Hilt to use this method to get [UnittoDatabase]
|
* Tells Hilt to use this method to get [UnittoDatabase]
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Unitto is a unit converter for Android
|
||||||
|
* Copyright (c) 2023 Elshan Agaev
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sadellie.unitto.data.database.converters
|
||||||
|
|
||||||
|
import androidx.room.TypeConverter
|
||||||
|
import java.math.BigDecimal
|
||||||
|
|
||||||
|
class Converters {
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
fun stringToBigDecimal(value: String): BigDecimal = try {
|
||||||
|
BigDecimal(value)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
BigDecimal.ZERO
|
||||||
|
}
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
fun bigDecimalToString(value: BigDecimal?): String? = try {
|
||||||
|
value?.toPlainString()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -34,8 +34,6 @@ data class ReverseUnit(
|
|||||||
override val counter: Int = 0,
|
override val counter: Int = 0,
|
||||||
) : DefaultUnit {
|
) : DefaultUnit {
|
||||||
override fun convert(unitTo: DefaultUnit, value: BigDecimal): BigDecimal {
|
override fun convert(unitTo: DefaultUnit, value: BigDecimal): BigDecimal {
|
||||||
// Avoid division by zero
|
|
||||||
if (unitTo.basicUnit.compareTo(BigDecimal.ZERO) == 0) return BigDecimal.ZERO
|
|
||||||
|
|
||||||
return unitTo
|
return unitTo
|
||||||
.basicUnit
|
.basicUnit
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
package com.sadellie.unitto.data.units
|
package com.sadellie.unitto.data.units
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.util.Log
|
||||||
|
import com.sadellie.unitto.data.database.CurrencyRatesDao
|
||||||
|
import com.sadellie.unitto.data.database.CurrencyRatesEntity
|
||||||
import com.sadellie.unitto.data.database.UnitsDao
|
import com.sadellie.unitto.data.database.UnitsDao
|
||||||
import com.sadellie.unitto.data.database.UnitsEntity
|
import com.sadellie.unitto.data.database.UnitsEntity
|
||||||
import com.sadellie.unitto.data.model.UnitGroup
|
import com.sadellie.unitto.data.model.UnitGroup
|
||||||
@ -65,37 +68,39 @@ import kotlinx.coroutines.flow.mapLatest
|
|||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import java.math.BigDecimal
|
import java.math.BigDecimal
|
||||||
|
import java.time.LocalDate
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class UnitsRepository @Inject constructor(
|
class UnitsRepository @Inject constructor(
|
||||||
private val unitsDao: UnitsDao,
|
private val unitsDao: UnitsDao,
|
||||||
|
private val currencyRatesDao: CurrencyRatesDao,
|
||||||
@ApplicationContext private val mContext: Context,
|
@ApplicationContext private val mContext: Context,
|
||||||
) {
|
) {
|
||||||
private val myUnits = MutableStateFlow(
|
private val myUnits = MutableStateFlow(
|
||||||
lengthCollection +
|
lengthCollection +
|
||||||
currencyCollection +
|
currencyCollection +
|
||||||
massCollection +
|
massCollection +
|
||||||
speedCollection +
|
speedCollection +
|
||||||
temperatureCollection +
|
temperatureCollection +
|
||||||
areaCollection +
|
areaCollection +
|
||||||
timeCollection +
|
timeCollection +
|
||||||
volumeCollection +
|
volumeCollection +
|
||||||
dataCollection +
|
dataCollection +
|
||||||
pressureCollection +
|
pressureCollection +
|
||||||
accelerationCollection +
|
accelerationCollection +
|
||||||
energyCollection +
|
energyCollection +
|
||||||
powerCollection +
|
powerCollection +
|
||||||
angleCollection +
|
angleCollection +
|
||||||
dataTransferCollection +
|
dataTransferCollection +
|
||||||
fluxCollection +
|
fluxCollection +
|
||||||
numberBaseCollection +
|
numberBaseCollection +
|
||||||
electrostaticCapacitance +
|
electrostaticCapacitance +
|
||||||
prefixCollection +
|
prefixCollection +
|
||||||
forceCollection +
|
forceCollection +
|
||||||
torqueCollection +
|
torqueCollection +
|
||||||
flowRateCollection +
|
flowRateCollection +
|
||||||
luminanceCollection +
|
luminanceCollection +
|
||||||
fuelConsumptionCollection
|
fuelConsumptionCollection
|
||||||
)
|
)
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
@ -108,27 +113,31 @@ class UnitsRepository @Inject constructor(
|
|||||||
.mapLatest { basedList ->
|
.mapLatest { basedList ->
|
||||||
basedList.forEach { based ->
|
basedList.forEach { based ->
|
||||||
// Have to use a copy so that composable can detect changes
|
// Have to use a copy so that composable can detect changes
|
||||||
val updatedUnit = when(val foundUnit = getById(based.unitId)) {
|
val updatedUnit = when (val foundUnit = getById(based.unitId)) {
|
||||||
is NormalUnit -> foundUnit.copy(
|
is NormalUnit -> foundUnit.copy(
|
||||||
isFavorite = based.isFavorite,
|
isFavorite = based.isFavorite,
|
||||||
counter = based.frequency,
|
counter = based.frequency,
|
||||||
pairId = based.pairedUnitId
|
pairId = based.pairedUnitId
|
||||||
)
|
)
|
||||||
|
|
||||||
is NumberBaseUnit -> foundUnit.copy(
|
is NumberBaseUnit -> foundUnit.copy(
|
||||||
isFavorite = based.isFavorite,
|
isFavorite = based.isFavorite,
|
||||||
counter = based.frequency,
|
counter = based.frequency,
|
||||||
pairId = based.pairedUnitId
|
pairId = based.pairedUnitId
|
||||||
)
|
)
|
||||||
|
|
||||||
is ReverseUnit -> foundUnit.copy(
|
is ReverseUnit -> foundUnit.copy(
|
||||||
isFavorite = based.isFavorite,
|
isFavorite = based.isFavorite,
|
||||||
counter = based.frequency,
|
counter = based.frequency,
|
||||||
pairId = based.pairedUnitId
|
pairId = based.pairedUnitId
|
||||||
)
|
)
|
||||||
|
|
||||||
is FuelForward -> foundUnit.copy(
|
is FuelForward -> foundUnit.copy(
|
||||||
isFavorite = based.isFavorite,
|
isFavorite = based.isFavorite,
|
||||||
counter = based.frequency,
|
counter = based.frequency,
|
||||||
pairId = based.pairedUnitId
|
pairId = based.pairedUnitId
|
||||||
)
|
)
|
||||||
|
|
||||||
is FuelBackward -> foundUnit.copy(
|
is FuelBackward -> foundUnit.copy(
|
||||||
isFavorite = based.isFavorite,
|
isFavorite = based.isFavorite,
|
||||||
counter = based.frequency,
|
counter = based.frequency,
|
||||||
@ -220,23 +229,45 @@ class UnitsRepository @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun updateRates(unit: AbstractUnit) = withContext(Dispatchers.IO) {
|
suspend fun updateRates(unit: AbstractUnit): LocalDate? = withContext(Dispatchers.IO) {
|
||||||
val conversions: Map<String, BigDecimal> = CurrencyApi.service.getCurrencyPairs(unit.id).currency
|
try {
|
||||||
|
val conversions = CurrencyApi.service.getCurrencyPairs(unit.id)
|
||||||
|
val rates = conversions.currency
|
||||||
|
.map { (pairId, pairValue) ->
|
||||||
|
CurrencyRatesEntity(
|
||||||
|
baseUnitId = unit.id,
|
||||||
|
date = LocalDate.parse(conversions.date).toEpochDay(),
|
||||||
|
pairUnitId = pairId,
|
||||||
|
pairUnitValue = BigDecimal.valueOf(pairValue)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
currencyRatesDao.insertRates(rates)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.d("UnitsRepository", "Skipped update: $e")
|
||||||
|
}
|
||||||
|
val basedConversions = currencyRatesDao.getLatestRates(baseId = unit.id)
|
||||||
|
|
||||||
myUnits.update { item ->
|
myUnits.update { units ->
|
||||||
item.map {
|
units.map { localUnit ->
|
||||||
if (it.group != UnitGroup.CURRENCY) return@map it
|
if (localUnit.group != UnitGroup.CURRENCY) return@map localUnit
|
||||||
if (it !is NormalUnit) return@map it
|
if (localUnit !is ReverseUnit) return@map localUnit
|
||||||
|
|
||||||
val rate = conversions.getOrElse(it.id) { BigDecimal.ZERO }
|
val rate = basedConversions
|
||||||
|
.firstOrNull { localUnit.id == it.pairUnitId }
|
||||||
|
?.pairUnitValue ?: BigDecimal.ZERO
|
||||||
|
|
||||||
return@map if (rate > BigDecimal.ZERO) {
|
return@map if (rate > BigDecimal.ZERO) {
|
||||||
it.copy(basicUnit = rate)
|
localUnit.copy(basicUnit = rate)
|
||||||
} else {
|
} else {
|
||||||
it.copy(basicUnit = BigDecimal.ZERO)
|
localUnit.copy(basicUnit = BigDecimal.ZERO)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return@withContext basedConversions
|
||||||
|
.firstOrNull()
|
||||||
|
?.date
|
||||||
|
?.let { LocalDate.ofEpochDay(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun filterUnits(
|
fun filterUnits(
|
||||||
|
@ -19,221 +19,221 @@
|
|||||||
package com.sadellie.unitto.data.units.collections
|
package com.sadellie.unitto.data.units.collections
|
||||||
|
|
||||||
import com.sadellie.unitto.core.base.R
|
import com.sadellie.unitto.core.base.R
|
||||||
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
|
||||||
import com.sadellie.unitto.data.model.unit.NormalUnit
|
|
||||||
import com.sadellie.unitto.data.model.UnitGroup
|
import com.sadellie.unitto.data.model.UnitGroup
|
||||||
|
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
||||||
|
import com.sadellie.unitto.data.model.unit.ReverseUnit
|
||||||
import com.sadellie.unitto.data.units.MyUnitIDS
|
import com.sadellie.unitto.data.units.MyUnitIDS
|
||||||
import java.math.BigDecimal
|
import java.math.BigDecimal
|
||||||
|
|
||||||
internal val currencyCollection: List<AbstractUnit> by lazy {
|
internal val currencyCollection: List<AbstractUnit> by lazy {
|
||||||
listOf(
|
listOf(
|
||||||
NormalUnit(MyUnitIDS.currency_1inch, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_1inch, R.string.currency_1inch_short),
|
ReverseUnit(MyUnitIDS.currency_1inch, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_1inch, R.string.currency_1inch_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ada, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ada, R.string.currency_ada_short),
|
ReverseUnit(MyUnitIDS.currency_ada, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ada, R.string.currency_ada_short),
|
||||||
NormalUnit(MyUnitIDS.currency_aed, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aed, R.string.currency_aed_short),
|
ReverseUnit(MyUnitIDS.currency_aed, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_aed, R.string.currency_aed_short),
|
||||||
NormalUnit(MyUnitIDS.currency_afn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_afn, R.string.currency_afn_short),
|
ReverseUnit(MyUnitIDS.currency_afn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_afn, R.string.currency_afn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_algo, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_algo, R.string.currency_algo_short),
|
ReverseUnit(MyUnitIDS.currency_algo, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_algo, R.string.currency_algo_short),
|
||||||
NormalUnit(MyUnitIDS.currency_all, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_all, R.string.currency_all_short),
|
ReverseUnit(MyUnitIDS.currency_all, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_all, R.string.currency_all_short),
|
||||||
NormalUnit(MyUnitIDS.currency_amd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_amd, R.string.currency_amd_short),
|
ReverseUnit(MyUnitIDS.currency_amd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_amd, R.string.currency_amd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ang, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ang, R.string.currency_ang_short),
|
ReverseUnit(MyUnitIDS.currency_ang, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ang, R.string.currency_ang_short),
|
||||||
NormalUnit(MyUnitIDS.currency_aoa, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aoa, R.string.currency_aoa_short),
|
ReverseUnit(MyUnitIDS.currency_aoa, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_aoa, R.string.currency_aoa_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ars, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ars, R.string.currency_ars_short),
|
ReverseUnit(MyUnitIDS.currency_ars, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ars, R.string.currency_ars_short),
|
||||||
NormalUnit(MyUnitIDS.currency_atom, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_atom, R.string.currency_atom_short),
|
ReverseUnit(MyUnitIDS.currency_atom, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_atom, R.string.currency_atom_short),
|
||||||
NormalUnit(MyUnitIDS.currency_aud, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aud, R.string.currency_aud_short),
|
ReverseUnit(MyUnitIDS.currency_aud, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_aud, R.string.currency_aud_short),
|
||||||
NormalUnit(MyUnitIDS.currency_avax, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_avax, R.string.currency_avax_short),
|
ReverseUnit(MyUnitIDS.currency_avax, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_avax, R.string.currency_avax_short),
|
||||||
NormalUnit(MyUnitIDS.currency_awg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_awg, R.string.currency_awg_short),
|
ReverseUnit(MyUnitIDS.currency_awg, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_awg, R.string.currency_awg_short),
|
||||||
NormalUnit(MyUnitIDS.currency_azn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_azn, R.string.currency_azn_short),
|
ReverseUnit(MyUnitIDS.currency_azn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_azn, R.string.currency_azn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bam, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bam, R.string.currency_bam_short),
|
ReverseUnit(MyUnitIDS.currency_bam, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bam, R.string.currency_bam_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bbd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bbd, R.string.currency_bbd_short),
|
ReverseUnit(MyUnitIDS.currency_bbd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bbd, R.string.currency_bbd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bch, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bch, R.string.currency_bch_short),
|
ReverseUnit(MyUnitIDS.currency_bch, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bch, R.string.currency_bch_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bdt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bdt, R.string.currency_bdt_short),
|
ReverseUnit(MyUnitIDS.currency_bdt, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bdt, R.string.currency_bdt_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bgn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bgn, R.string.currency_bgn_short),
|
ReverseUnit(MyUnitIDS.currency_bgn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bgn, R.string.currency_bgn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bhd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bhd, R.string.currency_bhd_short),
|
ReverseUnit(MyUnitIDS.currency_bhd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bhd, R.string.currency_bhd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bif, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bif, R.string.currency_bif_short),
|
ReverseUnit(MyUnitIDS.currency_bif, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bif, R.string.currency_bif_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bmd, R.string.currency_bmd_short),
|
ReverseUnit(MyUnitIDS.currency_bmd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bmd, R.string.currency_bmd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bnb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bnb, R.string.currency_bnb_short),
|
ReverseUnit(MyUnitIDS.currency_bnb, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bnb, R.string.currency_bnb_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bnd, R.string.currency_bnd_short),
|
ReverseUnit(MyUnitIDS.currency_bnd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bnd, R.string.currency_bnd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bob, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bob, R.string.currency_bob_short),
|
ReverseUnit(MyUnitIDS.currency_bob, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bob, R.string.currency_bob_short),
|
||||||
NormalUnit(MyUnitIDS.currency_brl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_brl, R.string.currency_brl_short),
|
ReverseUnit(MyUnitIDS.currency_brl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_brl, R.string.currency_brl_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bsd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bsd, R.string.currency_bsd_short),
|
ReverseUnit(MyUnitIDS.currency_bsd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bsd, R.string.currency_bsd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_btc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_btc, R.string.currency_btc_short),
|
ReverseUnit(MyUnitIDS.currency_btc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_btc, R.string.currency_btc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_btn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_btn, R.string.currency_btn_short),
|
ReverseUnit(MyUnitIDS.currency_btn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_btn, R.string.currency_btn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_busd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_busd, R.string.currency_busd_short),
|
ReverseUnit(MyUnitIDS.currency_busd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_busd, R.string.currency_busd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bwp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bwp, R.string.currency_bwp_short),
|
ReverseUnit(MyUnitIDS.currency_bwp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bwp, R.string.currency_bwp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_byn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_byn, R.string.currency_byn_short),
|
ReverseUnit(MyUnitIDS.currency_byn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_byn, R.string.currency_byn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_byr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_byr, R.string.currency_byr_short),
|
ReverseUnit(MyUnitIDS.currency_byr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_byr, R.string.currency_byr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_bzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bzd, R.string.currency_bzd_short),
|
ReverseUnit(MyUnitIDS.currency_bzd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_bzd, R.string.currency_bzd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cad, R.string.currency_cad_short),
|
ReverseUnit(MyUnitIDS.currency_cad, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cad, R.string.currency_cad_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cdf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cdf, R.string.currency_cdf_short),
|
ReverseUnit(MyUnitIDS.currency_cdf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cdf, R.string.currency_cdf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_chf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_chf, R.string.currency_chf_short),
|
ReverseUnit(MyUnitIDS.currency_chf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_chf, R.string.currency_chf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_chz, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_chz, R.string.currency_chz_short),
|
ReverseUnit(MyUnitIDS.currency_chz, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_chz, R.string.currency_chz_short),
|
||||||
NormalUnit(MyUnitIDS.currency_clf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_clf, R.string.currency_clf_short),
|
ReverseUnit(MyUnitIDS.currency_clf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_clf, R.string.currency_clf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_clp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_clp, R.string.currency_clp_short),
|
ReverseUnit(MyUnitIDS.currency_clp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_clp, R.string.currency_clp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cny, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cny, R.string.currency_cny_short),
|
ReverseUnit(MyUnitIDS.currency_cny, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cny, R.string.currency_cny_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cop, R.string.currency_cop_short),
|
ReverseUnit(MyUnitIDS.currency_cop, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cop, R.string.currency_cop_short),
|
||||||
NormalUnit(MyUnitIDS.currency_crc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_crc, R.string.currency_crc_short),
|
ReverseUnit(MyUnitIDS.currency_crc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_crc, R.string.currency_crc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cro, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cro, R.string.currency_cro_short),
|
ReverseUnit(MyUnitIDS.currency_cro, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cro, R.string.currency_cro_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cuc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cuc, R.string.currency_cuc_short),
|
ReverseUnit(MyUnitIDS.currency_cuc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cuc, R.string.currency_cuc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cup, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cup, R.string.currency_cup_short),
|
ReverseUnit(MyUnitIDS.currency_cup, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cup, R.string.currency_cup_short),
|
||||||
NormalUnit(MyUnitIDS.currency_cve, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cve, R.string.currency_cve_short),
|
ReverseUnit(MyUnitIDS.currency_cve, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_cve, R.string.currency_cve_short),
|
||||||
NormalUnit(MyUnitIDS.currency_czk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_czk, R.string.currency_czk_short),
|
ReverseUnit(MyUnitIDS.currency_czk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_czk, R.string.currency_czk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_dai, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dai, R.string.currency_dai_short),
|
ReverseUnit(MyUnitIDS.currency_dai, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_dai, R.string.currency_dai_short),
|
||||||
NormalUnit(MyUnitIDS.currency_djf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_djf, R.string.currency_djf_short),
|
ReverseUnit(MyUnitIDS.currency_djf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_djf, R.string.currency_djf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_dkk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dkk, R.string.currency_dkk_short),
|
ReverseUnit(MyUnitIDS.currency_dkk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_dkk, R.string.currency_dkk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_doge, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_doge, R.string.currency_doge_short),
|
ReverseUnit(MyUnitIDS.currency_doge, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_doge, R.string.currency_doge_short),
|
||||||
NormalUnit(MyUnitIDS.currency_dop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dop, R.string.currency_dop_short),
|
ReverseUnit(MyUnitIDS.currency_dop, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_dop, R.string.currency_dop_short),
|
||||||
NormalUnit(MyUnitIDS.currency_dot, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dot, R.string.currency_dot_short),
|
ReverseUnit(MyUnitIDS.currency_dot, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_dot, R.string.currency_dot_short),
|
||||||
NormalUnit(MyUnitIDS.currency_dzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dzd, R.string.currency_dzd_short),
|
ReverseUnit(MyUnitIDS.currency_dzd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_dzd, R.string.currency_dzd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_egld, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_egld, R.string.currency_egld_short),
|
ReverseUnit(MyUnitIDS.currency_egld, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_egld, R.string.currency_egld_short),
|
||||||
NormalUnit(MyUnitIDS.currency_egp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_egp, R.string.currency_egp_short),
|
ReverseUnit(MyUnitIDS.currency_egp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_egp, R.string.currency_egp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_enj, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_enj, R.string.currency_enj_short),
|
ReverseUnit(MyUnitIDS.currency_enj, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_enj, R.string.currency_enj_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ern, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ern, R.string.currency_ern_short),
|
ReverseUnit(MyUnitIDS.currency_ern, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ern, R.string.currency_ern_short),
|
||||||
NormalUnit(MyUnitIDS.currency_etb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_etb, R.string.currency_etb_short),
|
ReverseUnit(MyUnitIDS.currency_etb, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_etb, R.string.currency_etb_short),
|
||||||
NormalUnit(MyUnitIDS.currency_etc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_etc, R.string.currency_etc_short),
|
ReverseUnit(MyUnitIDS.currency_etc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_etc, R.string.currency_etc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_eth, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_eth, R.string.currency_eth_short),
|
ReverseUnit(MyUnitIDS.currency_eth, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_eth, R.string.currency_eth_short),
|
||||||
NormalUnit(MyUnitIDS.currency_eur, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_eur, R.string.currency_eur_short),
|
ReverseUnit(MyUnitIDS.currency_eur, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_eur, R.string.currency_eur_short),
|
||||||
NormalUnit(MyUnitIDS.currency_fil, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fil, R.string.currency_fil_short),
|
ReverseUnit(MyUnitIDS.currency_fil, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_fil, R.string.currency_fil_short),
|
||||||
NormalUnit(MyUnitIDS.currency_fjd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fjd, R.string.currency_fjd_short),
|
ReverseUnit(MyUnitIDS.currency_fjd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_fjd, R.string.currency_fjd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_fkp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fkp, R.string.currency_fkp_short),
|
ReverseUnit(MyUnitIDS.currency_fkp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_fkp, R.string.currency_fkp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ftt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ftt, R.string.currency_ftt_short),
|
ReverseUnit(MyUnitIDS.currency_ftt, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ftt, R.string.currency_ftt_short),
|
||||||
NormalUnit(MyUnitIDS.currency_gbp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gbp, R.string.currency_gbp_short),
|
ReverseUnit(MyUnitIDS.currency_gbp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_gbp, R.string.currency_gbp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_gel, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gel, R.string.currency_gel_short),
|
ReverseUnit(MyUnitIDS.currency_gel, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_gel, R.string.currency_gel_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ggp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ggp, R.string.currency_ggp_short),
|
ReverseUnit(MyUnitIDS.currency_ggp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ggp, R.string.currency_ggp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ghs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ghs, R.string.currency_ghs_short),
|
ReverseUnit(MyUnitIDS.currency_ghs, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ghs, R.string.currency_ghs_short),
|
||||||
NormalUnit(MyUnitIDS.currency_gip, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gip, R.string.currency_gip_short),
|
ReverseUnit(MyUnitIDS.currency_gip, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_gip, R.string.currency_gip_short),
|
||||||
NormalUnit(MyUnitIDS.currency_gmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gmd, R.string.currency_gmd_short),
|
ReverseUnit(MyUnitIDS.currency_gmd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_gmd, R.string.currency_gmd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_gnf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gnf, R.string.currency_gnf_short),
|
ReverseUnit(MyUnitIDS.currency_gnf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_gnf, R.string.currency_gnf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_grt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_grt, R.string.currency_grt_short),
|
ReverseUnit(MyUnitIDS.currency_grt, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_grt, R.string.currency_grt_short),
|
||||||
NormalUnit(MyUnitIDS.currency_gtq, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gtq, R.string.currency_gtq_short),
|
ReverseUnit(MyUnitIDS.currency_gtq, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_gtq, R.string.currency_gtq_short),
|
||||||
NormalUnit(MyUnitIDS.currency_gyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gyd, R.string.currency_gyd_short),
|
ReverseUnit(MyUnitIDS.currency_gyd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_gyd, R.string.currency_gyd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_hkd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hkd, R.string.currency_hkd_short),
|
ReverseUnit(MyUnitIDS.currency_hkd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_hkd, R.string.currency_hkd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_hnl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hnl, R.string.currency_hnl_short),
|
ReverseUnit(MyUnitIDS.currency_hnl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_hnl, R.string.currency_hnl_short),
|
||||||
NormalUnit(MyUnitIDS.currency_hrk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hrk, R.string.currency_hrk_short),
|
ReverseUnit(MyUnitIDS.currency_hrk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_hrk, R.string.currency_hrk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_htg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_htg, R.string.currency_htg_short),
|
ReverseUnit(MyUnitIDS.currency_htg, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_htg, R.string.currency_htg_short),
|
||||||
NormalUnit(MyUnitIDS.currency_huf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_huf, R.string.currency_huf_short),
|
ReverseUnit(MyUnitIDS.currency_huf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_huf, R.string.currency_huf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_icp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_icp, R.string.currency_icp_short),
|
ReverseUnit(MyUnitIDS.currency_icp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_icp, R.string.currency_icp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_idr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_idr, R.string.currency_idr_short),
|
ReverseUnit(MyUnitIDS.currency_idr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_idr, R.string.currency_idr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ils, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ils, R.string.currency_ils_short),
|
ReverseUnit(MyUnitIDS.currency_ils, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ils, R.string.currency_ils_short),
|
||||||
NormalUnit(MyUnitIDS.currency_imp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_imp, R.string.currency_imp_short),
|
ReverseUnit(MyUnitIDS.currency_imp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_imp, R.string.currency_imp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_inj, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_inj, R.string.currency_inj_short),
|
ReverseUnit(MyUnitIDS.currency_inj, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_inj, R.string.currency_inj_short),
|
||||||
NormalUnit(MyUnitIDS.currency_inr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_inr, R.string.currency_inr_short),
|
ReverseUnit(MyUnitIDS.currency_inr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_inr, R.string.currency_inr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_iqd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_iqd, R.string.currency_iqd_short),
|
ReverseUnit(MyUnitIDS.currency_iqd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_iqd, R.string.currency_iqd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_irr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_irr, R.string.currency_irr_short),
|
ReverseUnit(MyUnitIDS.currency_irr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_irr, R.string.currency_irr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_isk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_isk, R.string.currency_isk_short),
|
ReverseUnit(MyUnitIDS.currency_isk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_isk, R.string.currency_isk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_jep, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jep, R.string.currency_jep_short),
|
ReverseUnit(MyUnitIDS.currency_jep, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_jep, R.string.currency_jep_short),
|
||||||
NormalUnit(MyUnitIDS.currency_jmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jmd, R.string.currency_jmd_short),
|
ReverseUnit(MyUnitIDS.currency_jmd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_jmd, R.string.currency_jmd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_jod, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jod, R.string.currency_jod_short),
|
ReverseUnit(MyUnitIDS.currency_jod, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_jod, R.string.currency_jod_short),
|
||||||
NormalUnit(MyUnitIDS.currency_jpy, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jpy, R.string.currency_jpy_short),
|
ReverseUnit(MyUnitIDS.currency_jpy, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_jpy, R.string.currency_jpy_short),
|
||||||
NormalUnit(MyUnitIDS.currency_kes, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kes, R.string.currency_kes_short),
|
ReverseUnit(MyUnitIDS.currency_kes, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_kes, R.string.currency_kes_short),
|
||||||
NormalUnit(MyUnitIDS.currency_kgs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kgs, R.string.currency_kgs_short),
|
ReverseUnit(MyUnitIDS.currency_kgs, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_kgs, R.string.currency_kgs_short),
|
||||||
NormalUnit(MyUnitIDS.currency_khr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_khr, R.string.currency_khr_short),
|
ReverseUnit(MyUnitIDS.currency_khr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_khr, R.string.currency_khr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_kmf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kmf, R.string.currency_kmf_short),
|
ReverseUnit(MyUnitIDS.currency_kmf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_kmf, R.string.currency_kmf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_kpw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kpw, R.string.currency_kpw_short),
|
ReverseUnit(MyUnitIDS.currency_kpw, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_kpw, R.string.currency_kpw_short),
|
||||||
NormalUnit(MyUnitIDS.currency_krw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_krw, R.string.currency_krw_short),
|
ReverseUnit(MyUnitIDS.currency_krw, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_krw, R.string.currency_krw_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ksm, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ksm, R.string.currency_ksm_short),
|
ReverseUnit(MyUnitIDS.currency_ksm, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ksm, R.string.currency_ksm_short),
|
||||||
NormalUnit(MyUnitIDS.currency_kwd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kwd, R.string.currency_kwd_short),
|
ReverseUnit(MyUnitIDS.currency_kwd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_kwd, R.string.currency_kwd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_kyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kyd, R.string.currency_kyd_short),
|
ReverseUnit(MyUnitIDS.currency_kyd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_kyd, R.string.currency_kyd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_kzt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kzt, R.string.currency_kzt_short),
|
ReverseUnit(MyUnitIDS.currency_kzt, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_kzt, R.string.currency_kzt_short),
|
||||||
NormalUnit(MyUnitIDS.currency_lak, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lak, R.string.currency_lak_short),
|
ReverseUnit(MyUnitIDS.currency_lak, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_lak, R.string.currency_lak_short),
|
||||||
NormalUnit(MyUnitIDS.currency_lbp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lbp, R.string.currency_lbp_short),
|
ReverseUnit(MyUnitIDS.currency_lbp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_lbp, R.string.currency_lbp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_link, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_link, R.string.currency_link_short),
|
ReverseUnit(MyUnitIDS.currency_link, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_link, R.string.currency_link_short),
|
||||||
NormalUnit(MyUnitIDS.currency_lkr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lkr, R.string.currency_lkr_short),
|
ReverseUnit(MyUnitIDS.currency_lkr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_lkr, R.string.currency_lkr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_lrd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lrd, R.string.currency_lrd_short),
|
ReverseUnit(MyUnitIDS.currency_lrd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_lrd, R.string.currency_lrd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_lsl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lsl, R.string.currency_lsl_short),
|
ReverseUnit(MyUnitIDS.currency_lsl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_lsl, R.string.currency_lsl_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ltc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ltc, R.string.currency_ltc_short),
|
ReverseUnit(MyUnitIDS.currency_ltc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ltc, R.string.currency_ltc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ltl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ltl, R.string.currency_ltl_short),
|
ReverseUnit(MyUnitIDS.currency_ltl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ltl, R.string.currency_ltl_short),
|
||||||
NormalUnit(MyUnitIDS.currency_luna, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_luna, R.string.currency_luna_short),
|
ReverseUnit(MyUnitIDS.currency_luna, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_luna, R.string.currency_luna_short),
|
||||||
NormalUnit(MyUnitIDS.currency_lvl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lvl, R.string.currency_lvl_short),
|
ReverseUnit(MyUnitIDS.currency_lvl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_lvl, R.string.currency_lvl_short),
|
||||||
NormalUnit(MyUnitIDS.currency_lyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lyd, R.string.currency_lyd_short),
|
ReverseUnit(MyUnitIDS.currency_lyd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_lyd, R.string.currency_lyd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mad, R.string.currency_mad_short),
|
ReverseUnit(MyUnitIDS.currency_mad, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mad, R.string.currency_mad_short),
|
||||||
NormalUnit(MyUnitIDS.currency_matic, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_matic, R.string.currency_matic_short),
|
ReverseUnit(MyUnitIDS.currency_matic, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_matic, R.string.currency_matic_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mdl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mdl, R.string.currency_mdl_short),
|
ReverseUnit(MyUnitIDS.currency_mdl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mdl, R.string.currency_mdl_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mga, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mga, R.string.currency_mga_short),
|
ReverseUnit(MyUnitIDS.currency_mga, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mga, R.string.currency_mga_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mkd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mkd, R.string.currency_mkd_short),
|
ReverseUnit(MyUnitIDS.currency_mkd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mkd, R.string.currency_mkd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mmk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mmk, R.string.currency_mmk_short),
|
ReverseUnit(MyUnitIDS.currency_mmk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mmk, R.string.currency_mmk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mnt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mnt, R.string.currency_mnt_short),
|
ReverseUnit(MyUnitIDS.currency_mnt, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mnt, R.string.currency_mnt_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mop, R.string.currency_mop_short),
|
ReverseUnit(MyUnitIDS.currency_mop, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mop, R.string.currency_mop_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mro, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mro, R.string.currency_mro_short),
|
ReverseUnit(MyUnitIDS.currency_mro, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mro, R.string.currency_mro_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mur, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mur, R.string.currency_mur_short),
|
ReverseUnit(MyUnitIDS.currency_mur, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mur, R.string.currency_mur_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mvr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mvr, R.string.currency_mvr_short),
|
ReverseUnit(MyUnitIDS.currency_mvr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mvr, R.string.currency_mvr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mwk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mwk, R.string.currency_mwk_short),
|
ReverseUnit(MyUnitIDS.currency_mwk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mwk, R.string.currency_mwk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mxn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mxn, R.string.currency_mxn_short),
|
ReverseUnit(MyUnitIDS.currency_mxn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mxn, R.string.currency_mxn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_myr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_myr, R.string.currency_myr_short),
|
ReverseUnit(MyUnitIDS.currency_myr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_myr, R.string.currency_myr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_mzn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mzn, R.string.currency_mzn_short),
|
ReverseUnit(MyUnitIDS.currency_mzn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_mzn, R.string.currency_mzn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_nad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nad, R.string.currency_nad_short),
|
ReverseUnit(MyUnitIDS.currency_nad, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_nad, R.string.currency_nad_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ngn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ngn, R.string.currency_ngn_short),
|
ReverseUnit(MyUnitIDS.currency_ngn, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ngn, R.string.currency_ngn_short),
|
||||||
NormalUnit(MyUnitIDS.currency_nio, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nio, R.string.currency_nio_short),
|
ReverseUnit(MyUnitIDS.currency_nio, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_nio, R.string.currency_nio_short),
|
||||||
NormalUnit(MyUnitIDS.currency_nok, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nok, R.string.currency_nok_short),
|
ReverseUnit(MyUnitIDS.currency_nok, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_nok, R.string.currency_nok_short),
|
||||||
NormalUnit(MyUnitIDS.currency_npr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_npr, R.string.currency_npr_short),
|
ReverseUnit(MyUnitIDS.currency_npr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_npr, R.string.currency_npr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_nzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nzd, R.string.currency_nzd_short),
|
ReverseUnit(MyUnitIDS.currency_nzd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_nzd, R.string.currency_nzd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_omr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_omr, R.string.currency_omr_short),
|
ReverseUnit(MyUnitIDS.currency_omr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_omr, R.string.currency_omr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_one, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_one, R.string.currency_one_short),
|
ReverseUnit(MyUnitIDS.currency_one, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_one, R.string.currency_one_short),
|
||||||
NormalUnit(MyUnitIDS.currency_pab, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pab, R.string.currency_pab_short),
|
ReverseUnit(MyUnitIDS.currency_pab, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_pab, R.string.currency_pab_short),
|
||||||
NormalUnit(MyUnitIDS.currency_pen, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pen, R.string.currency_pen_short),
|
ReverseUnit(MyUnitIDS.currency_pen, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_pen, R.string.currency_pen_short),
|
||||||
NormalUnit(MyUnitIDS.currency_pgk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pgk, R.string.currency_pgk_short),
|
ReverseUnit(MyUnitIDS.currency_pgk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_pgk, R.string.currency_pgk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_php, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_php, R.string.currency_php_short),
|
ReverseUnit(MyUnitIDS.currency_php, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_php, R.string.currency_php_short),
|
||||||
NormalUnit(MyUnitIDS.currency_pkr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pkr, R.string.currency_pkr_short),
|
ReverseUnit(MyUnitIDS.currency_pkr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_pkr, R.string.currency_pkr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_pln, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pln, R.string.currency_pln_short),
|
ReverseUnit(MyUnitIDS.currency_pln, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_pln, R.string.currency_pln_short),
|
||||||
NormalUnit(MyUnitIDS.currency_pyg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pyg, R.string.currency_pyg_short),
|
ReverseUnit(MyUnitIDS.currency_pyg, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_pyg, R.string.currency_pyg_short),
|
||||||
NormalUnit(MyUnitIDS.currency_qar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_qar, R.string.currency_qar_short),
|
ReverseUnit(MyUnitIDS.currency_qar, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_qar, R.string.currency_qar_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ron, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ron, R.string.currency_ron_short),
|
ReverseUnit(MyUnitIDS.currency_ron, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ron, R.string.currency_ron_short),
|
||||||
NormalUnit(MyUnitIDS.currency_rsd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rsd, R.string.currency_rsd_short),
|
ReverseUnit(MyUnitIDS.currency_rsd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_rsd, R.string.currency_rsd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_rub, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rub, R.string.currency_rub_short),
|
ReverseUnit(MyUnitIDS.currency_rub, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_rub, R.string.currency_rub_short),
|
||||||
NormalUnit(MyUnitIDS.currency_rwf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rwf, R.string.currency_rwf_short),
|
ReverseUnit(MyUnitIDS.currency_rwf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_rwf, R.string.currency_rwf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sar, R.string.currency_sar_short),
|
ReverseUnit(MyUnitIDS.currency_sar, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sar, R.string.currency_sar_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sbd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sbd, R.string.currency_sbd_short),
|
ReverseUnit(MyUnitIDS.currency_sbd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sbd, R.string.currency_sbd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_scr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_scr, R.string.currency_scr_short),
|
ReverseUnit(MyUnitIDS.currency_scr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_scr, R.string.currency_scr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sdg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sdg, R.string.currency_sdg_short),
|
ReverseUnit(MyUnitIDS.currency_sdg, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sdg, R.string.currency_sdg_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sek, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sek, R.string.currency_sek_short),
|
ReverseUnit(MyUnitIDS.currency_sek, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sek, R.string.currency_sek_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sgd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sgd, R.string.currency_sgd_short),
|
ReverseUnit(MyUnitIDS.currency_sgd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sgd, R.string.currency_sgd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_shib, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_shib, R.string.currency_shib_short),
|
ReverseUnit(MyUnitIDS.currency_shib, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_shib, R.string.currency_shib_short),
|
||||||
NormalUnit(MyUnitIDS.currency_shp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_shp, R.string.currency_shp_short),
|
ReverseUnit(MyUnitIDS.currency_shp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_shp, R.string.currency_shp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sll, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sll, R.string.currency_sll_short),
|
ReverseUnit(MyUnitIDS.currency_sll, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sll, R.string.currency_sll_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sol, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sol, R.string.currency_sol_short),
|
ReverseUnit(MyUnitIDS.currency_sol, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sol, R.string.currency_sol_short),
|
||||||
NormalUnit(MyUnitIDS.currency_sos, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sos, R.string.currency_sos_short),
|
ReverseUnit(MyUnitIDS.currency_sos, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_sos, R.string.currency_sos_short),
|
||||||
NormalUnit(MyUnitIDS.currency_srd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_srd, R.string.currency_srd_short),
|
ReverseUnit(MyUnitIDS.currency_srd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_srd, R.string.currency_srd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_std, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_std, R.string.currency_std_short),
|
ReverseUnit(MyUnitIDS.currency_std, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_std, R.string.currency_std_short),
|
||||||
NormalUnit(MyUnitIDS.currency_svc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_svc, R.string.currency_svc_short),
|
ReverseUnit(MyUnitIDS.currency_svc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_svc, R.string.currency_svc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_syp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_syp, R.string.currency_syp_short),
|
ReverseUnit(MyUnitIDS.currency_syp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_syp, R.string.currency_syp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_szl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_szl, R.string.currency_szl_short),
|
ReverseUnit(MyUnitIDS.currency_szl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_szl, R.string.currency_szl_short),
|
||||||
NormalUnit(MyUnitIDS.currency_thb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_thb, R.string.currency_thb_short),
|
ReverseUnit(MyUnitIDS.currency_thb, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_thb, R.string.currency_thb_short),
|
||||||
NormalUnit(MyUnitIDS.currency_theta, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_theta, R.string.currency_theta_short),
|
ReverseUnit(MyUnitIDS.currency_theta, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_theta, R.string.currency_theta_short),
|
||||||
NormalUnit(MyUnitIDS.currency_tjs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tjs, R.string.currency_tjs_short),
|
ReverseUnit(MyUnitIDS.currency_tjs, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_tjs, R.string.currency_tjs_short),
|
||||||
NormalUnit(MyUnitIDS.currency_tmt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tmt, R.string.currency_tmt_short),
|
ReverseUnit(MyUnitIDS.currency_tmt, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_tmt, R.string.currency_tmt_short),
|
||||||
NormalUnit(MyUnitIDS.currency_tnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tnd, R.string.currency_tnd_short),
|
ReverseUnit(MyUnitIDS.currency_tnd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_tnd, R.string.currency_tnd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_top, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_top, R.string.currency_top_short),
|
ReverseUnit(MyUnitIDS.currency_top, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_top, R.string.currency_top_short),
|
||||||
NormalUnit(MyUnitIDS.currency_trx, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_trx, R.string.currency_trx_short),
|
ReverseUnit(MyUnitIDS.currency_trx, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_trx, R.string.currency_trx_short),
|
||||||
NormalUnit(MyUnitIDS.currency_try, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_try, R.string.currency_try_short),
|
ReverseUnit(MyUnitIDS.currency_try, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_try, R.string.currency_try_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ttd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ttd, R.string.currency_ttd_short),
|
ReverseUnit(MyUnitIDS.currency_ttd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ttd, R.string.currency_ttd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_twd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_twd, R.string.currency_twd_short),
|
ReverseUnit(MyUnitIDS.currency_twd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_twd, R.string.currency_twd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_tzs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tzs, R.string.currency_tzs_short),
|
ReverseUnit(MyUnitIDS.currency_tzs, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_tzs, R.string.currency_tzs_short),
|
||||||
NormalUnit(MyUnitIDS.currency_uah, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uah, R.string.currency_uah_short),
|
ReverseUnit(MyUnitIDS.currency_uah, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_uah, R.string.currency_uah_short),
|
||||||
NormalUnit(MyUnitIDS.currency_ugx, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ugx, R.string.currency_ugx_short),
|
ReverseUnit(MyUnitIDS.currency_ugx, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_ugx, R.string.currency_ugx_short),
|
||||||
NormalUnit(MyUnitIDS.currency_uni, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uni, R.string.currency_uni_short),
|
ReverseUnit(MyUnitIDS.currency_uni, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_uni, R.string.currency_uni_short),
|
||||||
NormalUnit(MyUnitIDS.currency_usd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usd, R.string.currency_usd_short),
|
ReverseUnit(MyUnitIDS.currency_usd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_usd, R.string.currency_usd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_usdc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usdc, R.string.currency_usdc_short),
|
ReverseUnit(MyUnitIDS.currency_usdc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_usdc, R.string.currency_usdc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_usdt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usdt, R.string.currency_usdt_short),
|
ReverseUnit(MyUnitIDS.currency_usdt, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_usdt, R.string.currency_usdt_short),
|
||||||
NormalUnit(MyUnitIDS.currency_uyu, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uyu, R.string.currency_uyu_short),
|
ReverseUnit(MyUnitIDS.currency_uyu, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_uyu, R.string.currency_uyu_short),
|
||||||
NormalUnit(MyUnitIDS.currency_uzs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uzs, R.string.currency_uzs_short),
|
ReverseUnit(MyUnitIDS.currency_uzs, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_uzs, R.string.currency_uzs_short),
|
||||||
NormalUnit(MyUnitIDS.currency_vef, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vef, R.string.currency_vef_short),
|
ReverseUnit(MyUnitIDS.currency_vef, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_vef, R.string.currency_vef_short),
|
||||||
NormalUnit(MyUnitIDS.currency_vet, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vet, R.string.currency_vet_short),
|
ReverseUnit(MyUnitIDS.currency_vet, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_vet, R.string.currency_vet_short),
|
||||||
NormalUnit(MyUnitIDS.currency_vnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vnd, R.string.currency_vnd_short),
|
ReverseUnit(MyUnitIDS.currency_vnd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_vnd, R.string.currency_vnd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_vuv, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vuv, R.string.currency_vuv_short),
|
ReverseUnit(MyUnitIDS.currency_vuv, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_vuv, R.string.currency_vuv_short),
|
||||||
NormalUnit(MyUnitIDS.currency_wbtc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_wbtc, R.string.currency_wbtc_short),
|
ReverseUnit(MyUnitIDS.currency_wbtc, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_wbtc, R.string.currency_wbtc_short),
|
||||||
NormalUnit(MyUnitIDS.currency_wst, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_wst, R.string.currency_wst_short),
|
ReverseUnit(MyUnitIDS.currency_wst, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_wst, R.string.currency_wst_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xaf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xaf, R.string.currency_xaf_short),
|
ReverseUnit(MyUnitIDS.currency_xaf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xaf, R.string.currency_xaf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xag, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xag, R.string.currency_xag_short),
|
ReverseUnit(MyUnitIDS.currency_xag, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xag, R.string.currency_xag_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xau, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xau, R.string.currency_xau_short),
|
ReverseUnit(MyUnitIDS.currency_xau, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xau, R.string.currency_xau_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xcd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xcd, R.string.currency_xcd_short),
|
ReverseUnit(MyUnitIDS.currency_xcd, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xcd, R.string.currency_xcd_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xdr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xdr, R.string.currency_xdr_short),
|
ReverseUnit(MyUnitIDS.currency_xdr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xdr, R.string.currency_xdr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xlm, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xlm, R.string.currency_xlm_short),
|
ReverseUnit(MyUnitIDS.currency_xlm, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xlm, R.string.currency_xlm_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xmr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xmr, R.string.currency_xmr_short),
|
ReverseUnit(MyUnitIDS.currency_xmr, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xmr, R.string.currency_xmr_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xof, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xof, R.string.currency_xof_short),
|
ReverseUnit(MyUnitIDS.currency_xof, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xof, R.string.currency_xof_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xpf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xpf, R.string.currency_xpf_short),
|
ReverseUnit(MyUnitIDS.currency_xpf, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xpf, R.string.currency_xpf_short),
|
||||||
NormalUnit(MyUnitIDS.currency_xrp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xrp, R.string.currency_xrp_short),
|
ReverseUnit(MyUnitIDS.currency_xrp, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_xrp, R.string.currency_xrp_short),
|
||||||
NormalUnit(MyUnitIDS.currency_yer, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_yer, R.string.currency_yer_short),
|
ReverseUnit(MyUnitIDS.currency_yer, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_yer, R.string.currency_yer_short),
|
||||||
NormalUnit(MyUnitIDS.currency_zar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zar, R.string.currency_zar_short),
|
ReverseUnit(MyUnitIDS.currency_zar, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_zar, R.string.currency_zar_short),
|
||||||
NormalUnit(MyUnitIDS.currency_zmk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zmk, R.string.currency_zmk_short),
|
ReverseUnit(MyUnitIDS.currency_zmk, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_zmk, R.string.currency_zmk_short),
|
||||||
NormalUnit(MyUnitIDS.currency_zmw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zmw, R.string.currency_zmw_short),
|
ReverseUnit(MyUnitIDS.currency_zmw, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_zmw, R.string.currency_zmw_short),
|
||||||
NormalUnit(MyUnitIDS.currency_zwl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zwl, R.string.currency_zwl_short),
|
ReverseUnit(MyUnitIDS.currency_zwl, BigDecimal.ZERO, UnitGroup.CURRENCY, R.string.currency_zwl, R.string.currency_zwl_short),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ package com.sadellie.unitto.data.units.remote
|
|||||||
|
|
||||||
import com.squareup.moshi.FromJson
|
import com.squareup.moshi.FromJson
|
||||||
import com.squareup.moshi.ToJson
|
import com.squareup.moshi.ToJson
|
||||||
import java.math.BigDecimal
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a response object from currency-api
|
* Represents a response object from currency-api
|
||||||
@ -30,7 +29,7 @@ import java.math.BigDecimal
|
|||||||
*/
|
*/
|
||||||
data class CurrencyUnitResponse(
|
data class CurrencyUnitResponse(
|
||||||
val date: String,
|
val date: String,
|
||||||
val currency: Map<String, BigDecimal>
|
val currency: Map<String, Double>
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,12 +41,9 @@ internal class CurrencyAdapter {
|
|||||||
|
|
||||||
@Suppress("UNUSED", "UNCHECKED_CAST")
|
@Suppress("UNUSED", "UNCHECKED_CAST")
|
||||||
@FromJson fun fromJson(response: Map<String, Any>): CurrencyUnitResponse {
|
@FromJson fun fromJson(response: Map<String, Any>): CurrencyUnitResponse {
|
||||||
val pairsBD: Map<String, BigDecimal> = (response[response.keys.elementAt(1)] as Map<String, Double>)
|
|
||||||
.mapValues { it.value.toBigDecimal() }
|
|
||||||
|
|
||||||
return CurrencyUnitResponse(
|
return CurrencyUnitResponse(
|
||||||
date = response["date"] as String,
|
date = response["date"] as String,
|
||||||
currency = pairsBD
|
currency = (response[response.keys.elementAt(1)]) as Map<String, Double>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ import androidx.compose.material3.Text
|
|||||||
import androidx.compose.material3.TopAppBarDefaults
|
import androidx.compose.material3.TopAppBarDefaults
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
@ -77,6 +78,7 @@ import com.sadellie.unitto.core.ui.common.UnittoScreenWithTopBar
|
|||||||
import com.sadellie.unitto.core.ui.common.textfield.ExpressionTextField
|
import com.sadellie.unitto.core.ui.common.textfield.ExpressionTextField
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
|
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.UnformattedTextField
|
import com.sadellie.unitto.core.ui.common.textfield.UnformattedTextField
|
||||||
|
import com.sadellie.unitto.core.ui.datetime.UnittoDateTimeFormatter
|
||||||
import com.sadellie.unitto.data.common.format
|
import com.sadellie.unitto.data.common.format
|
||||||
import com.sadellie.unitto.data.model.UnitGroup
|
import com.sadellie.unitto.data.model.UnitGroup
|
||||||
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
||||||
@ -285,8 +287,13 @@ private fun Default(
|
|||||||
TextFieldValue(uiState.calculation?.format(uiState.scale, uiState.outputFormat) ?: "")
|
TextFieldValue(uiState.calculation?.format(uiState.scale, uiState.outputFormat) ?: "")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val connection by connectivityState()
|
val connection by connectivityState()
|
||||||
|
val lastUpdate by remember(uiState) {
|
||||||
|
derivedStateOf {
|
||||||
|
if (uiState.currencyRateUpdateState !is CurrencyRateUpdateState.Ready) return@derivedStateOf null
|
||||||
|
uiState.currencyRateUpdateState.date.format(UnittoDateTimeFormatter.weekDayMonthYear)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LaunchedEffect(connection) {
|
LaunchedEffect(connection) {
|
||||||
if ((connection == ConnectionState.Available) and (uiState.result == ConverterResult.Error)) {
|
if ((connection == ConnectionState.Available) and (uiState.result == ConverterResult.Error)) {
|
||||||
@ -301,6 +308,23 @@ private fun Default(
|
|||||||
ColumnWithConstraints(modifier = contentModifier) {
|
ColumnWithConstraints(modifier = contentModifier) {
|
||||||
val textFieldModifier = Modifier.weight(2f)
|
val textFieldModifier = Modifier.weight(2f)
|
||||||
|
|
||||||
|
AnimatedVisibility(
|
||||||
|
visible = lastUpdate != null,
|
||||||
|
enter = expandVertically() + fadeIn(),
|
||||||
|
exit = shrinkVertically() + fadeOut(),
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
modifier = Modifier
|
||||||
|
.align(Alignment.CenterHorizontally)
|
||||||
|
.clip(RoundedCornerShape(50))
|
||||||
|
.background(MaterialTheme.colorScheme.surfaceVariant)
|
||||||
|
.fillMaxWidth(),
|
||||||
|
text = lastUpdate.orEmpty(),
|
||||||
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
|
textAlign = TextAlign.Center
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
ExpressionTextField(
|
ExpressionTextField(
|
||||||
modifier = textFieldModifier,
|
modifier = textFieldModifier,
|
||||||
minRatio = 0.7f,
|
minRatio = 0.7f,
|
||||||
|
@ -45,6 +45,7 @@ internal sealed class UnitConverterUIState {
|
|||||||
val scale: Int,
|
val scale: Int,
|
||||||
val outputFormat: Int,
|
val outputFormat: Int,
|
||||||
val formatTime: Boolean,
|
val formatTime: Boolean,
|
||||||
|
val currencyRateUpdateState: CurrencyRateUpdateState,
|
||||||
) : UnitConverterUIState()
|
) : UnitConverterUIState()
|
||||||
|
|
||||||
data class NumberBase(
|
data class NumberBase(
|
||||||
|
@ -26,15 +26,15 @@ import com.sadellie.unitto.core.base.Token
|
|||||||
import com.sadellie.unitto.core.ui.common.textfield.AllFormatterSymbols
|
import com.sadellie.unitto.core.ui.common.textfield.AllFormatterSymbols
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.addTokens
|
import com.sadellie.unitto.core.ui.common.textfield.addTokens
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.deleteTokens
|
import com.sadellie.unitto.core.ui.common.textfield.deleteTokens
|
||||||
|
import com.sadellie.unitto.data.common.combine
|
||||||
import com.sadellie.unitto.data.common.isExpression
|
import com.sadellie.unitto.data.common.isExpression
|
||||||
|
import com.sadellie.unitto.data.common.stateIn
|
||||||
import com.sadellie.unitto.data.model.UnitGroup
|
import com.sadellie.unitto.data.model.UnitGroup
|
||||||
import com.sadellie.unitto.data.model.UnitsListSorting
|
import com.sadellie.unitto.data.model.UnitsListSorting
|
||||||
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
||||||
import com.sadellie.unitto.data.model.unit.DefaultUnit
|
import com.sadellie.unitto.data.model.unit.DefaultUnit
|
||||||
import com.sadellie.unitto.data.model.unit.NumberBaseUnit
|
import com.sadellie.unitto.data.model.unit.NumberBaseUnit
|
||||||
import com.sadellie.unitto.data.units.UnitsRepository
|
import com.sadellie.unitto.data.units.UnitsRepository
|
||||||
import com.sadellie.unitto.data.common.combine
|
|
||||||
import com.sadellie.unitto.data.common.stateIn
|
|
||||||
import com.sadellie.unitto.data.userprefs.UserPreferencesRepository
|
import com.sadellie.unitto.data.userprefs.UserPreferencesRepository
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import io.github.sadellie.evaluatto.Expression
|
import io.github.sadellie.evaluatto.Expression
|
||||||
@ -60,8 +60,6 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
private val unitsRepo: UnitsRepository,
|
private val unitsRepo: UnitsRepository,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
enum class CurrencyRateUpdateState { READY, LOADING, ERROR }
|
|
||||||
|
|
||||||
private val _input = MutableStateFlow(TextFieldValue())
|
private val _input = MutableStateFlow(TextFieldValue())
|
||||||
private val _calculation = MutableStateFlow<BigDecimal?>(null)
|
private val _calculation = MutableStateFlow<BigDecimal?>(null)
|
||||||
private val _result = MutableStateFlow<ConverterResult>(ConverterResult.Loading)
|
private val _result = MutableStateFlow<ConverterResult>(ConverterResult.Loading)
|
||||||
@ -70,7 +68,7 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
|
|
||||||
private val _leftSideUIState = MutableStateFlow(LeftSideUIState())
|
private val _leftSideUIState = MutableStateFlow(LeftSideUIState())
|
||||||
private val _rightSideUIState = MutableStateFlow(RightSideUIState())
|
private val _rightSideUIState = MutableStateFlow(RightSideUIState())
|
||||||
private val _loadingCurrencies = MutableStateFlow(CurrencyRateUpdateState.READY)
|
private val _currenciesState = MutableStateFlow<CurrencyRateUpdateState>(CurrencyRateUpdateState.Loading)
|
||||||
private var _loadCurrenciesJob: Job? = null
|
private var _loadCurrenciesJob: Job? = null
|
||||||
|
|
||||||
val converterUiState: StateFlow<UnitConverterUIState> = combine(
|
val converterUiState: StateFlow<UnitConverterUIState> = combine(
|
||||||
@ -80,8 +78,8 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
_unitFrom,
|
_unitFrom,
|
||||||
_unitTo,
|
_unitTo,
|
||||||
userPrefsRepository.converterPrefs,
|
userPrefsRepository.converterPrefs,
|
||||||
_loadingCurrencies
|
_currenciesState
|
||||||
) { input, calculation, result, unitFrom, unitTo, prefs, _ ->
|
) { input, calculation, result, unitFrom, unitTo, prefs, currenciesState ->
|
||||||
return@combine when {
|
return@combine when {
|
||||||
(unitFrom is DefaultUnit) and (unitTo is DefaultUnit) -> {
|
(unitFrom is DefaultUnit) and (unitTo is DefaultUnit) -> {
|
||||||
UnitConverterUIState.Default(
|
UnitConverterUIState.Default(
|
||||||
@ -96,6 +94,7 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
scale = prefs.precision,
|
scale = prefs.precision,
|
||||||
outputFormat = prefs.outputFormat,
|
outputFormat = prefs.outputFormat,
|
||||||
formatTime = prefs.unitConverterFormatTime,
|
formatTime = prefs.unitConverterFormatTime,
|
||||||
|
currencyRateUpdateState = currenciesState
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
(unitFrom is NumberBaseUnit) and (unitTo is NumberBaseUnit) -> {
|
(unitFrom is NumberBaseUnit) and (unitTo is NumberBaseUnit) -> {
|
||||||
@ -111,16 +110,16 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onEach { ui ->
|
.onEach { ui ->
|
||||||
when (_loadingCurrencies.value) {
|
when (_currenciesState.value) {
|
||||||
CurrencyRateUpdateState.LOADING -> {
|
is CurrencyRateUpdateState.Loading -> {
|
||||||
_result.update { ConverterResult.Loading }
|
_result.update { ConverterResult.Loading }
|
||||||
return@onEach
|
return@onEach
|
||||||
}
|
}
|
||||||
CurrencyRateUpdateState.ERROR -> {
|
is CurrencyRateUpdateState.Error -> {
|
||||||
_result.update { ConverterResult.Error }
|
_result.update { ConverterResult.Error }
|
||||||
return@onEach
|
return@onEach
|
||||||
}
|
}
|
||||||
CurrencyRateUpdateState.READY -> {}
|
is CurrencyRateUpdateState.Ready, is CurrencyRateUpdateState.Nothing -> {}
|
||||||
}
|
}
|
||||||
|
|
||||||
when (ui) {
|
when (ui) {
|
||||||
@ -176,8 +175,9 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
_calculation,
|
_calculation,
|
||||||
_rightSideUIState,
|
_rightSideUIState,
|
||||||
userPrefsRepository.converterPrefs,
|
userPrefsRepository.converterPrefs,
|
||||||
unitsRepo.allUnits
|
_currenciesState,
|
||||||
) { unitFrom, unitTo, input, calculation, ui, prefs, _ ->
|
unitsRepo.allUnits,
|
||||||
|
) { unitFrom, unitTo, input, calculation, ui, prefs, currenciesState, _ ->
|
||||||
return@combine ui.copy(
|
return@combine ui.copy(
|
||||||
unitFrom = unitFrom,
|
unitFrom = unitFrom,
|
||||||
unitTo = unitTo,
|
unitTo = unitTo,
|
||||||
@ -186,7 +186,8 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
input = calculation?.toPlainString() ?: input.text,
|
input = calculation?.toPlainString() ?: input.text,
|
||||||
scale = prefs.precision,
|
scale = prefs.precision,
|
||||||
outputFormat = prefs.outputFormat,
|
outputFormat = prefs.outputFormat,
|
||||||
formatterSymbols = AllFormatterSymbols.getById(prefs.separator)
|
formatterSymbols = AllFormatterSymbols.getById(prefs.separator),
|
||||||
|
currencyRateUpdateState = currenciesState
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.onEach {
|
.onEach {
|
||||||
@ -206,7 +207,7 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
.also { oldUnitFrom -> _unitTo.update { oldUnitFrom } }
|
.also { oldUnitFrom -> _unitTo.update { oldUnitFrom } }
|
||||||
|
|
||||||
_loadCurrenciesJob?.cancel()
|
_loadCurrenciesJob?.cancel()
|
||||||
_loadingCurrencies.update { CurrencyRateUpdateState.READY }
|
_currenciesState.update { CurrencyRateUpdateState.Nothing }
|
||||||
_unitFrom.value?.let {
|
_unitFrom.value?.let {
|
||||||
if (it.group == UnitGroup.CURRENCY) updateCurrencyRates(it)
|
if (it.group == UnitGroup.CURRENCY) updateCurrencyRates(it)
|
||||||
}
|
}
|
||||||
@ -230,14 +231,15 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
fun updateCurrencyRates(unit: AbstractUnit) {
|
fun updateCurrencyRates(unit: AbstractUnit) {
|
||||||
_loadCurrenciesJob = viewModelScope.launch(Dispatchers.IO) {
|
_loadCurrenciesJob = viewModelScope.launch(Dispatchers.IO) {
|
||||||
try {
|
try {
|
||||||
_loadingCurrencies.update { CurrencyRateUpdateState.LOADING }
|
_currenciesState.update { CurrencyRateUpdateState.Loading }
|
||||||
unitsRepo.updateRates(unit)
|
val updateDate = unitsRepo.updateRates(unit) ?: throw Exception("Empty cache")
|
||||||
|
|
||||||
// Set to fresh objects with updated basic unit values
|
// Set to fresh objects with updated basic unit values
|
||||||
_unitFrom.update { unitsRepo.getById(it!!.id) }
|
_unitFrom.update { unitsRepo.getById(it!!.id) }
|
||||||
_unitTo.update { unitsRepo.getById(it!!.id) }
|
_unitTo.update { unitsRepo.getById(it!!.id) }
|
||||||
_loadingCurrencies.update { CurrencyRateUpdateState.READY }
|
_currenciesState.update { CurrencyRateUpdateState.Ready(updateDate) }
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
_loadingCurrencies.update { CurrencyRateUpdateState.ERROR }
|
_currenciesState.update { CurrencyRateUpdateState.Error }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -253,7 +255,7 @@ internal class ConverterViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
_loadCurrenciesJob?.cancel()
|
_loadCurrenciesJob?.cancel()
|
||||||
_loadingCurrencies.update { CurrencyRateUpdateState.READY }
|
_currenciesState.update { CurrencyRateUpdateState.Nothing }
|
||||||
if (unit.group == UnitGroup.CURRENCY) updateCurrencyRates(unit)
|
if (unit.group == UnitGroup.CURRENCY) updateCurrencyRates(unit)
|
||||||
|
|
||||||
_unitFrom.update {
|
_unitFrom.update {
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Unitto is a unit converter for Android
|
||||||
|
* Copyright (c) 2023 Elshan Agaev
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sadellie.unitto.feature.converter
|
||||||
|
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
internal sealed class CurrencyRateUpdateState {
|
||||||
|
data object Loading : CurrencyRateUpdateState()
|
||||||
|
data object Error : CurrencyRateUpdateState()
|
||||||
|
data class Ready(val date: LocalDate) : CurrencyRateUpdateState()
|
||||||
|
data object Nothing : CurrencyRateUpdateState()
|
||||||
|
}
|
@ -38,6 +38,7 @@ import com.sadellie.unitto.core.ui.common.UnittoSearchBar
|
|||||||
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
|
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.formatExpression
|
import com.sadellie.unitto.core.ui.common.textfield.formatExpression
|
||||||
import com.sadellie.unitto.data.common.format
|
import com.sadellie.unitto.data.common.format
|
||||||
|
import com.sadellie.unitto.data.model.UnitGroup
|
||||||
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
import com.sadellie.unitto.data.model.unit.AbstractUnit
|
||||||
import com.sadellie.unitto.data.model.unit.DefaultUnit
|
import com.sadellie.unitto.data.model.unit.DefaultUnit
|
||||||
import com.sadellie.unitto.data.model.unit.NumberBaseUnit
|
import com.sadellie.unitto.data.model.unit.NumberBaseUnit
|
||||||
@ -120,7 +121,8 @@ private fun RightSideScreen(
|
|||||||
shortName = stringResource(it.shortName),
|
shortName = stringResource(it.shortName),
|
||||||
scale = uiState.scale,
|
scale = uiState.scale,
|
||||||
outputFormat = uiState.outputFormat,
|
outputFormat = uiState.outputFormat,
|
||||||
formatterSymbols = uiState.formatterSymbols
|
formatterSymbols = uiState.formatterSymbols,
|
||||||
|
readyCurrencies = uiState.currencyRateUpdateState is CurrencyRateUpdateState.Ready,
|
||||||
),
|
),
|
||||||
isFavorite = it.isFavorite,
|
isFavorite = it.isFavorite,
|
||||||
isSelected = it.id == uiState.unitTo?.id,
|
isSelected = it.id == uiState.unitTo?.id,
|
||||||
@ -144,9 +146,14 @@ private fun formatUnitToSupportLabel(
|
|||||||
shortName: String,
|
shortName: String,
|
||||||
scale: Int,
|
scale: Int,
|
||||||
outputFormat: Int,
|
outputFormat: Int,
|
||||||
formatterSymbols: FormatterSymbols
|
formatterSymbols: FormatterSymbols,
|
||||||
|
readyCurrencies: Boolean,
|
||||||
): String {
|
): String {
|
||||||
try {
|
try {
|
||||||
|
if ((unitFrom?.group == UnitGroup.CURRENCY) and !readyCurrencies) {
|
||||||
|
return shortName
|
||||||
|
}
|
||||||
|
|
||||||
if ((unitFrom is DefaultUnit) and (unitTo is DefaultUnit)) {
|
if ((unitFrom is DefaultUnit) and (unitTo is DefaultUnit)) {
|
||||||
unitFrom as DefaultUnit
|
unitFrom as DefaultUnit
|
||||||
unitTo as DefaultUnit
|
unitTo as DefaultUnit
|
||||||
|
@ -36,5 +36,6 @@ internal data class RightSideUIState(
|
|||||||
val input: String = "",
|
val input: String = "",
|
||||||
val scale: Int = 3,
|
val scale: Int = 3,
|
||||||
val outputFormat: Int = OutputFormat.PLAIN,
|
val outputFormat: Int = OutputFormat.PLAIN,
|
||||||
val formatterSymbols: FormatterSymbols = FormatterSymbols.Spaces
|
val formatterSymbols: FormatterSymbols = FormatterSymbols.Spaces,
|
||||||
|
val currencyRateUpdateState: CurrencyRateUpdateState = CurrencyRateUpdateState.Nothing
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user