Преглед изворни кода

Removed unnecessary metrics api call

Vadik Sirekanyan пре 2 година
родитељ
комит
b9c99e1b23

+ 3 - 2
app/src/main/java/org/sirekanyan/outline/App.kt

@@ -29,8 +29,9 @@ class App : Application() {
     private val database by lazy {
         OutlineDatabase(AndroidSqliteDriver(OutlineDatabase.Schema, this, "outline.db"))
     }
-    val serverRepository by lazy { ServerRepository(api, ServerDao(database)) }
-    val keyRepository by lazy { KeyRepository(api, KeyDao(database)) }
+    private val serverDao = ServerDao(database)
+    val serverRepository by lazy { ServerRepository(api, serverDao) }
+    val keyRepository by lazy { KeyRepository(api, KeyDao(database), serverDao) }
     val prefsDao by lazy { KeyValueDao(database) }
     val debugDao: DebugDao by lazy { DebugDaoImpl(database) }
 

+ 1 - 2
app/src/main/java/org/sirekanyan/outline/api/OutlineApi.kt

@@ -63,8 +63,7 @@ class OutlineApi {
 
     suspend fun getServer(server: Server): Server {
         val name = request(HttpMethod.Get, server, "server").body<ServerNameResponse>().name
-        val transferMetrics = getTransferMetrics(server)?.bytesTransferredByUserId
-        return Server(server.id, server.insecure, name, transferMetrics?.values?.sum())
+        return Server(server.id, server.insecure, name, server.traffic)
     }
 
     suspend fun renameServer(server: Server, name: String) {

+ 4 - 0
app/src/main/java/org/sirekanyan/outline/db/ServerDao.kt

@@ -20,6 +20,10 @@ class ServerDao(private val database: OutlineDatabase) {
         queries.insert(server)
     }
 
+    fun update(id: String, traffic: Long) {
+        queries.update(id, traffic)
+    }
+
     fun insertAll(servers: List<ServerEntity>) {
         queries.transaction {
             servers.forEach {

+ 7 - 1
app/src/main/java/org/sirekanyan/outline/repository/KeyRepository.kt

@@ -11,9 +11,14 @@ import org.sirekanyan.outline.api.model.Server
 import org.sirekanyan.outline.api.model.fromEntities
 import org.sirekanyan.outline.api.model.toEntities
 import org.sirekanyan.outline.db.KeyDao
+import org.sirekanyan.outline.db.ServerDao
 import org.sirekanyan.outline.db.model.KeyWithServerEntity
 
-class KeyRepository(private val api: OutlineApi, private val keyDao: KeyDao) {
+class KeyRepository(
+    private val api: OutlineApi,
+    private val keyDao: KeyDao,
+    private val serverDao: ServerDao,
+) {
 
     fun observeKeys(server: Server): Flow<List<Key>> =
         keyDao.observe(server).mapToList(IO).map { it.fromEntities(server) }
@@ -25,6 +30,7 @@ class KeyRepository(private val api: OutlineApi, private val keyDao: KeyDao) {
         withContext(IO) {
             val keys = api.getKeys(server)
             keyDao.update(server, keys.toEntities())
+            serverDao.update(server.id, keys.sumOf { it.traffic ?: 0 })
         }
     }
 

+ 3 - 0
app/src/main/sqldelight/org/sirekanyan/outline/db/model/ServerEntity.sq

@@ -11,6 +11,9 @@ SELECT * FROM ServerEntity ORDER BY id;
 insert:
 INSERT OR REPLACE INTO ServerEntity VALUES ?;
 
+update:
+UPDATE ServerEntity SET traffic = ?2 WHERE id = ?1;
+
 delete:
 DELETE FROM ServerEntity WHERE id = ?;