1
0
mirror of https://github.com/wulkanowy/wulkanowy.git synced 2025-02-20 20:44:44 +01:00

Drop support for android 4.x (#1232)

This commit is contained in:
Rafał Borcz 2021-04-03 11:56:07 +02:00 committed by GitHub
parent 0bdd33ef4a
commit 6cb4ea4b0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 42 additions and 165 deletions

View File

@ -19,11 +19,10 @@ android {
defaultConfig {
applicationId "io.github.wulkanowy"
testApplicationId "io.github.tests.wulkanowy"
minSdkVersion 17
minSdkVersion 21
targetSdkVersion 30
versionCode 90
versionName "1.1.4"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@ -78,7 +77,6 @@ android {
productFlavors {
hms {
dimension "platform"
minSdkVersion 19
manifestPlaceholders = [
install_channel: "AppGallery"
]
@ -175,7 +173,6 @@ dependencies {
implementation "androidx.appcompat:appcompat-resources:1.2.0"
implementation "androidx.fragment:fragment-ktx:1.3.2"
implementation "androidx.annotation:annotation:1.2.0"
implementation "androidx.multidex:multidex:2.0.1"
implementation "androidx.preference:preference-ktx:1.1.1"
implementation "androidx.recyclerview:recyclerview:1.1.0"

View File

@ -1,8 +1,8 @@
apply plugin: "jacoco"
jacoco {
toolVersion "0.8.5"
reportsDir = file("$buildDir/reports")
toolVersion "0.8.6"
reportsDirectory = file("$buildDir/reports")
}
tasks.withType(Test) {

View File

@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />

View File

@ -2,14 +2,12 @@ package io.github.wulkanowy
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import android.util.Log.DEBUG
import android.util.Log.INFO
import android.util.Log.VERBOSE
import android.webkit.WebView
import androidx.fragment.app.FragmentManager
import androidx.hilt.work.HiltWorkerFactory
import androidx.multidex.MultiDex
import androidx.work.Configuration
import com.yariksoffice.lingver.Lingver
import dagger.hilt.android.HiltAndroidApp
@ -43,11 +41,6 @@ class WulkanowyApp : Application(), Configuration.Provider {
@Inject
lateinit var analyticsHelper: AnalyticsHelper
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
MultiDex.install(this)
}
@SuppressLint("UnsafeOptInUsageWarning")
override fun onCreate() {
super.onCreate()

View File

@ -15,6 +15,7 @@ class AppCreatorRepository @Inject constructor(
private val dispatchers: DispatchersProvider
) {
@Suppress("BlockingMethodInNonBlockingContext")
suspend fun getAppCreators() = withContext(dispatchers.backgroundThread) {
val moshi = Moshi.Builder().build()
val type = Types.newParameterizedType(List::class.java, Contributor::class.java)

View File

@ -2,7 +2,6 @@ package io.github.wulkanowy.data.repositories
import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit
import dagger.hilt.android.qualifiers.ApplicationContext
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.modules.grade.GradeAverageMode
@ -151,10 +150,6 @@ class PreferencesRepository @Inject constructor(
R.string.pref_key_optional_arithmetic_average,
R.bool.pref_default_optional_arithmetic_average
)
var isKitkatDialogDisabled: Boolean
get() = sharedPref.getBoolean("kitkat_dialog_disabled", false)
set(value) = sharedPref.edit { putBoolean("kitkat_dialog_disabled", value) }
private fun getString(id: Int, default: Int) = getString(context.getString(id), default)

View File

@ -4,9 +4,6 @@ import android.content.Intent
import android.content.Intent.EXTRA_EMAIL
import android.content.Intent.EXTRA_STREAM
import android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION
import android.net.Uri
import android.os.Build.VERSION.SDK_INT
import android.os.Build.VERSION_CODES.LOLLIPOP
import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
@ -81,8 +78,7 @@ class LogViewerFragment : BaseFragment<FragmentLogviewerBinding>(R.layout.fragme
putExtra(EXTRA_EMAIL, arrayOf("wulkanowyinc@gmail.com"))
addFlags(FLAG_GRANT_READ_URI_PERMISSION)
putParcelableArrayListExtra(EXTRA_STREAM, ArrayList(files.map {
if (SDK_INT < LOLLIPOP) Uri.fromFile(it)
else FileProvider.getUriForFile(requireContext(), "$APPLICATION_ID.fileprovider", it)
FileProvider.getUriForFile(requireContext(), "$APPLICATION_ID.fileprovider", it)
}))
}

View File

@ -14,7 +14,7 @@ import timber.log.Timber
import javax.inject.Inject
class AccountEditPresenter @Inject constructor(
private val appInfo: AppInfo,
appInfo: AppInfo,
errorHandler: ErrorHandler,
studentRepository: StudentRepository
) : BasePresenter<AccountEditView>(errorHandler, studentRepository) {

View File

@ -5,15 +5,11 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import io.github.wulkanowy.data.db.entities.Grade
import io.github.wulkanowy.data.db.entities.GradeSummary
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.repositories.PreferencesRepository
import io.github.wulkanowy.databinding.ItemGradeSummaryBinding
import io.github.wulkanowy.databinding.ScrollableHeaderGradeSummaryBinding
import io.github.wulkanowy.sdk.Sdk
import io.github.wulkanowy.utils.calcAverage
import io.github.wulkanowy.utils.changeModifier
import java.util.Locale
import javax.inject.Inject

View File

@ -8,7 +8,6 @@ import io.github.wulkanowy.data.db.entities.LuckyNumber
import io.github.wulkanowy.databinding.ItemLuckyNumberHistoryBinding
import io.github.wulkanowy.utils.toFormattedString
import io.github.wulkanowy.utils.weekDayName
import java.util.Locale
import javax.inject.Inject
class LuckyNumberHistoryAdapter @Inject constructor() :

View File

@ -15,7 +15,6 @@ import io.github.wulkanowy.ui.modules.main.MainView
import io.github.wulkanowy.ui.widgets.DividerItemDecoration
import io.github.wulkanowy.utils.SchooldaysRangeLimiter
import io.github.wulkanowy.utils.dpToPx
import io.github.wulkanowy.utils.getThemeAttrColor
import java.time.LocalDate
import javax.inject.Inject

View File

@ -9,8 +9,6 @@ import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.graphics.drawable.Icon
import android.os.Build
import android.os.Build.VERSION.SDK_INT
import android.os.Build.VERSION_CODES.LOLLIPOP
import android.os.Build.VERSION_CODES.P
import android.os.Bundle
import android.view.Menu
@ -211,7 +209,7 @@ class MainActivity : BaseActivity<MainPresenter, ActivityMainBinding>(), MainVie
@SuppressLint("NewApi")
override fun initView() {
with(binding.mainToolbar) {
if (SDK_INT >= LOLLIPOP) stateListAnimator = null
stateListAnimator = null
setBackgroundColor(
overlayProvider.compositeOverlayWithThemeSurfaceColorIfNeeded(dpToPx(4f))
)

View File

@ -24,7 +24,7 @@ class MainPresenter @Inject constructor(
private val analytics: AnalyticsHelper,
) : BasePresenter<MainView>(errorHandler, studentRepository) {
var studentsWitSemesters: List<StudentWithSemesters>? = null
private var studentsWitSemesters: List<StudentWithSemesters>? = null
fun onAttachView(view: MainView, initMenu: MainView.Section?) {
super.onAttachView(view)

View File

@ -8,7 +8,6 @@ import dagger.hilt.android.AndroidEntryPoint
import io.github.wulkanowy.R
import io.github.wulkanowy.databinding.FragmentMoreBinding
import io.github.wulkanowy.ui.base.BaseFragment
import io.github.wulkanowy.ui.modules.about.AboutFragment
import io.github.wulkanowy.ui.modules.conference.ConferenceFragment
import io.github.wulkanowy.ui.modules.homework.HomeworkFragment
import io.github.wulkanowy.ui.modules.luckynumber.LuckyNumberFragment

View File

@ -2,4 +2,4 @@ package io.github.wulkanowy.ui.modules.settings.advanced
import io.github.wulkanowy.ui.base.BaseView
interface AdvancedView : BaseView {}
interface AdvancedView : BaseView

View File

@ -3,10 +3,8 @@ package io.github.wulkanowy.ui.modules.splash
import android.os.Bundle
import android.widget.Toast
import android.widget.Toast.LENGTH_LONG
import androidx.appcompat.app.AlertDialog
import androidx.viewbinding.ViewBinding
import dagger.hilt.android.AndroidEntryPoint
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseActivity
import io.github.wulkanowy.ui.modules.login.LoginActivity
import io.github.wulkanowy.ui.modules.main.MainActivity
@ -46,14 +44,4 @@ class SplashActivity : BaseActivity<SplashPresenter, ViewBinding>(), SplashView
override fun showError(text: String, error: Throwable) {
Toast.makeText(this, text, LENGTH_LONG).show()
}
override fun showKitkatView() {
AlertDialog.Builder(this)
.setTitle(R.string.drop_kitkat_title)
.setMessage(R.string.drop_kitkat_content)
.setPositiveButton(android.R.string.ok, null)
.setNeutralButton(R.string.drop_kitkat_again) { _, _ -> presenter.onNeutralButtonSelected() }
.setOnDismissListener { presenter.onKitkatViewDismissed() }
.show()
}
}

View File

@ -1,12 +1,9 @@
package io.github.wulkanowy.ui.modules.splash
import android.os.Build
import io.github.wulkanowy.data.Status
import io.github.wulkanowy.data.repositories.PreferencesRepository
import io.github.wulkanowy.data.repositories.StudentRepository
import io.github.wulkanowy.ui.base.BasePresenter
import io.github.wulkanowy.ui.base.ErrorHandler
import io.github.wulkanowy.utils.AppInfo
import io.github.wulkanowy.utils.flowWithResource
import kotlinx.coroutines.flow.onEach
import timber.log.Timber
@ -15,26 +12,13 @@ import javax.inject.Inject
class SplashPresenter @Inject constructor(
errorHandler: ErrorHandler,
studentRepository: StudentRepository,
private val preferencesRepository: PreferencesRepository,
private val appInfo: AppInfo
) : BasePresenter<SplashView>(errorHandler, studentRepository) {
private var externalUrl: String? = null
fun onAttachView(view: SplashView, externalUrl: String?) {
super.onAttachView(view)
this.externalUrl = externalUrl
if (appInfo.systemVersion < Build.VERSION_CODES.LOLLIPOP && !preferencesRepository.isKitkatDialogDisabled) {
view.showKitkatView()
} else {
loadCorrectDataOrUser()
}
}
private fun loadCorrectDataOrUser() {
if (!externalUrl.isNullOrBlank()) {
view?.openExternalUrlAndFinish(externalUrl!!)
view.openExternalUrlAndFinish(externalUrl)
return
}
@ -42,19 +26,11 @@ class SplashPresenter @Inject constructor(
when (it.status) {
Status.LOADING -> Timber.d("Is current user set check started")
Status.SUCCESS -> {
if (it.data!!) view?.openMainView()
else view?.openLoginView()
if (it.data!!) view.openMainView()
else view.openLoginView()
}
Status.ERROR -> errorHandler.dispatch(it.error!!)
}
}.launch()
}
fun onKitkatViewDismissed() {
loadCorrectDataOrUser()
}
fun onNeutralButtonSelected() {
preferencesRepository.isKitkatDialogDisabled = true
}
}

View File

@ -9,6 +9,4 @@ interface SplashView : BaseView {
fun openMainView()
fun openExternalUrlAndFinish(url: String)
fun showKitkatView()
}

View File

@ -113,7 +113,7 @@ class TimetableWidgetFactory(
}
} catch (e: Exception) {
Timber.e(e, "An error has occurred in timetable widget factory")
emptyList<Timetable>()
emptyList()
}
@SuppressLint("DefaultLocale")

View File

@ -230,7 +230,7 @@ class TimetableWidgetProvider : HiltBroadcastReceiver() {
private suspend fun getStudent(studentId: Long, appWidgetId: Int) = try {
val students = studentRepository.getSavedStudents(false)
val student = students.singleOrNull { it -> it.student.id == studentId }?.student
val student = students.singleOrNull { it.student.id == studentId }?.student
when {
student != null -> student
studentId != 0L && studentRepository.isCurrentStudentSet() -> {

View File

@ -58,10 +58,6 @@ private val cipher: Cipher
fun encrypt(plainText: String, context: Context): String {
if (plainText.isEmpty()) throw ScramblerException("Text to be encrypted is empty")
if (SDK_INT < JELLY_BEAN_MR2) {
return String(encode(plainText.toByteArray(KEY_CHARSET), DEFAULT), KEY_CHARSET)
}
return try {
if (!isKeyPairExists) generateKeyPair(context)
@ -90,10 +86,6 @@ fun decrypt(cipherText: String): String {
if (cipherText.isEmpty()) throw ScramblerException("Text to be encrypted is empty")
return try {
if (SDK_INT < JELLY_BEAN_MR2 || cipherText.length < 250) {
return String(decode(cipherText.toByteArray(KEY_CHARSET), DEFAULT), KEY_CHARSET)
}
if (!isKeyPairExists) throw ScramblerException("KeyPair doesn't exist")
cipher.let {

View File

@ -29,6 +29,6 @@
android:focusable="true"
android:text="@string/logviewer_refresh"
android:tint="?colorOnSecondary"
app:srcCompat="@drawable/ic_refresh" />
app:srcCompat="@drawable/ic_refresh"
tools:ignore="ContentDescription" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -111,5 +111,6 @@
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:tint="?colorOnSecondary"
app:srcCompat="@drawable/ic_all_add" />
app:srcCompat="@drawable/ic_all_add"
tools:ignore="ContentDescription" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -52,7 +52,8 @@
android:layout_height="32dp"
android:visibility="gone"
app:srcCompat="@drawable/ic_excuse_waiting"
app:tint="?attr/colorOnSurface" />
app:tint="?attr/colorOnSurface"
tools:ignore="ContentDescription" />
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout

View File

@ -21,7 +21,8 @@
android:src="@drawable/ic_widget_clover"
android:tint="@android:color/white"
android:visibility="gone"
tools:visibility="visible" />
tools:visibility="visible"
tools:ignore="UseAppTint" />
<TextView
android:id="@+id/luckyNumberWidgetTitle"
@ -46,7 +47,8 @@
android:src="@drawable/ic_widget_clover"
android:tint="@android:color/white"
android:visibility="gone"
tools:visibility="visible" />
tools:visibility="visible"
tools:ignore="UseAppTint" />
<TextView
android:id="@+id/luckyNumberWidgetNumber"

View File

@ -10,44 +10,38 @@
<item name="colorSwipeRefresh">@color/colorSwipeRefreshDark</item>
<item name="android:windowBackground">?colorSurface</item>
<item name="android:textColor">?android:textColorPrimary</item>
<item name="android:navigationBarColor" tools:targetApi="lollipop">
@color/colorNavigationBarLight
</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">
@color/colorStatusBarLight
</item>
<item name="android:navigationBarColor">@color/colorNavigationBarLight</item>
<item name="android:statusBarColor">@color/colorStatusBarLight</item>
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
<item name="mdtp_theme_dark">true</item>
<item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
<item name="mdtp_theme_dark">true</item>
</style>
<style name="WulkanowyTheme.Black" parent="WulkanowyTheme.NoActionBar">
<item name="colorSurface">@android:color/black</item>
<item name="android:navigationBarColor" tools:targetApi="lollipop">
@color/colorNavigationBarBlack
</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">@color/colorStatusBarBlack</item>
<item name="android:navigationBarColor">@color/colorNavigationBarBlack</item>
<item name="android:statusBarColor">@color/colorStatusBarBlack</item>
<item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
</style>
<style name="WulkanowyTheme.Login" parent="WulkanowyTheme.NoActionBar">
<item name="android:navigationBarColor" tools:targetApi="lollipop">?colorSurface</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">?colorSurface</item>
<item name="android:navigationBarColor">?colorSurface</item>
<item name="android:statusBarColor">?colorSurface</item>
</style>
<style name="WulkanowyTheme.Login.Black" parent="WulkanowyTheme.Black">
<item name="android:navigationBarColor" tools:targetApi="lollipop">?colorSurface</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">?colorSurface</item>
<item name="android:navigationBarColor">?colorSurface</item>
<item name="android:statusBarColor">?colorSurface</item>
</style>
<style name="WulkanowyTheme.MessageSend" parent="WulkanowyTheme.NoActionBar">
<item name="android:navigationBarColor" tools:targetApi="lollipop">?colorSurface</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">#1C1C1C</item>
<item name="android:navigationBarColor">?colorSurface</item>
<item name="android:statusBarColor">#1C1C1C</item>
</style>
<style name="WulkanowyTheme.MessageSend.Black" parent="WulkanowyTheme.Black">
<item name="android:navigationBarColor" tools:targetApi="lollipop">?colorSurface</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/black</item>
<item name="android:navigationBarColor">?colorSurface</item>
<item name="android:statusBarColor">@android:color/black</item>
</style>
<style name="WulkanowyTheme.WidgetAccountSwitcher" parent="Theme.MaterialComponents.Dialog">

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="WulkanowyTheme" parent="BaseWulkanowyTheme">
<item name="android:statusBarColor">@android:color/darker_gray</item>
</style>
<style name="WulkanowyTheme.SplashScreen" parent="WulkanowyTheme.NoActionBar">
<item name="android:windowBackground">@drawable/layer_splash_background</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
</style>
</resources>

View File

@ -109,15 +109,4 @@
<item>both_semesters</item>
<item>all_year</item>
</string-array>
<string-array name="timetable_show_whole_class_entries">
<item>Don\'t show</item>
<item>Show all</item>
<item>Show smaller</item>
</string-array>
<string-array name="timetable_show_whole_class_values" translatable="false">
<item>no</item>
<item>yes</item>
<item>small</item>
</string-array>
</resources>

View File

@ -40,7 +40,6 @@
<string name="login_type_hybrid">Hybrid</string>
<string name="login_token_hint">Token</string>
<string name="login_pin_hint">PIN</string>
<string name="login_api_key_hint">API key</string>
<string name="login_symbol_hint">Symbol</string>
<string name="login_sign_in">Sign in</string>
<string name="login_invalid_password">Password too short</string>
@ -66,7 +65,6 @@
<string name="login_contact_email">Email</string>
<string name="login_contact_discord">Discord</string>
<string name="login_email_intent_title">Send email</string>
<string name="login_email_details">Describe details of problem:</string>
<string name="login_email_subject" translatable="false">Zgłoszenie: Problemy z logowaniem</string>
<string name="login_email_text" translatable="false">Informacje o aplikacji:\n\nUrządzenie: %1$s\nWersja SDK: %2$s\nWersja aplikacji: %3$s\nDodatkowe informacje: %4$s\nOstatni błąd: %5$s\n\nOpis problemu: </string>
<string name="login_recover_warning">Make sure you select the correct UONET+ register variation!</string>
@ -91,13 +89,10 @@
<string name="grade_weight">Weight</string>
<string name="grade_weight_value">Weight: %s</string>
<string name="grade_comment">Comment</string>
<string name="grade_no_new_items">No new grades</string>
<string name="grade_number_new_items">Number of new ratings: %1$d</string>
<string name="grade_average">Average: %1$.2f</string>
<string name="grade_points_sum">Points: %s</string>
<string name="grade_no_average">No average</string>
<string name="grade_predicted">Predicted: %1$s</string>
<string name="grade_final">Final: %1$s</string>
<string name="grade_summary_points">Total points</string>
<string name="grade_summary_final_grade">Final grade</string>
<string name="grade_summary_predicted_grade">Predicted grade</string>
@ -188,10 +183,6 @@
<string name="attendance_unknown">Unknown</string>
<string name="attendance_number">Number of lesson</string>
<string name="attendance_no_items">No entries</string>
<plurals name="attendance_number_absences">
<item quantity="one">%1$d absence</item>
<item quantity="other">%1$d absences</item>
</plurals>
<string name="attendance_excuse_dialog_reason">Absence reason (optional)</string>
<string name="attendance_excuse_dialog_submit">Send</string>
<string name="attendance_excuse_success">Absence excuse request sent successfully!</string>
@ -200,7 +191,6 @@
<!--Attendance summary-->
<string name="attendance_summary_final">Attendance</string>
<string name="attendance_summary_total">Total</string>
@ -216,7 +206,6 @@
<string name="message_trash">Trash</string>
<string name="message_no_subject">(no subject)</string>
<string name="message_no_items">No messages</string>
<string name="message_preview_error">An error occurred while downloading message content</string>
<string name="message_from">From:</string>
<string name="message_to">To:</string>
<string name="message_date">Date: %s</string>
@ -357,8 +346,6 @@
<string name="account_logout_student">Student logout</string>
<string name="account_type_student">Student account</string>
<string name="account_type_parent">Parent account</string>
<string name="account_login_mobile_api">Mobile API mode</string>
<string name="account_login_hybrid">Hybrid mode</string>
<string name="account_details_edit">Edit data</string>
<string name="account_quick_manager">Accounts manager</string>
<string name="account_select_student">Select student</string>
@ -479,7 +466,6 @@
<string name="pref_view_timetable_show_timers">Mark current lesson</string>
<string name="pref_view_timetable_show_groups">Show groups next to subjects</string>
<string name="pref_view_grade_statistics_list">Show chart list in class grades</string>
<string name="pref_view_timetable_show_whole_class">Show whole class lessons</string>
<string name="pref_view_subjects_without_grades">Show subjects without grades</string>
<string name="pref_view_grade_color_scheme">Grades color scheme</string>
<string name="pref_view_grade_sorting_mode">Subjects sorting</string>
@ -532,7 +518,6 @@
<!--Notification Channels-->
<string name="channel_new_entries">New entries in register</string>
<string name="channel_new_grades">New grades</string>
<string name="channel_lucky_number">Lucky number</string>
<string name="channel_new_message">New messages</string>

View File

@ -11,6 +11,7 @@
<item name="colorError">@color/colorError</item>
<item name="colorDivider">@color/colorDivider</item>
<item name="colorSwipeRefresh">@color/colorSwipeRefresh</item>
<item name="android:statusBarColor">@android:color/darker_gray</item>
<item name="android:textColor">?android:textColorPrimary</item>
<item name="android:preferenceStyle">@style/PreferenceThemeOverlay</item>
<item name="mdtp_theme_dark">false</item>
@ -24,6 +25,8 @@
<style name="WulkanowyTheme.SplashScreen" parent="WulkanowyTheme.NoActionBar">
<item name="android:windowBackground">@drawable/layer_splash_background</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
</style>
<style name="WulkanowyTheme.WidgetAccountSwitcher" parent="Theme.MaterialComponents.Light.Dialog">

View File

@ -1,13 +1,10 @@
package io.github.wulkanowy.ui.modules.splash
import io.github.wulkanowy.MainCoroutineRule
import io.github.wulkanowy.data.repositories.PreferencesRepository
import io.github.wulkanowy.data.repositories.StudentRepository
import io.github.wulkanowy.ui.base.ErrorHandler
import io.github.wulkanowy.utils.AppInfo
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.verify
import org.junit.Before
@ -25,12 +22,6 @@ class SplashPresenterTest {
@MockK
lateinit var studentRepository: StudentRepository
@MockK
lateinit var preferencesRepository: PreferencesRepository
@MockK
lateinit var appInfo: AppInfo
@MockK(relaxed = true)
lateinit var errorHandler: ErrorHandler
@ -39,13 +30,11 @@ class SplashPresenterTest {
@Before
fun setUp() {
MockKAnnotations.init(this)
presenter = SplashPresenter(errorHandler, studentRepository, preferencesRepository, appInfo)
presenter = SplashPresenter(errorHandler, studentRepository)
}
@Test
fun testOpenLoginView() {
every { appInfo.systemVersion } returns 30
every { preferencesRepository.isKitkatDialogDisabled } returns true
coEvery { studentRepository.isCurrentStudentSet() } returns false
presenter.onAttachView(splashView, null)
@ -54,8 +43,6 @@ class SplashPresenterTest {
@Test
fun testMainMainView() {
every { appInfo.systemVersion } returns 30
every { preferencesRepository.isKitkatDialogDisabled } returns true
coEvery { studentRepository.isCurrentStudentSet() } returns true
presenter.onAttachView(splashView, null)