forked from github/wulkanowy-mirror
merge: v2.6.8
This commit is contained in:
commit
b25c61a485
1
.gitignore
vendored
1
.gitignore
vendored
@ -127,3 +127,4 @@ google-services.json
|
|||||||
!app/google-services.json
|
!app/google-services.json
|
||||||
|
|
||||||
|
|
||||||
|
.idea/appInsightsSettings.xml
|
||||||
|
@ -27,8 +27,8 @@ android {
|
|||||||
testApplicationId "io.github.tests.wulkanowy"
|
testApplicationId "io.github.tests.wulkanowy"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 34
|
targetSdkVersion 34
|
||||||
versionCode 165
|
versionCode 168
|
||||||
versionName "2.6.5"
|
versionName "2.6.8"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
resValue "string", "app_name", "Wulkanowy"
|
resValue "string", "app_name", "Wulkanowy"
|
||||||
@ -161,7 +161,7 @@ play {
|
|||||||
track = 'production'
|
track = 'production'
|
||||||
releaseStatus = ReleaseStatus.IN_PROGRESS
|
releaseStatus = ReleaseStatus.IN_PROGRESS
|
||||||
userFraction = 0.99d
|
userFraction = 0.99d
|
||||||
updatePriority = 3
|
updatePriority = 2
|
||||||
enabled.set(false)
|
enabled.set(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,12 +191,13 @@ ext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'io.github.wulkanowy:sdk:2.6.4'
|
implementation 'io.github.wulkanowy:sdk:2.6.7'
|
||||||
|
|
||||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
|
||||||
|
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines"
|
||||||
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:$coroutines"
|
||||||
|
|
||||||
implementation 'androidx.core:core-ktx:1.13.1'
|
implementation 'androidx.core:core-ktx:1.13.1'
|
||||||
implementation 'androidx.core:core-splashscreen:1.0.1'
|
implementation 'androidx.core:core-splashscreen:1.0.1'
|
||||||
@ -204,6 +205,7 @@ dependencies {
|
|||||||
implementation "androidx.appcompat:appcompat:1.6.1"
|
implementation "androidx.appcompat:appcompat:1.6.1"
|
||||||
implementation "androidx.fragment:fragment-ktx:1.7.0"
|
implementation "androidx.fragment:fragment-ktx:1.7.0"
|
||||||
implementation "androidx.annotation:annotation:1.7.1"
|
implementation "androidx.annotation:annotation:1.7.1"
|
||||||
|
implementation "androidx.javascriptengine:javascriptengine:1.0.0-beta01"
|
||||||
|
|
||||||
implementation "androidx.preference:preference-ktx:1.2.1"
|
implementation "androidx.preference:preference-ktx:1.2.1"
|
||||||
implementation "androidx.recyclerview:recyclerview:1.3.2"
|
implementation "androidx.recyclerview:recyclerview:1.3.2"
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:installLocation="internalOnly">
|
android:installLocation="internalOnly">
|
||||||
|
|
||||||
|
<uses-sdk tools:overrideLibrary="androidx.javascriptengine" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
@ -42,9 +44,9 @@
|
|||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:networkSecurityConfig="@xml/network_security_config"
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
|
android:resizeableActivity="true"
|
||||||
android:supportsRtl="false"
|
android:supportsRtl="false"
|
||||||
android:theme="@style/WulkanowyTheme"
|
android:theme="@style/WulkanowyTheme"
|
||||||
android:resizeableActivity="true"
|
|
||||||
tools:ignore="DataExtractionRules,UnusedAttribute">
|
tools:ignore="DataExtractionRules,UnusedAttribute">
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.modules.splash.SplashActivity"
|
android:name=".ui.modules.splash.SplashActivity"
|
||||||
|
@ -1,14 +1,21 @@
|
|||||||
package io.github.wulkanowy.data
|
package io.github.wulkanowy.data
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Build
|
||||||
|
import androidx.javascriptengine.JavaScriptSandbox
|
||||||
import com.chuckerteam.chucker.api.ChuckerInterceptor
|
import com.chuckerteam.chucker.api.ChuckerInterceptor
|
||||||
|
import com.google.common.util.concurrent.ListenableFuture
|
||||||
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import io.github.wulkanowy.data.db.dao.StudentDao
|
import io.github.wulkanowy.data.db.dao.StudentDao
|
||||||
import io.github.wulkanowy.data.db.entities.Semester
|
import io.github.wulkanowy.data.db.entities.Semester
|
||||||
import io.github.wulkanowy.data.db.entities.Student
|
import io.github.wulkanowy.data.db.entities.Student
|
||||||
import io.github.wulkanowy.data.db.entities.StudentIsEduOne
|
import io.github.wulkanowy.data.db.entities.StudentIsEduOne
|
||||||
import io.github.wulkanowy.data.repositories.WulkanowyRepository
|
import io.github.wulkanowy.data.repositories.WulkanowyRepository
|
||||||
import io.github.wulkanowy.sdk.Sdk
|
import io.github.wulkanowy.sdk.Sdk
|
||||||
|
import io.github.wulkanowy.sdk.scrapper.EvaluateHandler
|
||||||
import io.github.wulkanowy.utils.RemoteConfigHelper
|
import io.github.wulkanowy.utils.RemoteConfigHelper
|
||||||
import io.github.wulkanowy.utils.WebkitCookieManagerProxy
|
import io.github.wulkanowy.utils.WebkitCookieManagerProxy
|
||||||
|
import kotlinx.coroutines.guava.await
|
||||||
import kotlinx.coroutines.sync.Mutex
|
import kotlinx.coroutines.sync.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
import kotlinx.coroutines.sync.withLock
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
@ -17,6 +24,7 @@ import javax.inject.Singleton
|
|||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class WulkanowySdkFactory @Inject constructor(
|
class WulkanowySdkFactory @Inject constructor(
|
||||||
|
@ApplicationContext private val context: Context,
|
||||||
private val chuckerInterceptor: ChuckerInterceptor,
|
private val chuckerInterceptor: ChuckerInterceptor,
|
||||||
private val remoteConfig: RemoteConfigHelper,
|
private val remoteConfig: RemoteConfigHelper,
|
||||||
private val webkitCookieManagerProxy: WebkitCookieManagerProxy,
|
private val webkitCookieManagerProxy: WebkitCookieManagerProxy,
|
||||||
@ -26,10 +34,14 @@ class WulkanowySdkFactory @Inject constructor(
|
|||||||
|
|
||||||
private val eduOneMutex = Mutex()
|
private val eduOneMutex = Mutex()
|
||||||
private val migrationFailedStudentIds = mutableSetOf<Long>()
|
private val migrationFailedStudentIds = mutableSetOf<Long>()
|
||||||
|
private val sandbox: ListenableFuture<JavaScriptSandbox>? =
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && JavaScriptSandbox.isSupported())
|
||||||
|
JavaScriptSandbox.createConnectedInstanceAsync(context)
|
||||||
|
else null
|
||||||
|
|
||||||
private val sdk = Sdk().apply {
|
private val sdk = Sdk().apply {
|
||||||
androidVersion = android.os.Build.VERSION.RELEASE
|
androidVersion = Build.VERSION.RELEASE
|
||||||
buildTag = android.os.Build.MODEL
|
buildTag = Build.MODEL
|
||||||
userAgentTemplate = remoteConfig.userAgentTemplate
|
userAgentTemplate = remoteConfig.userAgentTemplate
|
||||||
setSimpleHttpLogger { Timber.d(it) }
|
setSimpleHttpLogger { Timber.d(it) }
|
||||||
setAdditionalCookieManager(webkitCookieManagerProxy)
|
setAdditionalCookieManager(webkitCookieManagerProxy)
|
||||||
@ -47,6 +59,23 @@ class WulkanowySdkFactory @Inject constructor(
|
|||||||
if (mapping != null) {
|
if (mapping != null) {
|
||||||
endpointsMapping = mapping.endpoints
|
endpointsMapping = mapping.endpoints
|
||||||
vTokenMapping = mapping.vTokens
|
vTokenMapping = mapping.vTokens
|
||||||
|
vTokenSchemeMapping = mapping.vTokenScheme
|
||||||
|
vParamsEvaluation = createIsolate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private suspend fun createIsolate(): suspend () -> EvaluateHandler {
|
||||||
|
return {
|
||||||
|
val isolate = sandbox?.await()?.createIsolate()
|
||||||
|
object : EvaluateHandler {
|
||||||
|
override suspend fun evaluate(code: String): String? {
|
||||||
|
return isolate?.evaluateJavaScriptAsync(code)?.await()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun close() {
|
||||||
|
isolate?.close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,4 +11,7 @@ data class Mapping(
|
|||||||
|
|
||||||
@SerialName("vTokens")
|
@SerialName("vTokens")
|
||||||
val vTokens: Map<String, Map<String, Map<String, String>>>,
|
val vTokens: Map<String, Map<String, Map<String, String>>>,
|
||||||
|
|
||||||
|
@SerialName("vTokenScheme")
|
||||||
|
val vTokenScheme: Map<String, Map<String, String>> = emptyMap(),
|
||||||
)
|
)
|
||||||
|
@ -11,6 +11,6 @@ interface WulkanowyService {
|
|||||||
@GET("/v1.json")
|
@GET("/v1.json")
|
||||||
suspend fun getAdminMessages(): List<AdminMessage>
|
suspend fun getAdminMessages(): List<AdminMessage>
|
||||||
|
|
||||||
@GET("/mapping1.json")
|
@GET("/mapping2.json")
|
||||||
suspend fun getMapping(): Mapping
|
suspend fun getMapping(): Mapping
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
Wersja 2.6.5
|
Wersja 2.6.8
|
||||||
|
|
||||||
— naprawiliśmy pozostałe bieżące problemy spowodowane ostatnimi blokadami Wulkanowego przez wiadomo kogo
|
— i znowu aktualizacja, żeby wiadomości działały chociaż w piątek. Później już pewnie nie będą
|
||||||
|
— a i jeszcze naprawiliśmy dostęp mobilny, bo prosiliście
|
||||||
|
|
||||||
Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases
|
Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases
|
||||||
|
@ -41,6 +41,7 @@ class WulkanowySdkFactoryTest {
|
|||||||
webkitCookieManagerProxy = mockk(),
|
webkitCookieManagerProxy = mockk(),
|
||||||
studentDb = studentDao,
|
studentDb = studentDao,
|
||||||
wulkanowyRepository = mockk(relaxed = true),
|
wulkanowyRepository = mockk(relaxed = true),
|
||||||
|
context = mockk(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user