Add warning when using old server version

This commit is contained in:
Jonas Lochmann 2022-09-19 02:00:00 +02:00
parent 61253a422c
commit f2e94bce23
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36
7 changed files with 53 additions and 24 deletions

View file

@ -45,6 +45,7 @@ android {
// get with unzip -p *.apk META-INF/CERT.RSA | keytool -printcert | grep SHA256 | sed -e 's/\s*SHA256: //' -e 's/://g'
// set to empty string to disable this check
buildConfigField 'String', 'updateServerBuildsCertificate', '"2170068198547F15129DE8CC46E2A8BF1485A6E5030916E26DDE41AE0E81DAC2"'
buildConfigField 'int', 'minimumRecommendServerVersion', '5'
}
buildFeatures {
viewBinding true

View file

@ -77,6 +77,7 @@ class OverviewFragmentAdapter : RecyclerView.Adapter<OverviewFragmentViewHolder>
is OverviewFragmentItemMessage -> OverviewFragmentViewType.ServerMessage
is ShowMoreOverviewFragmentItem -> OverviewFragmentViewType.ShowMoreButton
is TaskReviewOverviewItem -> OverviewFragmentViewType.TaskReview
is OverviewFragmentItemOutdatedServer -> OverviewFragmentViewType.ServerMessage
}
override fun getItemViewType(position: Int) = getItemType(getItem(position)).ordinal
@ -170,6 +171,7 @@ class OverviewFragmentAdapter : RecyclerView.Adapter<OverviewFragmentViewHolder>
}
override fun onBindViewHolder(holder: OverviewFragmentViewHolder, position: Int) {
val context = holder.itemView.context
val item = getItem(position)
when (item) {
@ -237,6 +239,7 @@ class OverviewFragmentAdapter : RecyclerView.Adapter<OverviewFragmentViewHolder>
is OverviewFragmentItemMessage -> {
holder as ServerMessageViewHolder
holder.binding.title = context.getString(R.string.overview_server_message)
holder.binding.text = item.message
holder.binding.executePendingBindings()
}
@ -277,6 +280,13 @@ class OverviewFragmentAdapter : RecyclerView.Adapter<OverviewFragmentViewHolder>
holder.binding.executePendingBindings()
}
is OverviewFragmentItemOutdatedServer -> {
holder as ServerMessageViewHolder
holder.binding.title = context.getString(R.string.overview_server_outdated_title)
holder.binding.text = context.getString(R.string.overview_server_outdated_text)
holder.binding.executePendingBindings()
}
}.let { }
}
}

View file

@ -39,6 +39,7 @@ object OverviewFragmentActionAddDevice: OverviewFragmentItem()
object OverviewFragmentHeaderIntro: OverviewFragmentItem()
object OverviewFragmentHeaderFinishSetup: OverviewFragmentItem()
data class OverviewFragmentItemMessage(val message: String): OverviewFragmentItem()
object OverviewFragmentItemOutdatedServer: OverviewFragmentItem()
sealed class ShowMoreOverviewFragmentItem: OverviewFragmentItem() {
object ShowAllUsers: ShowMoreOverviewFragmentItem()
data class ShowMoreDevices(val level: DeviceListItemVisibility): ShowMoreOverviewFragmentItem()

View file

@ -19,12 +19,10 @@ import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import io.timelimit.android.BuildConfig
import io.timelimit.android.data.model.HintsToShow
import io.timelimit.android.data.model.UserType
import io.timelimit.android.livedata.ignoreUnchanged
import io.timelimit.android.livedata.liveDataFromFunction
import io.timelimit.android.livedata.map
import io.timelimit.android.livedata.switchMap
import io.timelimit.android.livedata.*
import io.timelimit.android.logic.DefaultAppLogic
import java.util.*
@ -94,15 +92,19 @@ class OverviewFragmentModel(application: Application): AndroidViewModel(applicat
private val isNoUserAssignedLive = logic.deviceUserEntry.map { it == null }.ignoreUnchanged()
private val hasShownIntroduction = logic.database.config().wereHintsShown(HintsToShow.OVERVIEW_INTRODUCTION)
private val messageLive = logic.database.config().getServerMessage()
private val introEntries = isNoUserAssignedLive.switchMap { noUserAssigned ->
hasShownIntroduction.switchMap { hasShownIntro ->
messageLive.map { message ->
private val serverVersion = logic.serverApiLevelLogic.infoLive
private val introEntries = mergeLiveDataWaitForValues(isNoUserAssignedLive, hasShownIntroduction, messageLive, serverVersion)
.map { (noUserAssigned, hasShownIntro, message, serverVersion) ->
val result = mutableListOf<OverviewFragmentItem>()
if (noUserAssigned) {
result.add(OverviewFragmentHeaderFinishSetup)
}
if (!serverVersion.hasLevelOrIsOffline(BuildConfig.minimumRecommendServerVersion)) {
result.add(OverviewFragmentItemOutdatedServer)
}
if (message != null) {
result.add(OverviewFragmentItemMessage(message))
}
@ -113,8 +115,6 @@ class OverviewFragmentModel(application: Application): AndroidViewModel(applicat
result
}
}
}
private val hiddenTaskIdsLive = MutableLiveData<Set<String>>().apply { value = emptySet() }
private val tasksWithPendingReviewLive = logic.database.childTasks().getPendingTasks()

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
TimeLimit Copyright <C> 2019 Jonas Lochmann
TimeLimit Copyright <C> 2019 - 2022 Jonas Lochmann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation version 3 of the License.
@ -18,6 +18,10 @@
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="title"
type="String" />
<variable
name="text"
type="String" />
@ -35,7 +39,8 @@
android:layout_height="wrap_content">
<TextView
android:text="@string/overview_server_message"
tools:text="@string/overview_server_message"
android:text="@{title}"
android:textAppearance="?android:textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

View file

@ -1209,6 +1209,12 @@
<string name="overview_server_message">Mitteilung</string>
<string name="overview_server_outdated_title">alte Serverversion</string>
<string name="overview_server_outdated_text">Sie verwenden eine ältere Version
des TimeLimit-Servers. Das kann zu einem eingeschränkten Funktionsumfang
und Sicherheitspropblemen führen.
</string>
<string name="parent_limit_login_title">Anmeldeverhinderungskategorie</string>
<string name="parent_limit_login_help">Hier können Sie eine Kategorie wählen.
Sobald diese Kategorie gesperrt ist können Sie sich nicht mehr als Elternteil anmelden, sodass

View file

@ -1253,6 +1253,12 @@
<string name="overview_server_message">Message</string>
<string name="overview_server_outdated_title">old server version</string>
<string name="overview_server_outdated_text">You are using an outdated version
of timelimit-server. This can limit the available features and can be
a security risk.
</string>
<string name="parent_limit_login_title">Limit login category</string>
<string name="parent_limit_login_help">Here you can select a category. As soon as Apps of this
category are blocked, you can not sign in with your parent user. This