Commit f36a0adf authored by Mygod's avatar Mygod

Allow ACL sync to be cancelled

parent d3bedfb5
...@@ -32,6 +32,8 @@ android { ...@@ -32,6 +32,8 @@ android {
targetCompatibility javaVersion targetCompatibility javaVersion
} }
kotlinOptions.jvmTarget = javaVersion
externalNativeBuild { externalNativeBuild {
ndkBuild { ndkBuild {
path 'src/main/jni/Android.mk' path 'src/main/jni/Android.mk'
...@@ -56,7 +58,7 @@ dependencies { ...@@ -56,7 +58,7 @@ dependencies {
api "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion" api "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion"
api 'androidx.preference:preference:1.1.0-rc01' api 'androidx.preference:preference:1.1.0-rc01'
api "androidx.room:room-runtime:$roomVersion" api "androidx.room:room-runtime:$roomVersion"
api 'androidx.work:work-runtime-ktx:2.1.0-rc01' api 'androidx.work:work-runtime-ktx:2.1.0'
api 'com.crashlytics.sdk.android:crashlytics:2.10.1' api 'com.crashlytics.sdk.android:crashlytics:2.10.1'
api 'com.google.code.gson:gson:2.8.5' api 'com.google.code.gson:gson:2.8.5'
api 'com.google.firebase:firebase-config:18.0.0' api 'com.google.firebase:firebase-config:18.0.0'
......
...@@ -23,8 +23,9 @@ package com.github.shadowsocks.acl ...@@ -23,8 +23,9 @@ package com.github.shadowsocks.acl
import android.content.Context import android.content.Context
import androidx.work.* import androidx.work.*
import com.github.shadowsocks.Core import com.github.shadowsocks.Core
import kotlinx.coroutines.Dispatchers import com.github.shadowsocks.utils.useCancellable
import java.io.IOException import java.io.IOException
import java.net.HttpURLConnection
import java.net.URL import java.net.URL
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
...@@ -44,12 +45,10 @@ class AclSyncer(context: Context, workerParams: WorkerParameters) : CoroutineWor ...@@ -44,12 +45,10 @@ class AclSyncer(context: Context, workerParams: WorkerParameters) : CoroutineWor
}) })
} }
override val coroutineContext get() = Dispatchers.IO
override suspend fun doWork(): Result = try { override suspend fun doWork(): Result = try {
val route = inputData.getString(KEY_ROUTE)!! val route = inputData.getString(KEY_ROUTE)!!
val acl = URL("https://shadowsocks.org/acl/android/v1/$route.acl").openStream().bufferedReader() val connection = URL("https://shadowsocks.org/acl/android/v1/$route.acl").openConnection() as HttpURLConnection
.use { it.readText() } val acl = connection.useCancellable { inputStream.bufferedReader().use { it.readText() } }
Acl.getFile(route).printWriter().use { it.write(acl) } Acl.getFile(route).printWriter().use { it.write(acl) }
Result.success() Result.success()
} catch (e: IOException) { } catch (e: IOException) {
......
...@@ -42,6 +42,7 @@ android { ...@@ -42,6 +42,7 @@ android {
sourceCompatibility javaVersion sourceCompatibility javaVersion
targetCompatibility javaVersion targetCompatibility javaVersion
} }
kotlinOptions.jvmTarget = javaVersion
packagingOptions.exclude '**/*.kotlin_*' packagingOptions.exclude '**/*.kotlin_*'
splits { splits {
abi { abi {
......
...@@ -30,6 +30,8 @@ android { ...@@ -30,6 +30,8 @@ android {
targetCompatibility javaVersion targetCompatibility javaVersion
} }
kotlinOptions.jvmTarget = javaVersion
buildTypes { buildTypes {
release { release {
minifyEnabled false minifyEnabled false
......
...@@ -41,6 +41,7 @@ android { ...@@ -41,6 +41,7 @@ android {
sourceCompatibility javaVersion sourceCompatibility javaVersion
targetCompatibility javaVersion targetCompatibility javaVersion
} }
kotlinOptions.jvmTarget = javaVersion
packagingOptions.exclude '**/*.kotlin_*' packagingOptions.exclude '**/*.kotlin_*'
splits { splits {
abi { abi {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment