forked from github/wulkanowy-mirror
Add admin message to LoginStudentSelect and LoginSymbol (#2531)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
This commit is contained in:
parent
e1a19be06c
commit
71ab9586ac
@ -4,6 +4,8 @@ import androidx.room.ColumnInfo
|
|||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
import io.github.wulkanowy.data.enums.MessageType
|
import io.github.wulkanowy.data.enums.MessageType
|
||||||
|
import io.github.wulkanowy.data.serializers.SafeMessageTypeEnumListSerializer
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
@ -34,6 +36,8 @@ data class AdminMessage(
|
|||||||
|
|
||||||
val priority: String,
|
val priority: String,
|
||||||
|
|
||||||
|
@SerialName("messageTypes")
|
||||||
|
@Serializable(with = SafeMessageTypeEnumListSerializer::class)
|
||||||
@ColumnInfo(name = "types", defaultValue = "[]")
|
@ColumnInfo(name = "types", defaultValue = "[]")
|
||||||
val types: List<MessageType> = emptyList(),
|
val types: List<MessageType> = emptyList(),
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@ enum class MessageType {
|
|||||||
GENERAL_MESSAGE,
|
GENERAL_MESSAGE,
|
||||||
DASHBOARD_MESSAGE,
|
DASHBOARD_MESSAGE,
|
||||||
LOGIN_MESSAGE,
|
LOGIN_MESSAGE,
|
||||||
|
LOGIN_STUDENT_SELECT_MESSAGE,
|
||||||
|
LOGIN_SYMBOL_MESSAGE,
|
||||||
PASS_RESET_MESSAGE,
|
PASS_RESET_MESSAGE,
|
||||||
ERROR_OVERRIDE,
|
ERROR_OVERRIDE,
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package io.github.wulkanowy.data.serializers
|
||||||
|
|
||||||
|
import io.github.wulkanowy.data.enums.MessageType
|
||||||
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
|
import kotlinx.serialization.KSerializer
|
||||||
|
import kotlinx.serialization.builtins.ListSerializer
|
||||||
|
import kotlinx.serialization.builtins.serializer
|
||||||
|
import kotlinx.serialization.encoding.Decoder
|
||||||
|
import kotlinx.serialization.encoding.Encoder
|
||||||
|
|
||||||
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
|
object SafeMessageTypeEnumListSerializer : KSerializer<List<MessageType>> {
|
||||||
|
|
||||||
|
private val serializer = ListSerializer(String.serializer())
|
||||||
|
|
||||||
|
override val descriptor = serializer.descriptor
|
||||||
|
|
||||||
|
override fun serialize(encoder: Encoder, value: List<MessageType>) {
|
||||||
|
encoder.encodeNotNullMark()
|
||||||
|
serializer.serialize(encoder, value.map { it.name })
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun deserialize(decoder: Decoder): List<MessageType> =
|
||||||
|
serializer.deserialize(decoder).mapNotNull { enumName ->
|
||||||
|
MessageType.entries.find { it.name == enumName }
|
||||||
|
}
|
||||||
|
}
|
@ -6,10 +6,12 @@ import androidx.core.os.bundleOf
|
|||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import io.github.wulkanowy.R
|
import io.github.wulkanowy.R
|
||||||
|
import io.github.wulkanowy.data.db.entities.AdminMessage
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||||
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||||
import io.github.wulkanowy.databinding.FragmentLoginStudentSelectBinding
|
import io.github.wulkanowy.databinding.FragmentLoginStudentSelectBinding
|
||||||
import io.github.wulkanowy.ui.base.BaseFragment
|
import io.github.wulkanowy.ui.base.BaseFragment
|
||||||
|
import io.github.wulkanowy.ui.modules.dashboard.viewholders.AdminMessageViewHolder
|
||||||
import io.github.wulkanowy.ui.modules.login.LoginActivity
|
import io.github.wulkanowy.ui.modules.login.LoginActivity
|
||||||
import io.github.wulkanowy.ui.modules.login.LoginData
|
import io.github.wulkanowy.ui.modules.login.LoginData
|
||||||
import io.github.wulkanowy.ui.modules.login.support.LoginSupportDialog
|
import io.github.wulkanowy.ui.modules.login.support.LoginSupportDialog
|
||||||
@ -111,6 +113,19 @@ class LoginStudentSelectFragment :
|
|||||||
LoginSupportDialog.newInstance(supportInfo).show(childFragmentManager, "support_dialog")
|
LoginSupportDialog.newInstance(supportInfo).show(childFragmentManager, "support_dialog")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun showAdminMessage(adminMessage: AdminMessage?) {
|
||||||
|
AdminMessageViewHolder(
|
||||||
|
binding = binding.loginStudentSelectAdminMessage,
|
||||||
|
onAdminMessageDismissClickListener = presenter::onAdminMessageDismissed,
|
||||||
|
onAdminMessageClickListener = presenter::onAdminMessageSelected,
|
||||||
|
).bind(adminMessage)
|
||||||
|
binding.loginStudentSelectAdminMessage.root.isVisible = adminMessage != null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun openInternetBrowser(url: String) {
|
||||||
|
requireContext().openInternetBrowser(url)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
presenter.onDetachView()
|
presenter.onDetachView()
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
@ -2,16 +2,23 @@ package io.github.wulkanowy.ui.modules.login.studentselect
|
|||||||
|
|
||||||
import io.github.wulkanowy.data.Resource
|
import io.github.wulkanowy.data.Resource
|
||||||
import io.github.wulkanowy.data.dataOrNull
|
import io.github.wulkanowy.data.dataOrNull
|
||||||
|
import io.github.wulkanowy.data.db.entities.AdminMessage
|
||||||
import io.github.wulkanowy.data.db.entities.StudentWithSemesters
|
import io.github.wulkanowy.data.db.entities.StudentWithSemesters
|
||||||
|
import io.github.wulkanowy.data.enums.MessageType
|
||||||
|
import io.github.wulkanowy.data.flatResourceFlow
|
||||||
import io.github.wulkanowy.data.logResourceStatus
|
import io.github.wulkanowy.data.logResourceStatus
|
||||||
import io.github.wulkanowy.data.mappers.mapToStudentWithSemesters
|
import io.github.wulkanowy.data.mappers.mapToStudentWithSemesters
|
||||||
|
import io.github.wulkanowy.data.onResourceData
|
||||||
|
import io.github.wulkanowy.data.onResourceError
|
||||||
import io.github.wulkanowy.data.pojos.RegisterStudent
|
import io.github.wulkanowy.data.pojos.RegisterStudent
|
||||||
import io.github.wulkanowy.data.pojos.RegisterSymbol
|
import io.github.wulkanowy.data.pojos.RegisterSymbol
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUnit
|
import io.github.wulkanowy.data.pojos.RegisterUnit
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||||
|
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||||
import io.github.wulkanowy.data.repositories.SchoolsRepository
|
import io.github.wulkanowy.data.repositories.SchoolsRepository
|
||||||
import io.github.wulkanowy.data.repositories.StudentRepository
|
import io.github.wulkanowy.data.repositories.StudentRepository
|
||||||
import io.github.wulkanowy.data.resourceFlow
|
import io.github.wulkanowy.data.resourceFlow
|
||||||
|
import io.github.wulkanowy.domain.adminmessage.GetAppropriateAdminMessageUseCase
|
||||||
import io.github.wulkanowy.sdk.scrapper.exception.StudentGraduateException
|
import io.github.wulkanowy.sdk.scrapper.exception.StudentGraduateException
|
||||||
import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException
|
import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException
|
||||||
import io.github.wulkanowy.services.sync.SyncManager
|
import io.github.wulkanowy.services.sync.SyncManager
|
||||||
@ -33,6 +40,8 @@ class LoginStudentSelectPresenter @Inject constructor(
|
|||||||
private val syncManager: SyncManager,
|
private val syncManager: SyncManager,
|
||||||
private val analytics: AnalyticsHelper,
|
private val analytics: AnalyticsHelper,
|
||||||
private val appInfo: AppInfo,
|
private val appInfo: AppInfo,
|
||||||
|
private val preferencesRepository: PreferencesRepository,
|
||||||
|
private val getAppropriateAdminMessageUseCase: GetAppropriateAdminMessageUseCase
|
||||||
) : BasePresenter<LoginStudentSelectView>(loginErrorHandler, studentRepository) {
|
) : BasePresenter<LoginStudentSelectView>(loginErrorHandler, studentRepository) {
|
||||||
|
|
||||||
private var lastError: Throwable? = null
|
private var lastError: Throwable? = null
|
||||||
@ -65,6 +74,7 @@ class LoginStudentSelectPresenter @Inject constructor(
|
|||||||
this.loginData = loginData
|
this.loginData = loginData
|
||||||
this.registerUser = registerUser
|
this.registerUser = registerUser
|
||||||
loadData()
|
loadData()
|
||||||
|
loadAdminMessage()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadData() {
|
private fun loadData() {
|
||||||
@ -88,7 +98,20 @@ class LoginStudentSelectPresenter @Inject constructor(
|
|||||||
refreshItems()
|
refreshItems()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.launch()
|
}.launch("load_data")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadAdminMessage() {
|
||||||
|
flatResourceFlow {
|
||||||
|
getAppropriateAdminMessageUseCase(
|
||||||
|
scrapperBaseUrl = registerUser.scrapperBaseUrl.orEmpty(),
|
||||||
|
type = MessageType.LOGIN_STUDENT_SELECT_MESSAGE,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
.logResourceStatus("load login admin message")
|
||||||
|
.onResourceData { view?.showAdminMessage(it) }
|
||||||
|
.onResourceError { view?.showAdminMessage(null) }
|
||||||
|
.launch("load_admin_message")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getStudentsWithCurrentlyActiveSemesters(): List<LoginStudentSelectItem.Student> {
|
private fun getStudentsWithCurrentlyActiveSemesters(): List<LoginStudentSelectItem.Student> {
|
||||||
@ -341,4 +364,14 @@ class LoginStudentSelectPresenter @Inject constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun onAdminMessageSelected(url: String?) {
|
||||||
|
url?.let { view?.openInternetBrowser(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onAdminMessageDismissed(adminMessage: AdminMessage) {
|
||||||
|
preferencesRepository.dismissedAdminMessageIds += adminMessage.id
|
||||||
|
|
||||||
|
view?.showAdminMessage(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package io.github.wulkanowy.ui.modules.login.studentselect
|
package io.github.wulkanowy.ui.modules.login.studentselect
|
||||||
|
|
||||||
|
import io.github.wulkanowy.data.db.entities.AdminMessage
|
||||||
import io.github.wulkanowy.ui.base.BaseView
|
import io.github.wulkanowy.ui.base.BaseView
|
||||||
import io.github.wulkanowy.ui.modules.login.LoginData
|
import io.github.wulkanowy.ui.modules.login.LoginData
|
||||||
import io.github.wulkanowy.ui.modules.login.support.LoginSupportInfo
|
import io.github.wulkanowy.ui.modules.login.support.LoginSupportInfo
|
||||||
@ -25,4 +26,8 @@ interface LoginStudentSelectView : BaseView {
|
|||||||
fun openDiscordInvite()
|
fun openDiscordInvite()
|
||||||
|
|
||||||
fun openEmail(supportInfo: LoginSupportInfo)
|
fun openEmail(supportInfo: LoginSupportInfo)
|
||||||
|
|
||||||
|
fun showAdminMessage(adminMessage: AdminMessage?)
|
||||||
|
|
||||||
|
fun openInternetBrowser(url: String)
|
||||||
}
|
}
|
||||||
|
@ -9,13 +9,16 @@ import android.view.inputmethod.EditorInfo.IME_NULL
|
|||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.core.text.parseAsHtml
|
import androidx.core.text.parseAsHtml
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.widget.doOnTextChanged
|
import androidx.core.widget.doOnTextChanged
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import io.github.wulkanowy.R
|
import io.github.wulkanowy.R
|
||||||
|
import io.github.wulkanowy.data.db.entities.AdminMessage
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||||
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||||
import io.github.wulkanowy.databinding.FragmentLoginSymbolBinding
|
import io.github.wulkanowy.databinding.FragmentLoginSymbolBinding
|
||||||
import io.github.wulkanowy.ui.base.BaseFragment
|
import io.github.wulkanowy.ui.base.BaseFragment
|
||||||
|
import io.github.wulkanowy.ui.modules.dashboard.viewholders.AdminMessageViewHolder
|
||||||
import io.github.wulkanowy.ui.modules.login.LoginActivity
|
import io.github.wulkanowy.ui.modules.login.LoginActivity
|
||||||
import io.github.wulkanowy.ui.modules.login.LoginData
|
import io.github.wulkanowy.ui.modules.login.LoginData
|
||||||
import io.github.wulkanowy.ui.modules.login.support.LoginSupportDialog
|
import io.github.wulkanowy.ui.modules.login.support.LoginSupportDialog
|
||||||
@ -179,4 +182,17 @@ class LoginSymbolFragment :
|
|||||||
override fun openSupportDialog(supportInfo: LoginSupportInfo) {
|
override fun openSupportDialog(supportInfo: LoginSupportInfo) {
|
||||||
LoginSupportDialog.newInstance(supportInfo).show(childFragmentManager, "support_dialog")
|
LoginSupportDialog.newInstance(supportInfo).show(childFragmentManager, "support_dialog")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun showAdminMessage(adminMessage: AdminMessage?) {
|
||||||
|
AdminMessageViewHolder(
|
||||||
|
binding = binding.loginSymbolAdminMessage,
|
||||||
|
onAdminMessageDismissClickListener = presenter::onAdminMessageDismissed,
|
||||||
|
onAdminMessageClickListener = presenter::onAdminMessageSelected,
|
||||||
|
).bind(adminMessage)
|
||||||
|
binding.loginSymbolAdminMessage.root.isVisible = adminMessage != null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun openInternetBrowser(url: String) {
|
||||||
|
requireContext().openInternetBrowser(url)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,18 @@ package io.github.wulkanowy.ui.modules.login.symbol
|
|||||||
|
|
||||||
import io.github.wulkanowy.data.Resource
|
import io.github.wulkanowy.data.Resource
|
||||||
import io.github.wulkanowy.data.dataOrNull
|
import io.github.wulkanowy.data.dataOrNull
|
||||||
|
import io.github.wulkanowy.data.db.entities.AdminMessage
|
||||||
|
import io.github.wulkanowy.data.enums.MessageType
|
||||||
|
import io.github.wulkanowy.data.flatResourceFlow
|
||||||
|
import io.github.wulkanowy.data.logResourceStatus
|
||||||
|
import io.github.wulkanowy.data.onResourceData
|
||||||
|
import io.github.wulkanowy.data.onResourceError
|
||||||
import io.github.wulkanowy.data.onResourceNotLoading
|
import io.github.wulkanowy.data.onResourceNotLoading
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||||
|
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||||
import io.github.wulkanowy.data.repositories.StudentRepository
|
import io.github.wulkanowy.data.repositories.StudentRepository
|
||||||
import io.github.wulkanowy.data.resourceFlow
|
import io.github.wulkanowy.data.resourceFlow
|
||||||
|
import io.github.wulkanowy.domain.adminmessage.GetAppropriateAdminMessageUseCase
|
||||||
import io.github.wulkanowy.sdk.scrapper.getNormalizedSymbol
|
import io.github.wulkanowy.sdk.scrapper.getNormalizedSymbol
|
||||||
import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException
|
import io.github.wulkanowy.sdk.scrapper.login.InvalidSymbolException
|
||||||
import io.github.wulkanowy.ui.base.BasePresenter
|
import io.github.wulkanowy.ui.base.BasePresenter
|
||||||
@ -21,7 +29,9 @@ import javax.inject.Inject
|
|||||||
class LoginSymbolPresenter @Inject constructor(
|
class LoginSymbolPresenter @Inject constructor(
|
||||||
studentRepository: StudentRepository,
|
studentRepository: StudentRepository,
|
||||||
private val loginErrorHandler: LoginErrorHandler,
|
private val loginErrorHandler: LoginErrorHandler,
|
||||||
private val analytics: AnalyticsHelper
|
private val analytics: AnalyticsHelper,
|
||||||
|
private val preferencesRepository: PreferencesRepository,
|
||||||
|
private val getAppropriateAdminMessageUseCase: GetAppropriateAdminMessageUseCase,
|
||||||
) : BasePresenter<LoginSymbolView>(loginErrorHandler, studentRepository) {
|
) : BasePresenter<LoginSymbolView>(loginErrorHandler, studentRepository) {
|
||||||
|
|
||||||
private var lastError: Throwable? = null
|
private var lastError: Throwable? = null
|
||||||
@ -43,6 +53,21 @@ class LoginSymbolPresenter @Inject constructor(
|
|||||||
clearAndFocusSymbol()
|
clearAndFocusSymbol()
|
||||||
showSoftKeyboard()
|
showSoftKeyboard()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadAdminMessage()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadAdminMessage() {
|
||||||
|
flatResourceFlow {
|
||||||
|
getAppropriateAdminMessageUseCase(
|
||||||
|
scrapperBaseUrl = loginData.baseUrl,
|
||||||
|
type = MessageType.LOGIN_SYMBOL_MESSAGE,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
.logResourceStatus("load login admin message")
|
||||||
|
.onResourceData { view?.showAdminMessage(it) }
|
||||||
|
.onResourceError { view?.showAdminMessage(null) }
|
||||||
|
.launch("load_admin_message")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onSymbolTextChanged() {
|
fun onSymbolTextChanged() {
|
||||||
@ -166,4 +191,14 @@ class LoginSymbolPresenter @Inject constructor(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun onAdminMessageSelected(url: String?) {
|
||||||
|
url?.let { view?.openInternetBrowser(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onAdminMessageDismissed(adminMessage: AdminMessage) {
|
||||||
|
preferencesRepository.dismissedAdminMessageIds += adminMessage.id
|
||||||
|
|
||||||
|
view?.showAdminMessage(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package io.github.wulkanowy.ui.modules.login.symbol
|
package io.github.wulkanowy.ui.modules.login.symbol
|
||||||
|
|
||||||
|
import io.github.wulkanowy.data.db.entities.AdminMessage
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||||
import io.github.wulkanowy.ui.base.BaseView
|
import io.github.wulkanowy.ui.base.BaseView
|
||||||
import io.github.wulkanowy.ui.modules.login.LoginData
|
import io.github.wulkanowy.ui.modules.login.LoginData
|
||||||
@ -44,4 +45,8 @@ interface LoginSymbolView : BaseView {
|
|||||||
fun openFaqPage()
|
fun openFaqPage()
|
||||||
|
|
||||||
fun openSupportDialog(supportInfo: LoginSupportInfo)
|
fun openSupportDialog(supportInfo: LoginSupportInfo)
|
||||||
|
|
||||||
|
fun showAdminMessage(adminMessage: AdminMessage?)
|
||||||
|
|
||||||
|
fun openInternetBrowser(url: String)
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,18 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/login_student_select_admin_message"
|
||||||
|
layout="@layout/item_dashboard_admin_message"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintVertical_chainStyle="packed"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/loginStudentSelectHeader"
|
android:id="@+id/loginStudentSelectHeader"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -28,7 +40,7 @@
|
|||||||
app:layout_constraintBottom_toTopOf="@id/loginStudentSelectRecycler"
|
app:layout_constraintBottom_toTopOf="@id/loginStudentSelectRecycler"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toBottomOf="@id/login_student_select_admin_message"
|
||||||
app:layout_constraintVertical_chainStyle="packed" />
|
app:layout_constraintVertical_chainStyle="packed" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
@ -95,6 +95,18 @@
|
|||||||
android:background="?android:attr/listDivider" />
|
android:background="?android:attr/listDivider" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/login_symbol_admin_message"
|
||||||
|
layout="@layout/item_dashboard_admin_message"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/loginSymbolContact"
|
||||||
|
app:layout_constraintVertical_chainStyle="packed"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/loginSymbolHeader"
|
android:id="@+id/loginSymbolHeader"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -111,7 +123,7 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/loginSymbolContact"
|
app:layout_constraintTop_toBottomOf="@+id/login_symbol_admin_message"
|
||||||
app:layout_constraintVertical_chainStyle="packed" />
|
app:layout_constraintVertical_chainStyle="packed" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -5,8 +5,10 @@ import io.github.wulkanowy.data.pojos.RegisterStudent
|
|||||||
import io.github.wulkanowy.data.pojos.RegisterSymbol
|
import io.github.wulkanowy.data.pojos.RegisterSymbol
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUnit
|
import io.github.wulkanowy.data.pojos.RegisterUnit
|
||||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||||
|
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||||
import io.github.wulkanowy.data.repositories.SchoolsRepository
|
import io.github.wulkanowy.data.repositories.SchoolsRepository
|
||||||
import io.github.wulkanowy.data.repositories.StudentRepository
|
import io.github.wulkanowy.data.repositories.StudentRepository
|
||||||
|
import io.github.wulkanowy.domain.adminmessage.GetAppropriateAdminMessageUseCase
|
||||||
import io.github.wulkanowy.sdk.Sdk
|
import io.github.wulkanowy.sdk.Sdk
|
||||||
import io.github.wulkanowy.sdk.scrapper.Scrapper
|
import io.github.wulkanowy.sdk.scrapper.Scrapper
|
||||||
import io.github.wulkanowy.services.sync.SyncManager
|
import io.github.wulkanowy.services.sync.SyncManager
|
||||||
@ -44,6 +46,12 @@ class LoginStudentSelectPresenterTest {
|
|||||||
@MockK
|
@MockK
|
||||||
lateinit var schoolsRepository: SchoolsRepository
|
lateinit var schoolsRepository: SchoolsRepository
|
||||||
|
|
||||||
|
@MockK
|
||||||
|
lateinit var preferencesRepository: PreferencesRepository
|
||||||
|
|
||||||
|
@MockK
|
||||||
|
lateinit var getAppropriateAdminMessageUseCase: GetAppropriateAdminMessageUseCase
|
||||||
|
|
||||||
@MockK(relaxed = true)
|
@MockK(relaxed = true)
|
||||||
lateinit var analytics: AnalyticsHelper
|
lateinit var analytics: AnalyticsHelper
|
||||||
|
|
||||||
@ -132,6 +140,8 @@ class LoginStudentSelectPresenterTest {
|
|||||||
syncManager = syncManager,
|
syncManager = syncManager,
|
||||||
analytics = analytics,
|
analytics = analytics,
|
||||||
appInfo = appInfo,
|
appInfo = appInfo,
|
||||||
|
preferencesRepository = preferencesRepository,
|
||||||
|
getAppropriateAdminMessageUseCase = getAppropriateAdminMessageUseCase
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user