Skip to content

Commit 50b5d61

Browse files
committed
Try to work around some Coingecko API issues.
Added coins: Aptos, Arbitrum, Immutable, Kaspa, Lido DAO, NEXO, Optimism, and Rocket Pool. Added BingX exchange. Remove http cache control implementation and instead prevent refreshing the same data for 15 seconds. Added user agent on requests. Removed old database migration code.
1 parent bf3b00e commit 50b5d61

File tree

29 files changed

+103
-310
lines changed

29 files changed

+103
-310
lines changed

.idea/codeStyles/Project.xml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/kotlinc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bitcoin/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
id 'kotlin-android'
44
id 'com.google.devtools.ksp'
55
id 'org.jetbrains.kotlin.android'
6-
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.10'
6+
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.20'
77
}
88

99
android {
@@ -13,8 +13,8 @@ android {
1313
applicationId "com.brentpanther.bitcoinwidget"
1414
minSdk 23
1515
targetSdk 34
16-
versionCode 320
17-
versionName "8.4.1"
16+
versionCode 321
17+
versionName "8.4.2"
1818

1919
}
2020

@@ -69,8 +69,8 @@ dependencies {
6969
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
7070
implementation 'androidx.preference:preference-ktx:1.2.1'
7171
implementation 'androidx.work:work-runtime-ktx:2.8.1'
72-
implementation 'androidx.activity:activity-ktx:1.8.0'
73-
implementation 'androidx.activity:activity-compose:1.8.0'
72+
implementation 'androidx.activity:activity-ktx:1.8.1'
73+
implementation 'androidx.activity:activity-compose:1.8.1'
7474
implementation "androidx.compose.ui:ui"
7575
implementation "androidx.compose.ui:ui-tooling-preview"
7676
implementation 'androidx.compose.material:material'

bitcoin/src/main/java/com/brentpanther/bitcoinwidget/Coin.kt

Lines changed: 10 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,149 +1,7 @@
11
package com.brentpanther.bitcoinwidget
22

33
import android.os.Build
4-
import com.brentpanther.bitcoinwidget.R.drawable.ic_1inch
5-
import com.brentpanther.bitcoinwidget.R.drawable.ic_aave
6-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ada
7-
import com.brentpanther.bitcoinwidget.R.drawable.ic_algo
8-
import com.brentpanther.bitcoinwidget.R.drawable.ic_algo_white
9-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ape
10-
import com.brentpanther.bitcoinwidget.R.drawable.ic_arrr
11-
import com.brentpanther.bitcoinwidget.R.drawable.ic_atom
12-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ava
13-
import com.brentpanther.bitcoinwidget.R.drawable.ic_avax
14-
import com.brentpanther.bitcoinwidget.R.drawable.ic_avax_dark
15-
import com.brentpanther.bitcoinwidget.R.drawable.ic_axs
16-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bal
17-
import com.brentpanther.bitcoinwidget.R.drawable.ic_band_color
18-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bat
19-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bcd
20-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bcd_white
21-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bch
22-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bch_dark
23-
import com.brentpanther.bitcoinwidget.R.drawable.ic_best
24-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bnb
25-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bnt
26-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bsv
27-
import com.brentpanther.bitcoinwidget.R.drawable.ic_bsv_dark
28-
import com.brentpanther.bitcoinwidget.R.drawable.ic_btc
29-
import com.brentpanther.bitcoinwidget.R.drawable.ic_btc_dark
30-
import com.brentpanther.bitcoinwidget.R.drawable.ic_btg
31-
import com.brentpanther.bitcoinwidget.R.drawable.ic_btg_dark
32-
import com.brentpanther.bitcoinwidget.R.drawable.ic_btm
33-
import com.brentpanther.bitcoinwidget.R.drawable.ic_btm_gray
34-
import com.brentpanther.bitcoinwidget.R.drawable.ic_btt
35-
import com.brentpanther.bitcoinwidget.R.drawable.ic_cel
36-
import com.brentpanther.bitcoinwidget.R.drawable.ic_chz
37-
import com.brentpanther.bitcoinwidget.R.drawable.ic_comp_black
38-
import com.brentpanther.bitcoinwidget.R.drawable.ic_comp_white
39-
import com.brentpanther.bitcoinwidget.R.drawable.ic_cro
40-
import com.brentpanther.bitcoinwidget.R.drawable.ic_cro_white
41-
import com.brentpanther.bitcoinwidget.R.drawable.ic_crv
42-
import com.brentpanther.bitcoinwidget.R.drawable.ic_cube_black
43-
import com.brentpanther.bitcoinwidget.R.drawable.ic_cube_white
44-
import com.brentpanther.bitcoinwidget.R.drawable.ic_dai_color
45-
import com.brentpanther.bitcoinwidget.R.drawable.ic_dash
46-
import com.brentpanther.bitcoinwidget.R.drawable.ic_dash_dark
47-
import com.brentpanther.bitcoinwidget.R.drawable.ic_dcr
48-
import com.brentpanther.bitcoinwidget.R.drawable.ic_doge
49-
import com.brentpanther.bitcoinwidget.R.drawable.ic_dot_black
50-
import com.brentpanther.bitcoinwidget.R.drawable.ic_dot_white
51-
import com.brentpanther.bitcoinwidget.R.drawable.ic_egld_dark
52-
import com.brentpanther.bitcoinwidget.R.drawable.ic_egld_white
53-
import com.brentpanther.bitcoinwidget.R.drawable.ic_enj
54-
import com.brentpanther.bitcoinwidget.R.drawable.ic_eos_black
55-
import com.brentpanther.bitcoinwidget.R.drawable.ic_eos_white
56-
import com.brentpanther.bitcoinwidget.R.drawable.ic_etc
57-
import com.brentpanther.bitcoinwidget.R.drawable.ic_eth
58-
import com.brentpanther.bitcoinwidget.R.drawable.ic_fil
59-
import com.brentpanther.bitcoinwidget.R.drawable.ic_firo
60-
import com.brentpanther.bitcoinwidget.R.drawable.ic_firo_dark
61-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ftm
62-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ftt
63-
import com.brentpanther.bitcoinwidget.R.drawable.ic_gala
64-
import com.brentpanther.bitcoinwidget.R.drawable.ic_gala_white
65-
import com.brentpanther.bitcoinwidget.R.drawable.ic_gno_color
66-
import com.brentpanther.bitcoinwidget.R.drawable.ic_gnt_blue
67-
import com.brentpanther.bitcoinwidget.R.drawable.ic_grin_color_black
68-
import com.brentpanther.bitcoinwidget.R.drawable.ic_grt
69-
import com.brentpanther.bitcoinwidget.R.drawable.ic_hbar
70-
import com.brentpanther.bitcoinwidget.R.drawable.ic_hbar_white
71-
import com.brentpanther.bitcoinwidget.R.drawable.ic_hns
72-
import com.brentpanther.bitcoinwidget.R.drawable.ic_hns_dark
73-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ht
74-
import com.brentpanther.bitcoinwidget.R.drawable.ic_icx
75-
import com.brentpanther.bitcoinwidget.R.drawable.ic_iota
76-
import com.brentpanther.bitcoinwidget.R.drawable.ic_iota_white
77-
import com.brentpanther.bitcoinwidget.R.drawable.ic_kava
78-
import com.brentpanther.bitcoinwidget.R.drawable.ic_kmd
79-
import com.brentpanther.bitcoinwidget.R.drawable.ic_knc_color
80-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ksm_black
81-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ksm_white
82-
import com.brentpanther.bitcoinwidget.R.drawable.ic_leo
83-
import com.brentpanther.bitcoinwidget.R.drawable.ic_link
84-
import com.brentpanther.bitcoinwidget.R.drawable.ic_lrc
85-
import com.brentpanther.bitcoinwidget.R.drawable.ic_lsk
86-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ltc
87-
import com.brentpanther.bitcoinwidget.R.drawable.ic_lto
88-
import com.brentpanther.bitcoinwidget.R.drawable.ic_luna
89-
import com.brentpanther.bitcoinwidget.R.drawable.ic_lunc
90-
import com.brentpanther.bitcoinwidget.R.drawable.ic_mana
91-
import com.brentpanther.bitcoinwidget.R.drawable.ic_matic
92-
import com.brentpanther.bitcoinwidget.R.drawable.ic_mco
93-
import com.brentpanther.bitcoinwidget.R.drawable.ic_mco_white
94-
import com.brentpanther.bitcoinwidget.R.drawable.ic_mkr
95-
import com.brentpanther.bitcoinwidget.R.drawable.ic_mln
96-
import com.brentpanther.bitcoinwidget.R.drawable.ic_nano
97-
import com.brentpanther.bitcoinwidget.R.drawable.ic_near_black
98-
import com.brentpanther.bitcoinwidget.R.drawable.ic_near_white
99-
import com.brentpanther.bitcoinwidget.R.drawable.ic_neo
100-
import com.brentpanther.bitcoinwidget.R.drawable.ic_nrg
101-
import com.brentpanther.bitcoinwidget.R.drawable.ic_okb
102-
import com.brentpanther.bitcoinwidget.R.drawable.ic_omg
103-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ont
104-
import com.brentpanther.bitcoinwidget.R.drawable.ic_pax
105-
import com.brentpanther.bitcoinwidget.R.drawable.ic_paxg_color
106-
import com.brentpanther.bitcoinwidget.R.drawable.ic_placeholder
107-
import com.brentpanther.bitcoinwidget.R.drawable.ic_powr_color
108-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ppc
109-
import com.brentpanther.bitcoinwidget.R.drawable.ic_qtum
110-
import com.brentpanther.bitcoinwidget.R.drawable.ic_rdd
111-
import com.brentpanther.bitcoinwidget.R.drawable.ic_ren
112-
import com.brentpanther.bitcoinwidget.R.drawable.ic_rep
113-
import com.brentpanther.bitcoinwidget.R.drawable.ic_rune
114-
import com.brentpanther.bitcoinwidget.R.drawable.ic_rvn
115-
import com.brentpanther.bitcoinwidget.R.drawable.ic_sand
116-
import com.brentpanther.bitcoinwidget.R.drawable.ic_shib
117-
import com.brentpanther.bitcoinwidget.R.drawable.ic_snx
118-
import com.brentpanther.bitcoinwidget.R.drawable.ic_sol
119-
import com.brentpanther.bitcoinwidget.R.drawable.ic_storj
120-
import com.brentpanther.bitcoinwidget.R.drawable.ic_sushi
121-
import com.brentpanther.bitcoinwidget.R.drawable.ic_theta
122-
import com.brentpanther.bitcoinwidget.R.drawable.ic_trx
123-
import com.brentpanther.bitcoinwidget.R.drawable.ic_uma
124-
import com.brentpanther.bitcoinwidget.R.drawable.ic_uni
125-
import com.brentpanther.bitcoinwidget.R.drawable.ic_vet
126-
import com.brentpanther.bitcoinwidget.R.drawable.ic_vtc
127-
import com.brentpanther.bitcoinwidget.R.drawable.ic_waves
128-
import com.brentpanther.bitcoinwidget.R.drawable.ic_wbtc
129-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xaut_color
130-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xem
131-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xem_dark_gray
132-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xlm
133-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xlm_white
134-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xmr
135-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xmr_dark
136-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xrp_black
137-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xrp_white
138-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xtz
139-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xvg
140-
import com.brentpanther.bitcoinwidget.R.drawable.ic_xym
141-
import com.brentpanther.bitcoinwidget.R.drawable.ic_yfi
142-
import com.brentpanther.bitcoinwidget.R.drawable.ic_zec
143-
import com.brentpanther.bitcoinwidget.R.drawable.ic_zec_dark
144-
import com.brentpanther.bitcoinwidget.R.drawable.ic_zil
145-
import com.brentpanther.bitcoinwidget.R.drawable.ic_zrx_black
146-
import com.brentpanther.bitcoinwidget.R.drawable.ic_zrx_white
4+
import com.brentpanther.bitcoinwidget.R.drawable.*
1475
import com.brentpanther.bitcoinwidget.Theme.SOLID
1486
import com.brentpanther.bitcoinwidget.Theme.TRANSPARENT
1497
import java.util.SortedSet
@@ -156,6 +14,8 @@ enum class Coin(val coinName: String, val coinGeckoId: String, private vararg va
15614
ADA("Cardano", "cardano", IconTheme(SOLID, ic_ada)),
15715
ALGO("Algorand", "algorand", IconTheme(SOLID, ic_algo, ic_algo_white)),
15816
APE("ApeCoin", "apecoin", IconTheme(SOLID, ic_ape)),
17+
APT("Aptos", "aptos", IconTheme(SOLID, ic_apt)),
18+
ARB("Arbitrum", "arbitrum", IconTheme(SOLID, ic_arb)),
15919
ARRR("Pirate Chain", "pirate-chain", IconTheme(SOLID, ic_arrr)),
16020
ATOM("Cosmos", "cosmos", IconTheme(SOLID, ic_atom)),
16121
AVA("Travala.com", "concierge-io", IconTheme(SOLID, ic_ava)),
@@ -209,11 +69,14 @@ enum class Coin(val coinName: String, val coinGeckoId: String, private vararg va
20969
HNS("Handshake", "handshake", IconTheme(SOLID, ic_hns, ic_hns_dark)),
21070
HT("Huobi Token", "huobi-token", IconTheme(SOLID, ic_ht)),
21171
ICX("Icon", "icon", IconTheme(SOLID, ic_icx)),
72+
IMX("Immutable", "immutable-x", IconTheme(SOLID, ic_imx)),
21273
IOTA("Iota", "iota", IconTheme(SOLID, ic_iota, ic_iota_white)),
74+
KASPA("Kaspa", "kaspa", IconTheme(SOLID, ic_kas_color)),
21375
KAVA("Kava", "kava", IconTheme(SOLID, ic_kava)),
21476
KMD("Komodo", "komodo", IconTheme(SOLID, ic_kmd)),
21577
KNC("Kyber Network", "kyber-network", IconTheme(SOLID, ic_knc_color)),
21678
KSM("Kusama", "kusama", IconTheme(SOLID, ic_ksm_black, ic_ksm_white)),
79+
LDO("Lido DAO", "lido-dao", IconTheme(SOLID, ic_ldo)),
21780
LEO("LEO Token", "leo-token", IconTheme(SOLID, ic_leo)),
21881
LINK("ChainLink", "chainlink", IconTheme(SOLID, ic_link)),
21982
LRC("Loopring", "loopring", IconTheme(SOLID, ic_lrc)),
@@ -233,10 +96,12 @@ enum class Coin(val coinName: String, val coinGeckoId: String, private vararg va
23396
NANO("Nano", "nano", IconTheme(SOLID, ic_nano)),
23497
NEAR("Near", "near", IconTheme(SOLID, ic_near_black, ic_near_white)),
23598
NEO("NEO", "neo", IconTheme(SOLID, ic_neo)),
99+
NEXO("NEXO", "nexo", IconTheme(SOLID, ic_nexo)),
236100
NRG("Energi", "energi", IconTheme(SOLID, ic_nrg)),
237101
OKB("OKB", "okb", IconTheme(SOLID, ic_okb)),
238102
OMG("OMG", "omisego", IconTheme(SOLID, ic_omg)),
239103
ONT("Ontology", "ontology", IconTheme(SOLID, ic_ont)),
104+
OP("Optimism", "optimism", IconTheme(SOLID, ic_op)),
240105
PAX("Paxos Standard", "paxos-standard", IconTheme(SOLID, ic_pax)),
241106
PAXG("PAX Gold", "pax-gold", IconTheme(SOLID, ic_paxg_color)),
242107
POWR("Power Ledger", "power-ledger", IconTheme(SOLID, ic_powr_color)),
@@ -245,6 +110,7 @@ enum class Coin(val coinName: String, val coinGeckoId: String, private vararg va
245110
RDD("Reddcoin", "reddcoin", IconTheme(SOLID, ic_rdd)),
246111
REN("REN", "republic-protocol", IconTheme(SOLID, ic_ren)),
247112
REP("Augur", "augur", IconTheme(SOLID, ic_rep)),
113+
RPL("Rocket Pool", "rocket-pool", IconTheme(SOLID, ic_rpl)),
248114
RUNE("THORChain", "thorchain", IconTheme(SOLID, ic_rune)),
249115
RVN("Ravencoin", "ravencoin", IconTheme(SOLID, ic_rvn)),
250116
SAND("The Sandbox", "the-sandbox", IconTheme(SOLID, ic_sand)),
@@ -287,7 +153,7 @@ enum class Coin(val coinName: String, val coinGeckoId: String, private vararg va
287153

288154
companion object {
289155

290-
internal var COIN_NAMES: SortedSet<String> = values().map { it.name }.toSortedSet(String.CASE_INSENSITIVE_ORDER)
156+
internal var COIN_NAMES: SortedSet<String> = entries.map { it.name }.toSortedSet(String.CASE_INSENSITIVE_ORDER)
291157

292158
fun getByName(name: String): Coin? {
293159
if (name == "1INCH") return ONE_INCH

bitcoin/src/main/java/com/brentpanther/bitcoinwidget/db/DatabaseInitializer.kt

Lines changed: 0 additions & 88 deletions
This file was deleted.

bitcoin/src/main/java/com/brentpanther/bitcoinwidget/db/WidgetDatabase.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.brentpanther.bitcoinwidget.db
22

33
import android.content.Context
4-
import androidx.preference.PreferenceManager
54
import androidx.room.Database
65
import androidx.room.Room
76
import androidx.room.RoomDatabase
@@ -76,13 +75,6 @@ abstract class WidgetDatabase : RoomDatabase() {
7675

7776
fun getInstance(context: Context): WidgetDatabase {
7877
val callback = object : Callback() {
79-
override fun onCreate(db: SupportSQLiteDatabase) {
80-
DatabaseInitializer.create(
81-
db,
82-
PreferenceManager.getDefaultSharedPreferences(context),
83-
context.getSharedPreferences("bitcoinwidget", Context.MODE_PRIVATE)
84-
)
85-
}
8678

8779
override fun onOpen(db: SupportSQLiteDatabase) {
8880
DataMigration.migrate(db)

0 commit comments

Comments
 (0)