Compare commits

...

5 Commits

Author SHA1 Message Date
cb553b1a33
merge: v2.6.5
All checks were successful
Generate debug APK / build (push) Successful in 47m47s
2024-05-12 20:59:38 +02:00
f5a95421a1
refresh & normalize READMEs 2024-05-12 19:47:36 +02:00
Mikołaj Pich
26596e8254
Merge branch 'release/2.6.5' into develop 2024-05-12 17:51:07 +02:00
Mikołaj Pich
6e472d6c5c
Version 2.6.5 2024-05-12 17:50:56 +02:00
Rafał Borcz
6f4826249c
Add remote mapping for Wulkanowy SDK (#2550)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2024-05-12 16:21:28 +02:00
24 changed files with 249 additions and 137 deletions

View File

@ -8,30 +8,34 @@
* Skrýt komentáře.
* falešná docházka %
Přístup ke skrytému panelu:
1. přejděte na záložku "Více".
2. přejděte na panel "Nastavení".
3. přejděte na panel "O aplikaci".
4. klikněte pětkrát na logo aplikace
5. přejděte zpět do nastavení (budete muset obnovit zobrazení, přejít na domovskou obrazovku a vrátit se do nastavení).
Chcete-li se dostat na skrytý panel:
1. Přejděte na kartu „Další“.
2. Přejděte na panel „Nastavení“.
3. Přejděte na panel „O aplikaci“.
4. Klikněte 5x na logo aplikace
5. Přejděte na domovskou obrazovku
6. Přejděte do nastavení
7. Zadejte „tajná nastavení“
# Instalace
Legenda:
- `*-fdroid-*` - verze přizpůsobená F-Droid
- `*-hms-*` - verze přizpůsobená Huawei AppGallery
- `*-play-*` - verze přizpůsobená Obchodu Play
| Název souboru | Přizpůsobeno |
| ---------------- | ----------------- |
| `*-fdroid-*.apk` | F-Droid |
| `*-hms-*.apk` | Huawei AppGallery |
| `*-play-*.apk` | Play Store |
- Verze vydání (**doporučeno pro většinu uživatelů**)
Stáhněte si vybranou verzi z [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
Doporučujeme stáhnout nejnovější dostupnou verzi.
- Verze ladění (pro lidi, kteří chtějí ladit aplikaci, zejména požadavky na server VULCAN)
Přejděte [sem](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Přejděte na první výsledek shora nebo vyberte verzi DEV, kterou chcete stáhnout.
Stáhněte si vybranou verzi ze souborů vygenerovaných při sestavování aplikace.
> Chcete si přečíst více o projektu Wulkanowy?
>
> [Klikněte zde](https://github.com/wulkanowy/wulkanowy)
1. Vydaná verze (**doporučeno pro většinu uživatelů**):
Stáhněte si vybranou verzi z [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
Doporučujeme stáhnout nejnovější dostupnou verzi.
2. Verze ladění (pro lidi, kteří chtějí ladit aplikaci, zejména požadavky na server VULCAN):
Přejděte [sem](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Přejděte na první výsledek shora nebo vyberte verzi DEV, kterou chcete stáhnout.
Stáhněte si vybranou verzi ze souborů vygenerovaných při sestavování aplikace.
# O projektu Wulkanowy
Chcete si přečíst více o projektu Wulkanowy? [Klikněte sem](https://github.com/wulkanowy/wulkanowy)

View File

@ -8,30 +8,34 @@
* Kommentare ausblenden.
* Anwesenheit fälschen %
So greifen Sie auf das verborgene Panel zu:
1. Gehen Sie auf die Registerkarte "Mehr".
2. Gehen Sie zum Bereich "Einstellungen".
3. Gehen Sie auf das Feld "Über die Anwendung".
4. Klicken Sie 5 Mal auf das Logo der Anwendung
5. Gehen Sie zurück zu den Einstellungen (Sie müssen die Ansicht aktualisieren, zum Startbildschirm wechseln und zu den Einstellungen zurückkehren)
So gelangen Sie zum ausgeblendeten Bereich:
1. Gehen Sie zur Registerkarte „Mehr“.
2. Gehen Sie zum Bereich „Einstellungen“.
3. Gehen Sie zum Bereich „Über die Anwendung“.
4. Klicken Sie fünfmal auf das Anwendungslogo
5. Gehen Sie zum Startbildschirm
6. Gehen Sie zu den Einstellungen
7. Geben Sie „Geheime Einstellungen“ ein
# Installation
Legende:
- `*-fdroid-*` an F-Droid angepasste Version
- `*-hms-*` an Huawei AppGallery angepasste Version
- `*-play-*` an den Play Store angepasste Version
| Dateiname | Angepasst an |
| ---------------- | ----------------- |
| `*-fdroid-*.apk` | F-Droid |
| `*-hms-*.apk` | Huawei AppGallery |
| `*-play-*.apk` | Play Store |
- Release-Version (**für die meisten Benutzer empfohlen**)
Laden Sie die ausgewählte Version von [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases) herunter.
Wir empfehlen, die neueste verfügbare Version herunterzuladen.
- Debug-Version (für Leute, die die Anwendung debuggen möchten, insbesondere Anfragen an den VULCAN-Server)
Gehen Sie [hier](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Gehen Sie zum ersten Ergebnis von oben oder wählen Sie die DEV-Version aus, die Sie herunterladen möchten.
Laden Sie die ausgewählte Version aus den beim Erstellen der Anwendung generierten Dateien herunter.
1. Release-Version (**empfohlen für die meisten Benutzer**):
> Möchten Sie mehr über das Wulkanowy-Projekt lesen?
>
> [Klicken Sie hier](https://github.com/wulkanowy/wulkanowy)
Laden Sie die ausgewählte Version von [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases) herunter.
Wir empfehlen, die neueste verfügbare Version herunterzuladen.
2. Debug-Version (für Leute, die die Anwendung debuggen möchten, insbesondere Anfragen an den VULCAN-Server):
Gehen Sie [hier](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Gehen Sie zum ersten Ergebnis von oben oder wählen Sie die DEV-Version aus, die Sie herunterladen möchten.
Laden Sie die ausgewählte Version aus den beim Erstellen der Anwendung generierten Dateien herunter.
# Über das Wulkanowy-Projekt
Möchten Sie mehr über das Wulkanowy-Projekt lesen? [Hier klicken](https://github.com/wulkanowy/wulkanowy)

View File

@ -9,29 +9,33 @@
* fake attendance %.
To get to the hidden panel:
1. go to the "More" tab
2. go to the "Settings" panel
3. go to the "About application" panel
4. click 5 times on the application logo
5. go back to settings (a refresh of the view will be required, go to the home screen and return to settings)
1. Go to the "More" tab
2. Go to the "Settings" panel
3. Go to the "About application" panel
4. Click on the application logo 5 times
5. Go to the home screen
6. Go to settings
7. Enter "secret settings"
# Installation
Legend:
- `*-fdroid-*` - version adapted to F-Droid
- `*-hms-*` - version adapted to Huawei AppGallery
- `*-play-*` - version adapted to the Play Store
| File name | Adapted to |
| ---------------- | ----------------- |
| `*-fdroid-*.apk` | F-Droid |
| `*-hms-*.apk` | Huawei AppGallery |
| `*-play-*.apk` | Play Store |
- Release version (**recommended for most users**)
Download the selected version from [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
We recommend downloading the latest available version.
- Debug version (for people who want to debug the application, especially requests to the VULCAN server)
Go [here](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Go to the first result from the top or select the DEV version you want to download.
Download the selected version from artifacts generated when building the application.
1. Release version (**recommended for most users**):
> Do you want to read more about the Wulkanowy project?
>
> [Click here](https://github.com/wulkanowy/wulkanowy)
Download the selected version from [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
We recommend downloading the latest available version.
2. Debug version (for people who want to debug the application, especially requests to the VULCAN server):
Go [here](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Go to the first result from the top or select the DEV version you want to download.
Download the selected version from the files generated when building the application.
# About the Wulkanowy project
Want to read more about the Wulkanowy project? [Click here](https://github.com/wulkanowy/wulkanowy)

View File

@ -13,25 +13,29 @@ Aby dostać się do ukrytego panelu:
2. Przejdź do panelu "Ustawienia"
3. Przejdź do panelu "O aplikacji"
4. Kliknij 5 razy w logo aplikacji
5. Wróć do ustawień (wymagane będzie odświeżenie widoku, przejdź na ekran główny i wróć do ustawień)
5. Przejdź na ekran główny
6. Wejdź w ustawienia
7. Wejdź w "sekretne ustawienia"
# Instalacja
Legenda:
- `*-fdroid-*` - wersja przystosowana do F-Droid
- `*-hms-*` - wersja przystosowana do Huawei AppGallery
- `*-play-*` - wersja przystosowana do Play Store
| Nazwa pliku | Przystosowana do |
| ---------------- | ----------------- |
| `*-fdroid-*.apk` | F-Droid |
| `*-hms-*.apk` | Huawei AppGallery |
| `*-play-*.apk` | Sklep Play |
- Wersja release (**zalecana dla większości użytkowników**)
Pobierz wybraną wersję z [wydań](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
Zalecamy pobranie najnowszej dostępnej wersji.
- Wersja debug (dla osób chcących debugować aplikację, a w szczególności żądania do serwera VULCANa)
Udaj się [tutaj](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Wejdź na pierwszy wynik od góry, bądź wybierz wersję DEV którą chcesz pobrać.
Pobierz wybraną wersję z plików wygenerowanych podczas budowania aplikacji.
1. Wersja release (**zalecana dla większości użytkowników**):
> Chcesz poczytać więcej o projekcie Wulkanowy?
>
> [Kliknij tutaj](https://github.com/wulkanowy/wulkanowy)
Pobierz wybraną wersję z [wydań](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
Zalecamy pobranie najnowszej dostępnej wersji.
2. Wersja debug (dla osób chcących debugować aplikację, a w szczególności żądania do serwera VULCANa):
Udaj się [tutaj](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Wejdź na pierwszy wynik od góry, bądź wybierz wersję DEV którą chcesz pobrać.
Pobierz wybraną wersję z plików wygenerowanych podczas budowania aplikacji.
# O projekcie Wulkanowy
Chcesz poczytać więcej o projekcie Wulkanowy? [Kliknij tutaj](https://github.com/wulkanowy/wulkanowy)

View File

@ -8,30 +8,34 @@
* Skryť komentáre.
* falošná dochádzka %
Prístup k skrytému panelu:
1. prejdite na kartu "Viac".
2. prejdite na panel "Nastavenia".
3. prejdite na panel "O aplikácii"
4. 5-krát kliknite na logo aplikácie
5. vráťte sa do nastavení (budete musieť obnoviť zobrazenie, prejsť na domovskú obrazovku a vrátiť sa do nastavení)
Ak chcete prejsť na skrytý panel:
1. Prejdite na kartu „Viac“.
2. Prejdite na panel „Nastavenia“.
3. Prejdite na panel „O aplikácii“.
4. Kliknite 5-krát na logo aplikácie
5. Prejdite na domovskú obrazovku
6. Prejdite do nastavení
7. Zadajte „tajné nastavenia“
# Inštalácia
Legenda:
- `*-fdroid-*` - verzia prispôsobená pre F-Droid
- `*-hms-*` - verzia prispôsobená Huawei AppGallery
- `*-play-*` - verzia prispôsobená Obchodu Play
| Názov súboru | Prispôsobené |
| ---------------- | ----------------- |
| `*-fdroid-*.apk` | F-Droid |
| `*-hms-*.apk` | Huawei AppGallery |
| `*-play-*.apk` | Play Store |
- Verzia vydania (**odporúčané pre väčšinu používateľov**)
1. Verzia vydania (**odporúčané pre väčšinu používateľov**):
Stiahnite si vybranú verziu z [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
Odporúčame stiahnuť najnovšiu dostupnú verziu.
- Verzia ladenia (pre ľudí, ktorí chcú ladiť aplikáciu, najmä požiadavky na server VULCAN)
Choďte [sem](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Prejdite na prvý výsledok zhora alebo vyberte verziu DEV, ktorú chcete stiahnuť.
Stiahnite si vybranú verziu zo súborov vygenerovaných pri zostavovaní aplikácie.
Stiahnite si vybranú verziu z [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
Odporúčame stiahnuť najnovšiu dostupnú verziu.
> Chcete si prečítať viac o projekte Wulkanowy?
>
> [Kliknite sem](https://github.com/wulkanowy/wulkanowy)
2. Verzia ladenia (pre ľudí, ktorí chcú ladiť aplikáciu, najmä požiadavky na server VULCAN):
Choďte [sem](https://git.sador.me/sadorowo/wulkanowy-mod/actions?workflow=build_android_debug.yml).
Prejdite na prvý výsledok zhora alebo vyberte verziu DEV, ktorú chcete stiahnuť.
Stiahnite si vybranú verziu zo súborov vygenerovaných pri zostavovaní aplikácie.
# O projekte Wulkanowy
Chcete si prečítať viac o projekte Wulkanowy? [Kliknite sem](https://github.com/wulkanowy/wulkanowy)

View File

@ -27,8 +27,8 @@ android {
testApplicationId "io.github.tests.wulkanowy"
minSdkVersion 21
targetSdkVersion 34
versionCode 164
versionName "2.6.4"
versionCode 165
versionName "2.6.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resValue "string", "app_name", "Wulkanowy"
@ -161,7 +161,7 @@ play {
track = 'production'
releaseStatus = ReleaseStatus.IN_PROGRESS
userFraction = 0.99d
updatePriority = 4
updatePriority = 3
enabled.set(false)
}
@ -191,7 +191,7 @@ ext {
}
dependencies {
implementation 'io.github.wulkanowy:sdk:2.6.3'
implementation 'io.github.wulkanowy:sdk:2.6.4'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'

View File

@ -13,8 +13,8 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import io.github.wulkanowy.data.api.AdminMessageService
import io.github.wulkanowy.data.api.SchoolsService
import io.github.wulkanowy.data.api.services.SchoolsService
import io.github.wulkanowy.data.api.services.WulkanowyService
import io.github.wulkanowy.data.db.AppDatabase
import io.github.wulkanowy.data.db.SharedPrefProvider
import io.github.wulkanowy.data.repositories.PreferencesRepository
@ -71,7 +71,7 @@ internal class DataModule {
okHttpClient: OkHttpClient,
json: Json,
appInfo: AppInfo
): AdminMessageService = Retrofit.Builder()
): WulkanowyService = Retrofit.Builder()
.baseUrl(appInfo.messagesBaseUrl)
.client(okHttpClient)
.addConverterFactory(json.asConverterFactory("application/json".toMediaType()))

View File

@ -5,6 +5,7 @@ import io.github.wulkanowy.data.db.dao.StudentDao
import io.github.wulkanowy.data.db.entities.Semester
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.db.entities.StudentIsEduOne
import io.github.wulkanowy.data.repositories.WulkanowyRepository
import io.github.wulkanowy.sdk.Sdk
import io.github.wulkanowy.utils.RemoteConfigHelper
import io.github.wulkanowy.utils.WebkitCookieManagerProxy
@ -20,6 +21,7 @@ class WulkanowySdkFactory @Inject constructor(
private val remoteConfig: RemoteConfigHelper,
private val webkitCookieManagerProxy: WebkitCookieManagerProxy,
private val studentDb: StudentDao,
private val wulkanowyRepository: WulkanowyRepository,
) {
private val eduOneMutex = Mutex()
@ -36,14 +38,29 @@ class WulkanowySdkFactory @Inject constructor(
addInterceptor(chuckerInterceptor, network = true)
}
fun create() = sdk
fun createBase() = sdk
suspend fun create(): Sdk {
val mapping = wulkanowyRepository.getMapping()
return createBase().apply {
if (mapping != null) {
endpointsMapping = mapping.endpoints
vTokenMapping = mapping.vTokens
}
}
}
suspend fun create(student: Student, semester: Semester? = null): Sdk {
val overrideIsEduOne = checkEduOneAndMigrateIfNecessary(student)
return buildSdk(student, semester, overrideIsEduOne)
}
private fun buildSdk(student: Student, semester: Semester?, isStudentEduOne: Boolean): Sdk {
private suspend fun buildSdk(
student: Student,
semester: Semester?,
isStudentEduOne: Boolean
): Sdk {
return create().apply {
email = student.email
password = student.password

View File

@ -0,0 +1,14 @@
package io.github.wulkanowy.data.api.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class Mapping(
@SerialName("endpoints")
val endpoints: Map<String, Map<String, Map<String, String>>>,
@SerialName("vTokens")
val vTokens: Map<String, Map<String, Map<String, String>>>,
)

View File

@ -1,4 +1,4 @@
package io.github.wulkanowy.data.api
package io.github.wulkanowy.data.api.services
import io.github.wulkanowy.data.pojos.IntegrityRequest
import io.github.wulkanowy.data.pojos.LoginEvent

View File

@ -1,12 +1,16 @@
package io.github.wulkanowy.data.api
package io.github.wulkanowy.data.api.services
import io.github.wulkanowy.data.api.models.Mapping
import io.github.wulkanowy.data.db.entities.AdminMessage
import retrofit2.http.GET
import javax.inject.Singleton
@Singleton
interface AdminMessageService {
interface WulkanowyService {
@GET("/v1.json")
suspend fun getAdminMessages(): List<AdminMessage>
}
@GET("/mapping1.json")
suspend fun getMapping(): Mapping
}

View File

@ -10,6 +10,7 @@ import com.fredporciuncula.flow.preferences.Serializer
import com.fredporciuncula.flow.preferences.map
import dagger.hilt.android.qualifiers.ApplicationContext
import io.github.wulkanowy.R
import io.github.wulkanowy.data.api.models.Mapping
import io.github.wulkanowy.data.enums.AppTheme
import io.github.wulkanowy.data.enums.AttendanceCalculatorSortingMode
import io.github.wulkanowy.data.enums.GradeColorTheme
@ -445,6 +446,15 @@ class PreferencesRepository @Inject constructor(
get() = sharedPref.getString(PREF_KEY_INSTALLATION_ID, null).orEmpty()
private set(value) = sharedPref.edit { putString(PREF_KEY_INSTALLATION_ID, value) }
var mapping: Mapping?
get() {
val value = sharedPref.getString("mapping", null)
return value?.let { json.decodeFromString(it) }
}
set(value) = sharedPref.edit(commit = true) {
putString("mapping", value?.let { json.encodeToString(it) })
}
init {
if (installationId.isEmpty()) {
installationId = UUID.randomUUID().toString()

View File

@ -1,7 +1,7 @@
package io.github.wulkanowy.data.repositories
import io.github.wulkanowy.data.WulkanowySdkFactory
import io.github.wulkanowy.data.api.SchoolsService
import io.github.wulkanowy.data.api.services.SchoolsService
import io.github.wulkanowy.data.db.entities.Semester
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.db.entities.StudentWithSemesters

View File

@ -1,20 +1,23 @@
package io.github.wulkanowy.data.repositories
import io.github.wulkanowy.data.Resource
import io.github.wulkanowy.data.api.AdminMessageService
import io.github.wulkanowy.data.api.models.Mapping
import io.github.wulkanowy.data.api.services.WulkanowyService
import io.github.wulkanowy.data.db.dao.AdminMessageDao
import io.github.wulkanowy.data.db.entities.AdminMessage
import io.github.wulkanowy.data.networkBoundResource
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filterNot
import kotlinx.coroutines.sync.Mutex
import timber.log.Timber
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class AdminMessageRepository @Inject constructor(
private val adminMessageService: AdminMessageService,
class WulkanowyRepository @Inject constructor(
private val wulkanowyService: WulkanowyService,
private val adminMessageDao: AdminMessageDao,
private val preferencesRepository: PreferencesRepository,
) {
private val saveFetchResultMutex = Mutex()
@ -24,11 +27,28 @@ class AdminMessageRepository @Inject constructor(
mutex = saveFetchResultMutex,
isResultEmpty = { false },
query = { adminMessageDao.loadAll() },
fetch = { adminMessageService.getAdminMessages() },
fetch = { wulkanowyService.getAdminMessages() },
shouldFetch = { true },
saveFetchResult = { oldItems, newItems ->
adminMessageDao.removeOldAndSaveNew(oldItems, newItems)
},
)
.filterNot { it is Resource.Intermediate }
suspend fun getMapping(): Mapping? {
var savedMapping = preferencesRepository.mapping
if (savedMapping == null) {
fetchMapping()
savedMapping = preferencesRepository.mapping
}
return savedMapping
}
suspend fun fetchMapping() {
runCatching { wulkanowyService.getMapping() }
.onFailure { Timber.e(it) }
.onSuccess { preferencesRepository.mapping = it }
}
}

View File

@ -5,14 +5,14 @@ import io.github.wulkanowy.data.db.entities.AdminMessage
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.enums.MessageType
import io.github.wulkanowy.data.mapResourceData
import io.github.wulkanowy.data.repositories.AdminMessageRepository
import io.github.wulkanowy.data.repositories.PreferencesRepository
import io.github.wulkanowy.data.repositories.WulkanowyRepository
import io.github.wulkanowy.utils.AppInfo
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
class GetAppropriateAdminMessageUseCase @Inject constructor(
private val adminMessageRepository: AdminMessageRepository,
private val wulkanowyRepository: WulkanowyRepository,
private val preferencesRepository: PreferencesRepository,
private val appInfo: AppInfo
) {
@ -22,7 +22,7 @@ class GetAppropriateAdminMessageUseCase @Inject constructor(
}
operator fun invoke(scrapperBaseUrl: String, type: MessageType): Flow<Resource<AdminMessage?>> {
return adminMessageRepository.getAdminMessages().mapResourceData { adminMessages ->
return wulkanowyRepository.getAdminMessages().mapResourceData { adminMessages ->
adminMessages
.asSequence()
.filter { it.isNotDismissed() }

View File

@ -59,7 +59,7 @@ class CaptchaDialog : BaseDialogFragment<DialogCaptchaBinding>() {
webView = this
with(settings) {
javaScriptEnabled = true
userAgentString = wulkanowySdkFactory.create().userAgent
userAgentString = wulkanowySdkFactory.createBase().userAgent
}
webViewClient = object : WebViewClient() {

View File

@ -118,5 +118,6 @@ class LoginActivity : BaseActivity<LoginPresenter, ActivityLoginBinding>(), Logi
override fun onResume() {
super.onResume()
inAppUpdateHelper.onResume()
presenter.updateSdkMappings()
}
}

View File

@ -1,12 +1,15 @@
package io.github.wulkanowy.ui.modules.login
import io.github.wulkanowy.data.repositories.StudentRepository
import io.github.wulkanowy.data.repositories.WulkanowyRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.ui.base.ErrorHandler
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
class LoginPresenter @Inject constructor(
private val wulkanowyRepository: WulkanowyRepository,
errorHandler: ErrorHandler,
studentRepository: StudentRepository
) : BasePresenter<LoginView>(errorHandler, studentRepository) {
@ -16,4 +19,11 @@ class LoginPresenter @Inject constructor(
view.initView()
Timber.i("Login view was initialized")
}
fun updateSdkMappings() {
presenterScope.launch {
runCatching { wulkanowyRepository.fetchMapping() }
.onFailure { Timber.e(it) }
}
}
}

View File

@ -138,6 +138,7 @@ class MainActivity : BaseActivity<MainPresenter, ActivityMainBinding>(), MainVie
override fun onResume() {
super.onResume()
inAppUpdateHelper.onResume()
presenter.updateSdkMappings()
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {

View File

@ -6,6 +6,7 @@ import io.github.wulkanowy.data.onResourceError
import io.github.wulkanowy.data.onResourceSuccess
import io.github.wulkanowy.data.repositories.PreferencesRepository
import io.github.wulkanowy.data.repositories.StudentRepository
import io.github.wulkanowy.data.repositories.WulkanowyRepository
import io.github.wulkanowy.data.resourceFlow
import io.github.wulkanowy.services.sync.SyncManager
import io.github.wulkanowy.ui.base.BasePresenter
@ -29,6 +30,7 @@ class MainPresenter @Inject constructor(
errorHandler: ErrorHandler,
studentRepository: StudentRepository,
private val preferencesRepository: PreferencesRepository,
private val wulkanowyRepository: WulkanowyRepository,
private val syncManager: SyncManager,
private val analytics: AnalyticsHelper,
private val json: Json,
@ -199,4 +201,11 @@ class MainPresenter @Inject constructor(
.onFailure { errorHandler.dispatch(it) }
}
}
fun updateSdkMappings() {
presenterScope.launch {
runCatching { wulkanowyRepository.fetchMapping() }
.onFailure { Timber.e(it) }
}
}
}

View File

@ -1,5 +1,5 @@
Wersja 2.6.4
Wersja 2.6.5
— naprawiliśmy dostęp do modułu ucznia i modułu wiadomości po kolejnej próbie blokady nas (niestety jeszcze bez nowego modułu ucznia)
— naprawiliśmy pozostałe bieżące problemy spowodowane ostatnimi blokadami Wulkanowego przez wiadomo kogo
Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases

View File

@ -8,6 +8,7 @@ import io.mockk.mockk
fun createWulkanowySdkFactoryMock(sdk: Sdk) = mockk<WulkanowySdkFactory>()
.apply {
every { create() } returns sdk
every { createBase() } returns sdk
coEvery { create() } returns sdk
coEvery { create(any(), any()) } returns sdk
}

View File

@ -11,7 +11,6 @@ import io.github.wulkanowy.sdk.pojo.RegisterStudent
import io.mockk.Runs
import io.mockk.coEvery
import io.mockk.coVerify
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import io.mockk.spyk
@ -40,11 +39,12 @@ class WulkanowySdkFactoryTest {
chuckerInterceptor = mockk(),
remoteConfig = mockk(relaxed = true),
webkitCookieManagerProxy = mockk(),
studentDb = studentDao
studentDb = studentDao,
wulkanowyRepository = mockk(relaxed = true),
)
)
every { wulkanowySdkFactory.create() } returns sdk
coEvery { wulkanowySdkFactory.create() } returns sdk
}
@Test

View File

@ -3,6 +3,7 @@ package io.github.wulkanowy.ui.modules.main
import io.github.wulkanowy.MainCoroutineRule
import io.github.wulkanowy.data.repositories.PreferencesRepository
import io.github.wulkanowy.data.repositories.StudentRepository
import io.github.wulkanowy.data.repositories.WulkanowyRepository
import io.github.wulkanowy.services.sync.SyncManager
import io.github.wulkanowy.ui.base.ErrorHandler
import io.github.wulkanowy.utils.AdsHelper
@ -31,6 +32,9 @@ class MainPresenterTest {
@MockK
lateinit var studentRepository: StudentRepository
@MockK(relaxed = true)
lateinit var wulkanowyRepository: WulkanowyRepository
@MockK(relaxed = true)
lateinit var prefRepository: PreferencesRepository
@ -65,7 +69,8 @@ class MainPresenterTest {
analytics = analytics,
json = Json,
appInfo = appInfo,
adsHelper = adsHelper
adsHelper = adsHelper,
wulkanowyRepository = wulkanowyRepository
)
presenter.onAttachView(mainView, null)
}