Merge branch 'develop'

This commit is contained in:
Kuba Szczodrzyński 2020-09-05 19:39:17 +02:00
commit 6b75715e87
13 changed files with 30 additions and 28 deletions

View File

@ -64,6 +64,6 @@
-keep class pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.Signing { public final byte[] pleaseStopRightNow(java.lang.String, long); } -keep class pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.Signing { public final byte[] pleaseStopRightNow(java.lang.String, long); }
-keepclassmembernames class pl.szczodrzynski.edziennik.data.api.szkolny.request.** { *; } -keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.request.** { *; }
-keepclassmembernames class pl.szczodrzynski.edziennik.data.api.szkolny.response.** { *; } -keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.response.** { *; }
-keepclassmembernames class pl.szczodrzynski.edziennik.ui.modules.login.LoginInfo.Platform { *; } -keepclassmembernames class pl.szczodrzynski.edziennik.ui.modules.login.LoginInfo.Platform { *; }

View File

@ -1,8 +1,9 @@
<h3>Wersja 4.4.1, 2020-09-03</h3> <h3>Wersja 4.4.2, 2020-09-05</h3>
<ul> <ul>
<li>Poprawione komunikaty o aktualizacjach aplikacji.</li> <li>Poprawione komunikaty o aktualizacjach aplikacji.</li>
<li>Mobidziennik: poprawione wyświetlanie przedmiotu w planie lekcji.</li> <li>Mobidziennik: poprawione wyświetlanie przedmiotu w planie lekcji.</li>
<li>Mobidziennik: naprawiony moduł frekwencji.</li> <li>Mobidziennik: naprawiony moduł frekwencji.</li>
<li>Naprawione zatrzymanie aplikacji na ekranie logowania.</li>
</ul> </ul>
<br> <br>
<br> <br>

View File

@ -9,7 +9,7 @@
/*secret password - removed for source code publication*/ /*secret password - removed for source code publication*/
static toys AES_IV[16] = { static toys AES_IV[16] = {
0x72, 0x4b, 0x61, 0x3a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; 0x1a, 0xcd, 0xf0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
unsigned char *agony(unsigned int laugh, unsigned char *box, unsigned char *heat); unsigned char *agony(unsigned int laugh, unsigned char *box, unsigned char *heat);

View File

@ -647,7 +647,7 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
app.profile.registerName?.let { registerName -> app.profile.registerName?.let { registerName ->
var status = app.config.sync.registerAvailability[registerName] var status = app.config.sync.registerAvailability[registerName]
if (status == null || status.nextCheck < currentTimeUnix()) { if (status == null || status.nextCheckAt < currentTimeUnix()) {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val api = SzkolnyApi(app) val api = SzkolnyApi(app)
api.runCatching(this@MainActivity) { api.runCatching(this@MainActivity) {

View File

@ -93,7 +93,7 @@ open class EdziennikTask(override val profileId: Int, val request: Any) : IApiTa
profile.registerName?.let { registerName -> profile.registerName?.let { registerName ->
var status = app.config.sync.registerAvailability[registerName] var status = app.config.sync.registerAvailability[registerName]
if (status == null || status.nextCheck < currentTimeUnix()) { if (status == null || status.nextCheckAt < currentTimeUnix()) {
val api = SzkolnyApi(app) val api = SzkolnyApi(app)
api.runCatching({ api.runCatching({
val availability = getRegisterAvailability() val availability = getRegisterAvailability()

View File

@ -46,6 +46,6 @@ object Signing {
/*fun provideKey(param1: String, param2: Long): ByteArray {*/ /*fun provideKey(param1: String, param2: Long): ByteArray {*/
fun pleaseStopRightNow(param1: String, param2: Long): ByteArray { fun pleaseStopRightNow(param1: String, param2: Long): ByteArray {
return "$param1.MTIzNDU2Nzg5MDv1BTei5k===.$param2".sha256() return "$param1.MTIzNDU2Nzg5MDx45DzIF8===.$param2".sha256()
} }
} }

View File

@ -11,8 +11,8 @@ import pl.szczodrzynski.edziennik.currentTimeUnix
data class RegisterAvailabilityStatus( data class RegisterAvailabilityStatus(
val available: Boolean, val available: Boolean,
val name: String?, val name: String?,
val message: Message?, val userMessage: Message?,
val nextCheck: Long = currentTimeUnix() + 7 * DAY, val nextCheckAt: Long = currentTimeUnix() + 7 * DAY,
val minVersionCode: Int = BuildConfig.VERSION_CODE val minVersionCode: Int = BuildConfig.VERSION_CODE
) { ) {
data class Message( data class Message(

View File

@ -47,14 +47,14 @@ class RegisterUnavailableDialog(
onShowListener?.invoke(TAG) onShowListener?.invoke(TAG)
app = activity.applicationContext as App app = activity.applicationContext as App
if (!status.available && status.message != null) { if (!status.available && status.userMessage != null) {
val b = DialogRegisterUnavailableBinding.inflate(LayoutInflater.from(activity), null, false) val b = DialogRegisterUnavailableBinding.inflate(LayoutInflater.from(activity), null, false)
b.message = status.message b.message = status.userMessage
if (status.message.image != null) if (status.userMessage.image != null)
b.image.load(status.message.image) b.image.load(status.userMessage.image)
if (status.message.url != null) { if (status.userMessage.url != null) {
b.readMore.onClick { b.readMore.onClick {
Utils.openUrl(activity, status.message.url) Utils.openUrl(activity, status.userMessage.url)
} }
} }
b.text.movementMethod = LinkMovementMethod.getInstance() b.text.movementMethod = LinkMovementMethod.getInstance()
@ -67,6 +67,7 @@ class RegisterUnavailableDialog(
onDismissListener?.invoke(TAG) onDismissListener?.invoke(TAG)
} }
.show() .show()
return@run
} }
val update = app.config.update val update = app.config.update

View File

@ -4,11 +4,11 @@
package pl.szczodrzynski.edziennik.ui.modules.home.cards package pl.szczodrzynski.edziennik.ui.modules.home.cards
import android.text.Html
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.core.text.HtmlCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.plusAssign import androidx.core.view.plusAssign
import androidx.core.view.setMargins import androidx.core.view.setMargins
@ -58,13 +58,13 @@ class HomeAvailabilityCard(
var onInfoClick = { _: View -> } var onInfoClick = { _: View -> }
if (status != null && !status.available && status.message != null) { if (status != null && !status.available && status.userMessage != null) {
b.homeAvailabilityTitle.text = Html.fromHtml(status.message.title) b.homeAvailabilityTitle.text = HtmlCompat.fromHtml(status.userMessage.title, HtmlCompat.FROM_HTML_MODE_LEGACY)
b.homeAvailabilityText.text = Html.fromHtml(status.message.contentShort) b.homeAvailabilityText.text = HtmlCompat.fromHtml(status.userMessage.contentShort, HtmlCompat.FROM_HTML_MODE_LEGACY)
b.homeAvailabilityUpdate.isVisible = false b.homeAvailabilityUpdate.isVisible = false
b.homeAvailabilityIcon.setImageResource(R.drawable.ic_sync) b.homeAvailabilityIcon.setImageResource(R.drawable.ic_sync)
if (status.message.icon != null) if (status.userMessage.icon != null)
b.homeAvailabilityIcon.load(status.message.icon) b.homeAvailabilityIcon.load(status.userMessage.icon)
onInfoClick = { onInfoClick = {
RegisterUnavailableDialog(activity, status) RegisterUnavailableDialog(activity, status)
} }

View File

@ -117,7 +117,7 @@ class LoginChooserFragment : Fragment(), CoroutineScope {
else -> null else -> null
}?.let { registerName -> }?.let { registerName ->
var status = app.config.sync.registerAvailability[registerName] var status = app.config.sync.registerAvailability[registerName]
if (status == null || status.nextCheck < currentTimeUnix()) { if (status == null || status.nextCheckAt < currentTimeUnix()) {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val api = SzkolnyApi(app) val api = SzkolnyApi(app)
api.runCatching(activity) { api.runCatching(activity) {

View File

@ -8,7 +8,7 @@
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
<import type="android.text.Html" /> <import type="androidx.core.text.HtmlCompat" />
<variable <variable
name="message" name="message"
type="pl.szczodrzynski.edziennik.data.api.szkolny.response.RegisterAvailabilityStatus.Message" /> type="pl.szczodrzynski.edziennik.data.api.szkolny.response.RegisterAvailabilityStatus.Message" />
@ -45,7 +45,7 @@
android:id="@+id/title" android:id="@+id/title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{Html.fromHtml(message.title)}" android:text="@{HtmlCompat.fromHtml(message.title, HtmlCompat.FROM_HTML_MODE_LEGACY)}"
android:textAppearance="@style/NavView.TextView.Title" android:textAppearance="@style/NavView.TextView.Title"
tools:text="Dziennik nie działa" /> tools:text="Dziennik nie działa" />
@ -54,7 +54,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@{Html.fromHtml(message.contentLong)}" android:text="@{HtmlCompat.fromHtml(message.contentLong, HtmlCompat.FROM_HTML_MODE_LEGACY)}"
tools:text="Dziennik się zepsuł i nie działa, szkoda\n\n\nwiele linijek ma ten tekst" /> tools:text="Dziennik się zepsuł i nie działa, szkoda\n\n\nwiele linijek ma ten tekst" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton

View File

@ -1368,7 +1368,7 @@
<string name="home_archive_close_no_target_title">Brak aktualnego profilu</string> <string name="home_archive_close_no_target_title">Brak aktualnego profilu</string>
<string name="home_archive_close_no_target_text">Uczeń %s nie posiada profilu na tym koncie w aktualnym roku szkolnym. Prawdopodobnie ten profil został usunięty lub uczeń nie uczęszcza już do tej klasy.\n\nAby przejść do aktualnego profilu, wybierz ucznia z listy lub zaloguj się na jego konto przyciskiem Dodaj ucznia.</string> <string name="home_archive_close_no_target_text">Uczeń %s nie posiada profilu na tym koncie w aktualnym roku szkolnym. Prawdopodobnie ten profil został usunięty lub uczeń nie uczęszcza już do tej klasy.\n\nAby przejść do aktualnego profilu, wybierz ucznia z listy lub zaloguj się na jego konto przyciskiem Dodaj ucznia.</string>
<string name="login_copyright_notice">Znaki towarowe zamieszczone w tej aplikacji należą do ich prawowitych właścicieli i są używane wyłącznie w celach informacyjnych.</string> <string name="login_copyright_notice">Znaki towarowe zamieszczone w tej aplikacji należą do ich prawowitych właścicieli i są używane wyłącznie w celach informacyjnych.</string>
<string name="update_available_title">Dostępna aktualiacja aplikacji</string> <string name="update_available_title">Dostępna aktualizacja aplikacji</string>
<string name="update_available_format">Używasz starej wersji aplikacji Szkolny.eu (%s). Aby móc korzystać z aplikacji oraz zapewnić najlepsze działanie, zaktualizuj aplikację do wersji %s.\n\nDziennik zmian:\n%s</string> <string name="update_available_format">Używasz starej wersji aplikacji Szkolny.eu (%s). Aby móc korzystać z aplikacji oraz zapewnić najlepsze działanie, zaktualizuj aplikację do wersji %s.\n\nDziennik zmian:\n%s</string>
<string name="update_available_fallback">Posiadasz nieaktualną wersję aplikacji Szkolny.eu. Aby móc dalej synchronizować dane, musisz zaktualizować aplikację.</string> <string name="update_available_fallback">Posiadasz nieaktualną wersję aplikacji Szkolny.eu. Aby móc dalej synchronizować dane, musisz zaktualizować aplikację.</string>
<string name="update_available_button">Aktualizuj</string> <string name="update_available_button">Aktualizuj</string>

View File

@ -5,8 +5,8 @@ buildscript {
kotlin_version = '1.3.61' kotlin_version = '1.3.61'
release = [ release = [
versionName: "4.4.1", versionName: "4.4.2",
versionCode: 4040199 versionCode: 4040299
] ]
setup = [ setup = [