Skip to content

Commit 6bc4d93

Browse files
committed
Keep perps markets ordered by rowid
1 parent 887f7d2 commit 6bc4d93

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

app/src/main/java/one/mixin/android/db/perps/PerpsMarketDao.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.room.Dao
44
import androidx.room.Insert
55
import androidx.room.OnConflictStrategy
66
import androidx.room.Query
7+
import androidx.room.Transaction
78
import one.mixin.android.api.response.perps.PerpsMarket
89
import one.mixin.android.db.BaseDao
910

@@ -15,7 +16,13 @@ interface PerpsMarketDao : BaseDao<PerpsMarket> {
1516
@Insert(onConflict = OnConflictStrategy.REPLACE)
1617
suspend fun insertAll(markets: List<PerpsMarket>)
1718

18-
@Query("SELECT * FROM markets")
19+
@Transaction
20+
suspend fun replaceAll(markets: List<PerpsMarket>) {
21+
deleteAll()
22+
insertAll(markets)
23+
}
24+
25+
@Query("SELECT * FROM markets ORDER BY rowid ASC")
1926
suspend fun getAllMarkets(): List<PerpsMarket>
2027

2128
@Query("SELECT * FROM markets WHERE market_id = :marketId")

app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PerpetualViewModel.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,13 @@ class PerpetualViewModel @Inject constructor(
100100
val data = response.data
101101
if (response.isSuccess && data != null) {
102102
Timber.d("Perps markets loaded: ${data.size} markets")
103-
104-
withContext(Dispatchers.IO) {
105-
perpsMarketDao.insertAll(data)
103+
104+
val orderedMarkets = withContext(Dispatchers.IO) {
105+
perpsMarketDao.replaceAll(data)
106+
perpsMarketDao.getAllMarkets()
106107
}
107-
108-
onSuccess(data)
108+
109+
onSuccess(orderedMarkets)
109110
} else {
110111
val error = "Failed to load markets: ${response.errorDescription}"
111112
Timber.e(error)

0 commit comments

Comments
 (0)