From 503a97bc4c793432015b65b0f80961703dea2f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Thu, 9 May 2024 22:57:58 +0200 Subject: [PATCH 01/11] Version 2.6.3 --- app/build.gradle | 8 ++++---- app/src/main/play/release-notes/pl-PL/default.txt | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 53991c6f4..bc9a529ae 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 162 - versionName "2.6.2" + versionCode 163 + versionName "2.6.3" 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 = 5 + updatePriority = 4 enabled.set(false) } @@ -191,7 +191,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.6.1' + implementation 'io.github.wulkanowy:sdk:2.6.2' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index 5ad42d343..ebeb601ab 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,5 +1,7 @@ -Wersja 2.6.1 +Wersja 2.6.2 -— obeszliśmy próby zablokowania naszej aplikacji w dostępie do danych ucznia i wiadomości (ale nie wiemy, czy eduOne działa) +— naprawiliśmy wysyłanie wiadomości, które zepsuło się przez zmiany naszych milusińskich +- naprawiliśmy ładowanie danych u użytkowników eduOne (ale tylko z jednym uczniem na koncie), powód zepsucia jak wyżej +- naprawiliśmy logowanie do aplikacji na odmianach, gdzie jeszcze nasi milusińscy nie zepsuli dziennika (paradoksalnie) Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From 56bfabdf115c750f36d2bbf9eea5a7b884b94664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Wed, 22 May 2024 08:14:11 +0200 Subject: [PATCH 02/11] Bump sdk to 2.6.9-SNAPSHOT --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index e5deb1ddd..6b0fd8b17 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -191,7 +191,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.6.8' + implementation 'io.github.wulkanowy:sdk:2.6.9-SNAPSHOT' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' From bf9f0481167e62d5098e18172ad741a11b2b6f0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Wed, 22 May 2024 09:05:30 +0200 Subject: [PATCH 03/11] Version 2.6.10 --- app/build.gradle | 6 +++--- app/src/main/play/release-notes/pl-PL/default.txt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6b0fd8b17..a1f212d3c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 169 - versionName "2.6.9" + versionCode 170 + versionName "2.6.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", "Wulkanowy" @@ -191,7 +191,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.6.9-SNAPSHOT' + implementation 'io.github.wulkanowy:sdk:2.6.9' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index 17630e528..659fd73c8 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,5 +1,5 @@ -Wersja 2.6.9 +Wersja 2.6.10 -— naprawiliśmy obsługę eduOne (w piątek wieczorem, więc jak widzisz to później to może już nie działać) +— naprawiliśmy obsługę wiadomości (w środę rano, więc w kolejne dni może już serio nie działać) Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From 3a07ec77553a1fe187a1f74669e565a3e7eb8c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Fri, 31 May 2024 09:47:32 +0200 Subject: [PATCH 04/11] =?UTF-8?q?Revert=20"Bump=20com.google.android.gms:p?= =?UTF-8?q?lay-services-ads=20from=2022.6.0=20to=2023.1.0=20(=E2=80=A6"=20?= =?UTF-8?q?(#2580)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit c6eea8b84d6114f54c62337be901f793e5b63476. --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index e7e93e4a9..f56d86955 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -256,7 +256,7 @@ dependencies { playImplementation 'com.google.firebase:firebase-crashlytics:' playImplementation 'com.google.firebase:firebase-config' - playImplementation 'com.google.android.gms:play-services-ads:23.1.0' + playImplementation 'com.google.android.gms:play-services-ads:22.6.0' playImplementation "com.google.android.play:integrity:1.3.0" playImplementation 'com.google.android.play:app-update-ktx:2.1.0' playImplementation 'com.google.android.play:review-ktx:2.0.1' From 7f6a2435d0e60e7bc2bc0626cf0cc38dd52efe1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Fri, 31 May 2024 10:02:38 +0200 Subject: [PATCH 05/11] New Crowdin updates (#2578) * New translations strings.xml (Kashubian) --- app/src/main/res/values-csb-rPL/strings.xml | 1080 +++++++++---------- 1 file changed, 540 insertions(+), 540 deletions(-) diff --git a/app/src/main/res/values-csb-rPL/strings.xml b/app/src/main/res/values-csb-rPL/strings.xml index 15793491d..010a30821 100644 --- a/app/src/main/res/values-csb-rPL/strings.xml +++ b/app/src/main/res/values-csb-rPL/strings.xml @@ -64,7 +64,7 @@ Symbòl mòżna nalézc na starnie dzénnika w Ùczeń→ Dostãp mòbilny → Wëgeneruj kòd dostãpù .\n\nÙgwësni sã, że ùstôwił jes pasowną òdmianã dzénnika w pòlu Òdmiana dzénnika UONET+ na pierszim ekranie logòwania Wëbierzë ùczniów do zalogòwaniô w aplikacëje Jiné òpcëje - W tim tribie nie dzejô szczestlëwi numerk, ùczeń na tle klasë, pòdsumòwanié frekwencëje, ùsprôwiedliwianié nieòbecnoscë, zajmë zrealizowóné, jimfòrmacëje ò szkòle i pòzdrzatk listë zarejestrowónëch ùrządzeniów + W tim tribie nie dzejô szczestlëwi numerk, ùczeń na tle klasë, pòdrëchòwanié frekwencëje, ùsprôwiedliwianié niebëtnoscë, zajmë zrealizowóné, jimfòrmacëje ò szkòle i pòzdrzatk listë zarejestrowónëch ùrządzeniów Nen trib wëswietlô ne samé dane, chtërne są widoczné na jinternetowi starnie dzénnika Sparłãczënié nôlepszich znanków dwùch òstatnich tribów. Dzejô chùdzy jak scraper i ùgwësniô Fùnkcëje niédostãpné w tribie Mòbilné API, Je to w eksperimentalnym stadium Pòlitëka priwatnoscë @@ -128,9 +128,9 @@ Òbrechòwiwónô strzédnô to je aritmeticznô strzédnô jakô je òbrechòwiwónô ze strzédnëch z apartnëch przibiorów. Pòzwôlô na doznanié sã przëblëżony kùńcowi strzédny. Òna je òbrechòwiwónô na ôrt wëbróny przez brëkòwnika w nastawach aplikacje. Bédëjemë wëbrac pasowną òpcją, kò òbrechòwiwanié szkòłowëch strzédnëch mòże sã jinaczëc. Żelë wasza szkòła pòdôwô strzédné z przibiorów na starnie Vulcan, aplikacjô je scygô a sama nick nie òbrechòwiwô. To mòże to zmienic przez wëmùszenié òbrechòwiwaniégò w nastawach aplikacje.\n\nStrzédnô taksów leno z wëbrónégò semestru:\n1. Òbrechòwiwanié wôżony strzédny dlô kòżdégò przibioru w dónym semestrze\n2.Dodôwanié òbrechòwónëch strzédnëch\n3. Òbrëchòwiwanié aritmeticzny strzédny ze strzédnëch zesadzonëch razã\n\nStrzédnô ze strzédnëch z òbùch semestrów:\n1.Òbrechòwiwanié wôżony strzédny dlô kòżdégò przibioru w 1. i 2. semestrze\n2. Òbrechòwiwanié aritmeticzny strzédny ze strzédnëch òbrechòwónëch dlô kòżdégò przëbioru na semester 1. i 2.\n3. Dodôwanié òbrechòwónëch strzédnëch\n4. Òbrëchòwiwanié aritmeticzny strzédny ze strzédnëch zesadzonëch razã\n\nStrzédnô taksów z całégò rokù:\n1. Òbrechòwiwanié wôżony strzédny w rocznym pòzdrzatkù dlô kòżdégò przibioru. Kùńcowô strzédnô w 1. semestrze sã nie rechùje. \n2. Dodôwanié òbrechòwónëch strzédnëch\n3. Òbrëchòwiwanié aritmeticzny strzédny ze strzédnëch zesadzonëch razã Jak fónksnéruje kùńcowô strzédna? Kùńcową strzédną je strzédnô aritmetëcznô òbliczonô na spòdlim wszëtczich òbecno dostãpnëch taksów kùńcowëch w danym semestrze.\n\nSchemat òbliczeniów skłôdô sã z nôstãpùjącëch kroków:\n1. Sumòwanié kùńcowëch taksów wpisanëch przez szkólnëch\n2. Dzélenié przez lëczbã zajmów, z chtërnëch taksë òstałë ju wstôwioné - Lùńcowô strzédna + Kùńcowô strzédna z %1$d na %2$d zajmów - Pòdsëmòwanié + Pòdrëchòwanié Klasa Zamérkô jakò przeczëtóné Cawné @@ -163,29 +163,29 @@ Nowé kùńcowé taksë - New descriptive grade - New descriptive grades - New descriptive grades + Nowô òpisowô taksa + Nowé òpisowé taksë + Nowé òpisowé taksë - You received %1$d grade - You received %1$d grades - You received %1$d grades + Môsz %1$d nową taksã + Môsz %1$d nowé taksë + Môsz %1$d nowëch taksów - You received %1$d predicted grade - You received %1$d predicted grades - You received %1$d predicted grades + Môsz %1$d nową spodzóną taksã + Môsz %1$d nowé spodzón taksë + Môsz %1$d nowëch spodzónëch taksów - You received %1$d final grade - You received %1$d final grades - You received %1$d final grades + Môsz %1$d nową kùńcową taksã + Môsz %1$d nowé kùńcowé taksë + Môsz %1$d nowëch kùńcowëch taksów - You received %1$d descriptive grade - You received %1$d descriptive grades - You received %1$d descriptive grades + Môsz %1$d nową òpisową taksã + Môsz %1$d nowé òpisowé taksë + Môsz %1$d nowëch òpisowëch taksów Ùczba @@ -196,47 +196,47 @@ Zmianë Felënk ùczbów dzysô %s min - %s sec - %1$s left - in %1$s - Finished - Now: %s - Next: %s - Later: %s - %1$s lesson %2$d - %3$s - Change of room from %1$s to %2$s - Change of teacher from %1$s to %2$s - Change of subject from %1$s to %2$s + %s sek + jesz %1$s + za %1$s + Fardëch + Terô: %s + Pòstãpné: %s + Pózdni: %s + %1$s ùczba %2$d - %3$s + Pòzmiana zalë z %1$s na %2$s + Pòzmiana szkólnégò z %1$s na %2$s + Pòzmiana zajmë z %1$s na %2$s - No lesson - No lessons - No lessons + Ni ma ùczbë + Ni ma ùczbów + Ni ma ùczbów - Timetable change - Timetable changes - Timetable changes + Pòzmiana planu zajmów + Pòzmianë planu zajmów + Pòzmianë planu zajmów - %1$s - %2$d change in timetable - %1$s - %2$d changes in timetable - %1$s - %2$d changes in timetable + %1$s - %2$d Pòzmiana planu zajmów + %1$s - %2$d Pòzmianë planu zajmów + %1$s - %2$d Pòzmianów planu ùczbów - %1$d change in timetable - %1$d changes in timetable - %1$d changes in timetable + %1$d Pòzmiana planu zajmów + %1$d Pòzmianë planu zajmów + %1$d Pòzmianë planu zajmów - %d change - %d changes - %d changes + %d Pòzmiana + %d Pòzmianë + %d Pòzmianë - Completed lessons + Ùczbë są skùńczoné Pòkôżë skùńczoné ùczbë - No info about completed lessons - Topic + Felënk jinfòrmacëjów ò ùkòńczonëch ùczbach + Témat Niebëtnosc Zôsóbczi @@ -246,606 +246,606 @@ Nowô ùczba Nowô dodatkòwô ùczba Dodatkòwa ùczba òsta dodónô z sukcesã - Additional lesson deleted successfully - Repeat weekly - Delete additional lesson - Just this lesson - All in the series - Start time - End time - End time must be greater than start time + Dodôtkòwô ùczba òsta rëmniãtô z sukcesã + Pòwtórzë co tidzéń + Rëmni dodôtkòwą ùczbã + Leno ta ùczba + Wszëtczé w serie + Gòdzëna zôczãcô + Gòdzëna skùńczeniô + Gòdzëna skùńczeniô mùszi bëc pózdniszô jak gòdzëzna zôczãcô - Attendance summary - Attendance calculator - %1$d over target - right on target - %1$d under target - %1$d/%2$d presences - No attendances recorded - Absent for school reasons - Excused absence - Unexcused absence - Exemption - Excused lateness - Unexcused lateness - Present - Deleted - Unknown - Number of lesson - No entries - Absence reason (optional) - Send - Absence excuse request sent successfully! - You must select at least one absence! - Excuse + Pòdrëchòwanié bëtnoscë + Kalkulator bëtnoscë + %1$d Wëżi célu + dokładno kù célu + %1$d niżi célu + %1$d/%2$d bëtnoscë + Nié zaùwôżono niżôdny frekwencëje + Niebëtnosc z szkòlnëch przëczënów + Ùsprawiedlëwiono niéòbecnosc + Nieùsprawiedlëwiono niéòbecnosc + Zwòlnienié + Spózdnienié ùsprawiedlëwioné + Spózdnienié Nieùsprawiedlëwioné + Bëtnosc + Rëmniãto + Niéznóny + Lëczba ùczbów + Ni ma wpisów + Pòwód niebëtnoscë (òpcjonalny) + Wëslë + Proszba ò ùsprawiedlëwienié òsta wësłónô z sukcesã! + Mùszisz wëbrac bënômni jedną nieòbecnosc! + Ùsprawiedliwi - New attendance - New attendance - New attendance + Nowô frekwencjô + Nowé frekwencëje + Nowé frekwencëje - %1$d new attendance - %1$d attendance - %1$d attendance + %1$d nowô frekwencjô + %1$d nowé frekwencëje + %1$d nowëch frekwencjów - %d attendance - %d attendance - %d attendance + %d frekwencjô + %d frekwencëje + %d frekwencjów - Total + Razã - No exams this week - Type - Entry date + Ni ma testów w tim tidzéniu + Ôrt + Data wpisënkù - New exam - New exams - New exams + Nowi test + Nowé testë + Nowé testë - %d new exam - %d new exams - %d new exams + %d nowi test + %d nowé testë + %d nowëch testów - %d exam - %d exams - %d exams + %d test + %d testë + %d testów - Inbox - Sent - Trash - (no subject) - No messages - From: - To: - Date: %1$s - Reply - Forward - Select all - Unselect all - Restore from trash - Move to trash - Delete permanently - Message restored successfully - Message deleted successfully - student - parent - guardian - employee - Share - Print - Subject - Content - Message sent successfully - Message does not exist - You need to choose at least 1 recipient - The message content must be at least 3 characters - All mailboxes - Only unread - Only with attachments - Read: %s - Read by: %1$d of %2$d people + Òdebróné + Wësłóno + Wãbórk + (Niżôdny témat) + Ni ma wiadów + Òd: + Do: + Data: %1$s + Òdrzekni + Wëslë dali + Zamérkô wszëtkò + Òdmérkô wszëtkò + Przëwrócë z wãbórka + Przeniesë do wãbórka + Rëmni na wiedno + Wiada òsta przëwróconô z sukcesã + Wiada òsta rëmniãtô z sukcesã + ùczeń + rodzëc + òpiekùn + robòtnik + Ùdostãpni + Drukùj + Témat + Tresc + Wiada òsta wësłónô z sukcesã + Wiada nie jistnieje + Mùszisz wëbrac bënômni 1 adresata + Tresc wiadë mùszi zawierac bënômni 3 znanczi + Wszëtczé skrzënie + Leno nieprzeczëtóné + Leno z lopkama + Przeczëtónô: %s + Przeczëtónô bez: %1$d z %2$d osób - %1$d message - %1$d messages - %1$d messages + %1$d wiada + %1$d wiadë + %1$d wiadë - New message - New messages - New messages + Nowô wiada + Nowé wiadë + Nowé wiadë - Do you want to restore draft message? - Do you want to restore draft message with recipients: %s? + Chcemë le przëwrócyc robòczą wersëją wiadów? + Chcemë le przëwrócyc robòczą wersëją wiadów z adresatama? %s? - You received %1$d message - You received %1$d messages - You received %1$d messages + Môsz %1$d nową wiadã + Môsz %1$d nowé wiadë + Môsz %1$d nowëch wiadów - %1$d selected - %1$d selected - %1$d selected + %1$d wëbrónô + %1$d wëbróné + %1$d wëbrónëch - Messages deleted - Messages restored - Choose mailbox - Incognito mode is on - Thanks to incognito mode sender is not notified when you read the message + Wiadë òstałë rëmniãté + Przewrócono wiadë + Wëbierzë skrzënią + Trib incognito je włączony + Dzãka tribòwi incognito nadôwca nié òbôczi, że przeczëtôł jes ną wiadã - No info about notes - Points + Ni ma jinfòrmacëjów ò ùwôgach + Pónktë - %d note - %d notes - %d notes + %d ùwôga + %d ùwôdżi + %d ùwôgów - New note - New notes - New notes + Nowô ùwôga + Nowé ùwôdżi + Nowé ùwôdżi - You received %1$d note - You received %1$d notes - You received %1$d notes + Môsz %1$d nową ùwôgã + Môsz %1$d nowé ùwôdżi + Môsz %1$d nowëch ùwôgów - %d praise - %d praises - %d praises + %d chwôła + %d chwałë + %d chwôłów - New praise - New praises - New praises + Nowô chwôła + Nowé chwôłë + Nowé chwôłë - You received %1$d praise - You received %1$d praises - You received %1$d praises + Môsz %1$d nową chwôłã + Môsz %1$d nowé chwôłë + Môsz %1$d nowëch chwôłów - %d neutral note - %d neutral notes - %d neutral notes + %d neùtralnô ùwôga + %d neùtralné ùwôdżi + %d neùtralnëch ùwôgów - New neutral note - New neutral notes - New neutral notes + Nowô neùtralnô ùwôga + Nowé neùtralné ùwôdżi + Nowé neùtralné ùwôdżi - You received %1$d neutral note - You received %1$d neutral notes - You received %1$d neutral notes + Môsz %1$d nową neùtralną ùwôgã + Môsz %1$d nowé neùtralné ùwôdżi + Môsz %1$d nowëch neùtralnëch ùwôgów - No info about homework - Mark as done - Mark as undone - Add homework - Homework added successfully - Homework deleted successfully - Attachments + Ni ma zadaniów dodóm + Fardëch + Nié je fardëch + Dodôj Zadanié dodóm + Zadanié dodóm dodóné z sukcesã + Zadanié dodóm rëmniãté z sukcesã + Lópk - New homework - New homework - New homework + Nowé zadanié dodóm + Nowé zadania dodóm + Nowé zadania dodóm - You received %d new homework - You received %d new homework - You received %d new homework + Môsz %d nowé zadania dodóm + Môsz %d nowé zadania dodóm + Môsz %d nowëch zadaniów dodóm - %d homework - %d homework - %d homework + %d zadanié dodóm + %d zadania dodóm + %d zadaniów dodóm - Lucky number - Today\'s lucky number is - No info about the lucky number - Lucky number for today - Today\'s lucky number is: %s - Show history + Szczestlëwi numerk + Dzysészim szczestlëwim numerkã je + Ni ma jinfòrmacëjów ò szczestlëwim numerkù + Szczestlëwi numerk na dzysô + Dzysészim szczestlëwim numerkã je: %s + Pòkôżë historëją - Lucky number history - No info about lucky numbers + Historijô numerków + Ni ma jinfòrmacëjów ò szczestlëwich numerkach - Mobile devices - No devices - Deregister - Device removed - QR code + Przëstãp mòbilny + Ni ma ùrządzeniów + Wërejestruj + Ùrządzenié òstało rëmniãté + Kòd QR Token Symbol PIN - School and teachers + Szkòła i szkólny - School - No info about school - School name - School address - Telephone - Name of headmaster - Name of pedagogue - Show on map - Call + Szkòła + Ni ma jinfòrmacëjów ò szkòle + Pòzwa szkòłë + Adresa szkòłë + Telefòn + Miono i nôzwëskò direktóra + Miono i nôzwëskò pedagóga + Pòkôżë na kôrce + Zazwòni - Teachers - No info about teachers - No subject + Szkólny + Ni ma jinfòrmacëjów ò szkólnëch + Ni ma zajmë - Conferences - No info about conferences + Zéńdzenia + Ni ma jinfòrmacëjów ò zéńdzeniach - %d conference - %d conferences - %d conferences + %d zéńdzenié + %d zéńdzenia + %d zéńdzeniów - New conference - New conferences - New conferences + Nowé zéńdzenie + Nowé zéńdzenia + Nowé zéńdzenia - You have %1$d new conference - You have %1$d new conferences - You have %1$d new conferences + Môsz %1$d nowé zéńdzenié + Môsz %1$d nowé zéńdzenia + Môsz %1$d nowëch zéńdzeniów - Present at conference + Òbecnosc na zéńdzenim Agenda - Place - Topic + Plac + Témat - School announcements - No school announcements + Szkòlowi ògłos + Ni ma szkòlowich ògłosów - %d school announcement - %d school announcements - %d school announcements + %d szkòlowi ògłos + %d szkòlowé ògłosë + %d szkòlowich ògłosów - New school announcement - New school announcements - New school announcements + %d Nowi szkòlowi ògłos + %d Nowé szkòlowé ògłosë + %d Nowé szkòlowé ògłosë - You have %1$d new school announcement - You have %1$d new school announcements - You have %1$d new school announcements + Môsz %1$d nowi szkòlowi ògłos + Môsz %1$d nowé szkòlowé ògłosë + Môsz %1$d nowëch szkòlowich ògłosów - Add account - Logout - Do you want to log out this student? - Student logout - Student account - Parent account - Edit data - Accounts manager - Select student - Family - Contact - Residence details - Personal information + Dodôj kònto + Wëlogùj sã + Chcemë le wëlogòwac tegò ùcznia? + Wëlogòwanié ùcznia + Kònto ùcznia + Rodzëcelsczé kònto + Edituj dane + Czerownik kòntów + Wëbierzë ùcznia + Rodzëzna + Kòntakt + Adresowé dane + Òsobòwé dane - App version - Contributors - List of Wulkanowy developers - Report a bug - Send a bug report via e-mail + Wersëjô aplikacëje + Wkłôdôrze + Lësta programistów Wùlkanowégò + Zgłosë błãd + Wëslë zgłoszenié ò błãdze bez e-mail FAQ - Read Frequently Asked Questions - Discord server - Join the Wulkanowy community - Facebook fanpage - Twitter page - Follow us on twitter - Like our facebook fanpage - Privacy policy - Rules for collecting personal data - System settings - Open system settings - Homepage - Visit the website and help develop the application - Licenses - Licenses of libraries used in the application + Òbôczë nôczãscy zadawóné pëtania + Serwer Discord + Dołączë do spòlëznë Wùlkanowégò + Fanpage na Facebookù + Starna na Twitterze + Szlachùj nas na Twitterze + Pòlub najégò fanpage na Facebookù + Pòlitëka priwatnoscë + Regle zbieraniégò òsobòwëch danëch + Systemòwé nastôwë + Òdemkni systemòwé nastôwë + Domôcô starna + Òdwiedzë starnã i pòmòżë rozwijac aplikacëją + Licencëje + Licencëje ùżitëch biblijotéków w aplikacëje - License + Licencëjô - Avatar - See more on GitHub + Awatar + Òbôczë wicy na GitHub - No info about student or student family - Name - Second name - Gender - Polish citizenship - Family name - Mother\'s and father\'s names - Phone - Cellphone - E-mail - Address of residence - Address of registration - Correspondence address - Surname and first name - Degree of kinship - Address - Phones - Male - Female - Last name - Guardian + Ni ma jinfòrmacëjów ò ùczniu abò rodzëznie ùcznia + Miono + Drëdżé miono + Płoc + Pòlsczé òbëwatelstwò + Rodné nazwëskò + Miono òjca i mùterczi + Telefòn + Mòbilk + Adresa e-mail + Adresa zamieszkaniô + Adresa zameldowaniô + Adresa kòrespòndencëjnë + Nôzwëskò ë miono + Stopień pòkrëwieństwa + Adresa + Telefònë + Chłop + Białka + Nôzwëskò + Òpiekùn - Nick - Add nick - Choose avatar color + Pòzwa + Dodôj Pòzwã + Wëbierzë farwã profilowégò - Share logs - Refresh + Ùdostãpni logi + Òdswieżë - Lessons - (Tomorrow) - (Today and tomorrow) - In a moment: - Soon: - First: - Now: - End of lessons - Next: - Later: + Ùczbë + (Witro) + (Dzysô i witro) + Za chwilã: + Wnetka: + Pierszi: + Terô: + Kùńc ùczbë + Pòstãpno: + Pòzdze: - %1$d more lesson - %1$d more lessons - %1$d more lessons + Jesz %1$d ùczba + Jesz %1$d ùczbë + Jesz %1$d ùczbów - until %1$s - No upcoming lessons - An error occurred while loading the lessons - Homework - No homework to do - An error occurred while loading the homework + do %1$s + Felënk przińdłich ùczbów + Wëstąpił błãd òbczas ładowaniô ùczbë + Zadanié dodóm + Ni ma zadaniów dodóm do przërëchtowaniô + Wëstąpił błãd òbczas ładowaniô zadaniégò dodóm - %1$d more homework - %1$d more homework - %1$d more homework + Jesz %1$d zadanié dodóm + Jesz %1$d zadaniów dodóm + Jesz %1$d zadaniów dodóm - due %1$s - Last grades - No new grades - An error occurred while loading the grades - School announcements - No current announcements - An error occurred while loading the announcements + do %1$s + Slédné taksë + Ni ma nowëch taksów + Wëstąpił błãd òbczas ładowaniô taksów + Szkòlowé ògłosë + Ni ma aktualnëch ògłosów + Wëstąpił błãd òbczas ładowaniô ògłosów - %1$d more announcement - %1$d more announcements - %1$d more announcements + Jesz %1$d ògłos + Jesz %1$d ògłosë + Jesz %1$d ògłosów - Exams - No upcoming exams - An error occurred while loading the exams + Testë + Felënk przińdłich testów + Wëstąpił błãd òbczas ładowaniô testów - %1$d more exam - %1$d more exams - %1$d more exams + Jesz %1$d test + Jesz %1$d testë + Jesz %1$d testów - Conferences - No upcoming conferences - An error occurred while loading the conferences + Zéńdzenia + Ni ma przińdłich zéńdzeniów + Wëstąpił błãd òbczas ładowaniô zéńdzeniów - %1$d more conference - %1$d more conferences - %1$d more conferences + Jesz %1$d dodôtkòwé zéńdzenié + Jesz %1$d dodôtkòwé zéńdzenia + Jesz %1$d zéńdzeniów - An error occurred while loading data - None + Wëstąpił błãd òbczas ładowaniô danëch + Niżôdny - Check for updates - Before reporting a bug, check first if an update with the bug fix is available + Sprôwdzë dostãpnosc aktualizacëjów + Przed zgłoszenim błãdu sprôwdzë wczesny czë dostãpnô je ju aktualizacëjô z pòprôwką błãdu - Content - Retry - Description - No description - Teacher - Date - Entry date - Color - Details - Category - Close - No data - Subject - Prev - Next - Search - Search… - Yes - No - Save - Title - Add - Copied - Undo - Change - Add to calendar - Cancel + Tresc + Pònowi + Òpisënk + Felënk òpisënkù + Szkólny + Data + Data wpisënkù + Farwa + Detale + Kategòrijô + Zamkni + Ni ma danëch + Témat + Slédny + Pòstãpny + Szëkôj + Szëkôj… + Jo + Nié + Zapiszë + Titel + Dodôj + Òstało skòpiérowóné + Cofni + Zmieni + Dodôj do kaléndarzu + Anuluj - No lessons - Synchronized on %1$s at %2$s - Choose theme - Light - Dark - System Theme + Ni ma ùczbów + Zsynchronizowóno %1$s ò %2$s + Wëbierzë témã + Jôsny + Cemny + Systemòwô téma - App - Default view - Calculated average options - Force average calculation by app - Show presence - Attendance target - Show subjects without any attendances - Attendance calculator sorting - Theme - Grades expanding - Show groups next to subjects - Show additional lessons - Show empty tiles where there\'s no lesson - Show chart list in class grades - Show subjects without grades - Grades color scheme - Subjects sorting - Language - Menu configuration - Set the order of functions in the menu - Notifications - Other - Show notifications - Show upcoming lesson notifications - Make upcoming lesson notification persistent - Turn off when notification is not showing in your watch/band - Open system notification settings - Fix synchronization & notifications issues - Your device may have data synchronization issues and with notifications.\n\nTo fix them, you need to add Wulkanowy to the autostart and turn off battery optimization/saving in the phone settings. - Show debug notifications - Synchronization is disabled - Official app notifications - Capture official app notifications - Remove official app notifications after capture - Capture notifications - With this feature you can gain a substitute of push notifications like in the official app. All you need to do is allow Wulkanowy to receive all notifications in your system settings.\n\nHow it works?\nWhen you get a notification in Dziennik VULCAN, Wulkanowy will be notified (that\'s what these extra permissions are for) and will trigger a sync so that can send its own notification.\n\nFOR ADVANCED USERS ONLY - Upcoming lesson notifications - You must allow the Wulkanowy app to set alarms and reminders in your system settings to use this feature. - Go to settings - Synchronization - Automatic update - Suspended on holidays - Updates interval - Wi-Fi only - Sync now - Synced! - Sync failed - Sync in progress - Last full sync: %s - Value of the plus - Value of the minus - Reply with message history - Show arithmetic average when no weights provided - Incognito mode - Do not inform about reading the message - Support - Privacy Policy - Agreements - Show consent to data processing - Show ads in app - Watch single ad to support project - Consent to data processing - To view an advertisement you must agree to the data processing terms of our Privacy Policy - Agree - Privacy policy - Ad is loading - Thank you for your support, come back later for more ads - Advanced - Appearance & Behavior - Notifications - Synchronization - Advertisements - Grades - Dashboard - Tiles visibility - Attendance - Attendance calculator - Settings - Timetable - Grades - Calculated average - Messages - Appearance & Behavior - Languages, themes, subjects sorting - App notifications, fix problems - Notifications - Synchronization - Automatic update, synchronization interval - Plus and minus values, average calculation - Advanced - App version, contributors, social portals - Displaying advertisements, project support + Aplikacëjô + Domëslny pòzdrzatk + Nastôwë òbliczony strzédny + Wëmùszë òbliczenié strzédny bez aplikacëją + Pòkôżë bëtnosc + Docélowô bëtnosc + Pòkôżë témë bez frekwencji + Zortowanié kalkulatora bëtnoscë + Téma + Rozwijanié taksów + Pòkazuj karno kòl zajmë + Pòkôżë dodatkòwé ùczbë + Pòkôzuj pùsté kachle gdze ni ma ùczbów + Pòkôżë lëstã nacéchùnków w klasowich taksach + Pòkôżë zajmë bez taksów + Schemat farwów taksów + Zortowanié zajmów + Jãzëk + Kònfigùracëjô menu + Ùstôw kòlejnosc fónkcëje w menu + Wiadła + Jiné + Pòkôżë wiadła + Pòkôżë wiadła ò przińdłich ùczbach + Ùstawi wiadło ò przińdłi ùczbie jakò trwałé + Wëłączë ga wiadła nie pòkazëją sã na twòjim zégarkù/òpasce + Òdemkô systemòwé nastôwë wiadłów + Naprawi tôkle z synchronizacëją i wiadłama + Na twòjim ùrządzeniu mògą sã pòkôzywac tôkle z synchronizacëją danëch i wiadłama.\n\nBë je naprawic, dodôj Wùlkanowégò do aùtostartu i wëłączë òptimalizacëją/òszczãdzanié baterije w nastôwach systemòwëch mòbilkù. + Pòkôżë debùgòwanié wiadła + Synchronizacja je wëłączonô + Wiadła òficjalny aplikacëje + Przechwatiwanié wiadłów òficjalny aplikacëje + Rëmni wiadła òficjalny aplikacëje pò przechwôceniu + Przechwatiwanié wiadłów + Dzãka ti òpcje mòżesz zwëskac erzac pòwiadomieniów push tak jak w òficjalny aplikacje. Do tegò brëkùjesz ùdzelëc pòzwòleniégò na dostôwanié wszëtczich pòwiadomieniów w systémòwëch nastawach.\n\nJak to dzejô?\nCzedë Dziennik VULCAN wësle do cebie pòwiadomienié, Wulkanowy je òdbierze (do te brëkòwné są te dodôwkòwé pòzwòlenia), a tak ùrëszni synchronizacją, dzãka chtërny bãdze mógł wësłac swòje gwôsné pòwiadomienié.\n\nLENO DLÔ ZAAWANSOWÓNËCH BRËKÒWNIKÓW + Wiadła ò przińdłich ùczbach + Mùszisz zezwòlëc Wùlkanowémù na twòrzenié alarmów i przëpòmnieniów w nastôwach Twòjégò systemù, abë ùżic ti fónkcje. + Jidzë do nastôwów + Synchronizacja + Automaticznô aktulizacëja + Wstrzëmónô òbczas wakacjów + Jinterwôł aktualizacëjów + Leno Wi-Fi + Synchronizuj terô + Zsynchronizowóno! + Synchronizacëjô sã nié ùda + Synchronizacëjô w tokù + Òstatniô fùl synchronizacëjô: %s + Wôrtnosc plusa + Wôrtnosc minusa + Òdpòwiadôj z historëją wiadów + Licz strzédną aritmeticzną, ga niżôdnô taksa ni ma wôdżi + Trib incognito + Nie jinfòrmùj ò przeczëtaniu wiadë + Wspiarcé + Pòlitëka priwatnoscë + Zgòdë + Pòkôżë zgòdã na òbrabianié danëch + Pòkôżë reklamë w aplikacëje + Òbezdrzë jedurną reklamã, bë wesprzec projekt + Zgòdã na przerôbianié danëch + Abë òbézdrzëc reklamã, mùszisz sã zgòdzyc na warënczi przerôbianiégò danëch zawôrtë w naszi Pòlitëce Priwatnoscë + Zgôdzóm sã + Pòlitëka priwatnoscë + Reklama sã ładuje + Dzãkùjemë za wspiarcé, wrócë pózdni pò wicy reklamów + Zaawansowóné + Wëzdrzatk i zachòwanié + Wiadła + Synchronizacëjô + Reklamë + Taksë + Doma + Widocznosc kachlów + Frekwencjô + Kalkùlator frekwencëje + Nastôwë + Plan zajmów + Taksë + Òbliczonô strzédna + Wiadë + Wëzdrzatk i zachòwanié + Jãzëczi, témë, zortowanié témów + Wiadła aplikacëje, naprawianié tôklów + Wiadła + Synchronizacëjô + Aùtomaticznô aktualizacëjô, jinterwôł synchronizacëje + Wôrtnoscë plusa i minusa, òbliczanié strzédny + Zaawansowóné + Wersëjô aplikacëje, twórcë, spòlëznowé media + Wëswietlanié reklamów, wspiarcé projektu - New grades - New homework - New conferences - New exams - Lucky number - New messages - New notes - New school announcements - Push notifications - Upcoming lessons - Debug - Timetable change - New attendance + Nowé taksë + Nowé zadanié dodóm + Nowé zéńdzenia + Nowé testë + Szczestlëwi numerk + Nowé wiadë + Nowé ùwôdżi + Nowé szkòlowé ògłosë + Wiadła push + Przińdłé ùczbë + Debùgòwanié + Pòzmianë planu zajmów + Nowô frekwencjô - Black - Red - Blue - Green - Purple - No color + Czôrny + Czerwiony + Mòdri + Zelony + Lilewi + Felënk farwë - Download of updates has started… - An update has just been downloaded. - Restart - Update failed! Wulkanowy may not function properly. Consider updating + Ładowanié aktualizacëje òstało zôczãté… + Aktualizacëjô prawie òsta załadowónô. + Restartuj + Aktualizacëjô sã nié pòwiodła! Wùlkanowi mòże nie dzejac richtic. Rozważë aktualizacëjã - Application restart - The application must restart for the changes to be saved - Restart + Restartuj aplikacëjã + Żebë zmianë sã zapisałë, aplikacëjô mùszi sã zrestartowac + Restartuj - Authorization has been rejected. The data provided does not match the records in the secretary\'s office. - Invalid PESEL + Autorizacëjô òsta òdrzëconô. Dane chtërne bëłë dóné są niezgòdné z danyma w sekretariace. + Złi PESEL PESEL - Authorize - Authorization completed successfully - Authorization - Dear Parent,<br /><br />To authorize and ensure the security of data, we kindly ask you to enter below PESEL number of student <b>%1$s</b>. These details are essential for the proper assignment of access and protection of personal data in accordance with applicable regulations.<br /><br />After entering the data, it will be verified to ensure that access to the VULCAN system is granted exclusively to authorized individuals. Should you have any doubts or problems, please contact the school diary administrator to clarify the situation.<br /><br />We maintain the highest standards of personal data protection and ensure that all information provided is secure. Wulkanowy app does not store or process the PESEL number.<br /><br />We remind you that providing full and accurate data is mandatory and necessary for the use of the VULCAN system. - Skip for now + Pòcwierdzë + Autorizacëjô skùńczonô z sukcesã + Autorizacëjô + Drodżi Rodzëcu,<br /><br />Żebë pòcwierdzëc a zagwësnic bezpiek dónëch, prosëmë ò wpisanié niżi numru PESEL ùczni <b>%1$s</b>. Taczé detale są brëkòwné dlô pòprawnégò przedzéleniô przistãpù a téż òbarnë personowëch dónëch zgódno z òbrzesziwającyma reglama.<br /><br />Pò wprowadzenim dónëch, òstóną òne sprôwdzoné, żebë ùgwësnic sã czë przistãp do systémù VULCAN je przëznôwóny leno ùprôwnionym òsobóm. W przëtrôfkù jaczich le wątplëwòtów a tôklów, w célu wëwidnieniô stojiznë skòntaktuj sã ze administracją w szkòle.<br /><br />Ùtrzimiwómë nôwëższé sztandardë òbarnë personowëch dónëch, a garantérëjemë że wszëtczé pòdôwóné jinfòrmacje są w bezpiekù. Aplikacjô Wulkanowy nie przetrzimiwô ani nie przerôbiô numru PESEL.<br /><br />Przëbôcziwómë, że pòdanié fùlnëch a prôwdzëwëch dónëch je òbrzészkòwé a brëkòwné żebë ùżëwac systémù VULCAN. + Timczasã pòmiń - VULCAN\'s website requires verification - Why am I seeing this?\nThe register website from which Wulkanowy downloads data displays the same screen as above, so Wulkanowy must also show it to be able to download data from this website. There\'s no way around it - Verified successfully + Starna dzénnika VULCAN wëmôga werëfikacëji + Dlôcze to widzã?\n Jinternetowô starna dzénnika, z chtërny Wùlkanowy ładuje dabe, wëswietlô ną samą ekranã jak wëżi, tej Wùlkanowy téż mùszi ją pòkôzac, zebë móc załadowac dane z ny starnë. Niémòżnô tegò òbéńc + Zwerëfikòwóno z sukcesã - Emergency access + Awarëjné dostãp - No internet connection - An error occurred. Check your device clock - This account is inactive. Try logging in again - Connection to register failed. Servers can be overloaded. Please try again later - Loading data failed. Please try again later - Your password has expired or been changed. Please log in again - Register password change required - Maintenance underway UONET + register. Try again later - Unknown UONET + register error. Try again later - Unknown application error. Please try again later - Captcha verification required - An unexpected error occurred - Feature disabled by your school - Feature not available. Login in a mode other than Mobile API - This field is required + Felënk sparłãczëniô z jinternetã + Wëstąpił błãd. Sprôwdzë twòji ùrządzenia + Kònto je niéaktywné. Spróbùj zalogòwac sã pònowno + Nie ùdało sã sparłãczëc z dzénnika. Serwerë mògą bëc przecyżoné. Spróbùj pònowno pózdni + Ładowanié pòdôwków skùńczoné niezdarã. Proszã spróbòwac znowù pòzdze + Twòjô parola zgôsłô abò òsta zmienionô. Zalogùj sã pònowno + Wëmôgô zmienic parolã do dzénnika + Trwô technicznô przerwa dzénnika UONET+. Spróbùj pònowno pózdni + Nieznóné błãd dzénnika UONET+. Spróbùj znowù pòzdze + Nieznóné błãd aplikacëji. Proszã spróbòwac znowù pòzdze + Brekòwóna werëfikacëja captcha + Wëstąpił nieżdónié błãd + Funkcëjô je wëłączona przez twòją szkòłã + Funkcëjô nie je dostąpnô. Zalogùj sã w jinszim tribie nigle Móbilné API + To pòle je brekòwané - Mute - Unmute - You have muted this user - You have unmuted this user + Wëcëszenié + Wëłączë wëcëszenié + Wëcësził jes tegò brëkòwnika + Wëłącził jes wëcëszenié tegò brëkòwnika From d0ad5028d8c03500afcde54824539a0d6b91ca5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Fri, 31 May 2024 10:14:48 +0200 Subject: [PATCH 06/11] Add Kashubian language (#2579) --- .gitignore | 1 + .../github/wulkanowy/utils/TimeExtension.kt | 32 +++++++++++++++---- .../main/res/values-cs/preferences_values.xml | 1 + .../res/values-csb-rPL/preferences_values.xml | 1 + .../main/res/values-de/preferences_values.xml | 1 + .../main/res/values-pl/preferences_values.xml | 1 + .../main/res/values-ru/preferences_values.xml | 1 + .../main/res/values-sk/preferences_values.xml | 1 + .../main/res/values-uk/preferences_values.xml | 1 + .../main/res/values/preferences_values.xml | 2 ++ 10 files changed, 35 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 12c6f2419..810f5e7aa 100644 --- a/.gitignore +++ b/.gitignore @@ -71,6 +71,7 @@ captures/ .idea/deploymentTargetDropDown.xml .idea/deploymentTargetSelector.xml .idea/kotlinc.xml +.idea/studiobot.xml # Keystore files *.jks diff --git a/app/src/main/java/io/github/wulkanowy/utils/TimeExtension.kt b/app/src/main/java/io/github/wulkanowy/utils/TimeExtension.kt index e7a50d0c3..77689fcb7 100644 --- a/app/src/main/java/io/github/wulkanowy/utils/TimeExtension.kt +++ b/app/src/main/java/io/github/wulkanowy/utils/TimeExtension.kt @@ -1,14 +1,32 @@ package io.github.wulkanowy.utils import java.text.SimpleDateFormat -import java.time.* -import java.time.DayOfWeek.* +import java.time.DayOfWeek.FRIDAY +import java.time.DayOfWeek.MONDAY +import java.time.DayOfWeek.SATURDAY +import java.time.DayOfWeek.SUNDAY +import java.time.Instant +import java.time.LocalDate +import java.time.LocalDateTime +import java.time.Month +import java.time.ZoneId +import java.time.ZoneOffset import java.time.format.DateTimeFormatter -import java.time.temporal.TemporalAdjusters.* -import java.util.* +import java.time.temporal.TemporalAdjusters.firstInMonth +import java.time.temporal.TemporalAdjusters.next +import java.time.temporal.TemporalAdjusters.previous +import java.util.Locale private const val DEFAULT_DATE_PATTERN = "dd.MM.yyyy" +fun getDefaultLocaleWithFallback(): Locale { + val locale = Locale.getDefault() + if (locale.language == "csb") { + return Locale.forLanguageTag("pl") + } + return locale +} + fun LocalDate.toTimestamp(): Long = atStartOfDay() .toInstant(ZoneOffset.UTC) .toEpochMilli() @@ -23,7 +41,7 @@ fun String.toLocalDate(format: String = DEFAULT_DATE_PATTERN): LocalDate = LocalDate.parse(this, DateTimeFormatter.ofPattern(format)) fun LocalDate.toFormattedString(pattern: String = DEFAULT_DATE_PATTERN): String = - format(DateTimeFormatter.ofPattern(pattern)) + format(DateTimeFormatter.ofPattern(pattern, getDefaultLocaleWithFallback())) fun Instant.toFormattedString( pattern: String = DEFAULT_DATE_PATTERN, @@ -31,7 +49,7 @@ fun Instant.toFormattedString( ): String = atZone(tz).format(DateTimeFormatter.ofPattern(pattern)) fun Month.getFormattedName(): String { - val formatter = SimpleDateFormat("LLLL", Locale.getDefault()) + val formatter = SimpleDateFormat("LLLL", getDefaultLocaleWithFallback()) val date = LocalDateTime.now().withMonth(value) return formatter.format(date.toInstant(ZoneOffset.UTC).toEpochMilli()).capitalise() @@ -76,7 +94,7 @@ inline val LocalDate.previousOrSameSchoolDay: LocalDate } inline val LocalDate.weekDayName: String - get() = format(DateTimeFormatter.ofPattern("EEEE", Locale.getDefault())) + get() = format(DateTimeFormatter.ofPattern("EEEE", getDefaultLocaleWithFallback())) inline val LocalDate.monday: LocalDate get() = with(MONDAY) diff --git a/app/src/main/res/values-cs/preferences_values.xml b/app/src/main/res/values-cs/preferences_values.xml index c9b2258fc..fa5bad545 100644 --- a/app/src/main/res/values-cs/preferences_values.xml +++ b/app/src/main/res/values-cs/preferences_values.xml @@ -19,6 +19,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi 15 minut diff --git a/app/src/main/res/values-csb-rPL/preferences_values.xml b/app/src/main/res/values-csb-rPL/preferences_values.xml index 8b4be0d9b..902014177 100644 --- a/app/src/main/res/values-csb-rPL/preferences_values.xml +++ b/app/src/main/res/values-csb-rPL/preferences_values.xml @@ -19,6 +19,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi 15 minutów diff --git a/app/src/main/res/values-de/preferences_values.xml b/app/src/main/res/values-de/preferences_values.xml index 23828b030..a6d698416 100644 --- a/app/src/main/res/values-de/preferences_values.xml +++ b/app/src/main/res/values-de/preferences_values.xml @@ -19,6 +19,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi 15 Minuten diff --git a/app/src/main/res/values-pl/preferences_values.xml b/app/src/main/res/values-pl/preferences_values.xml index 8eafa1cb4..ae7d0ac84 100644 --- a/app/src/main/res/values-pl/preferences_values.xml +++ b/app/src/main/res/values-pl/preferences_values.xml @@ -19,6 +19,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi 15 minut diff --git a/app/src/main/res/values-ru/preferences_values.xml b/app/src/main/res/values-ru/preferences_values.xml index 63ab4fc44..095a2a975 100644 --- a/app/src/main/res/values-ru/preferences_values.xml +++ b/app/src/main/res/values-ru/preferences_values.xml @@ -19,6 +19,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi 15 минут diff --git a/app/src/main/res/values-sk/preferences_values.xml b/app/src/main/res/values-sk/preferences_values.xml index b06f2b3fa..af34eebcc 100644 --- a/app/src/main/res/values-sk/preferences_values.xml +++ b/app/src/main/res/values-sk/preferences_values.xml @@ -19,6 +19,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi 15 minút diff --git a/app/src/main/res/values-uk/preferences_values.xml b/app/src/main/res/values-uk/preferences_values.xml index 72abe1f70..4b090f095 100644 --- a/app/src/main/res/values-uk/preferences_values.xml +++ b/app/src/main/res/values-uk/preferences_values.xml @@ -19,6 +19,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi 15 хвилин diff --git a/app/src/main/res/values/preferences_values.xml b/app/src/main/res/values/preferences_values.xml index e5020b533..fc9a4eeb4 100644 --- a/app/src/main/res/values/preferences_values.xml +++ b/app/src/main/res/values/preferences_values.xml @@ -40,6 +40,7 @@ Deutsch Čeština Slovenčina + Kaszëbsczi system @@ -50,6 +51,7 @@ de cs sk + csb From 77155a74d3cb396744bb2a53f7b37a17152d0154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Mon, 10 Jun 2024 19:03:01 +0200 Subject: [PATCH 07/11] Version 2.6.16 --- app/build.gradle | 8 ++++---- app/src/main/play/release-notes/pl-PL/default.txt | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f56d86955..4be4543c4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 175 - versionName "2.6.15" + versionCode 176 + versionName "2.6.16" 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 = 3 + updatePriority = 2 enabled.set(false) } @@ -191,7 +191,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.6.13' + implementation 'io.github.wulkanowy:sdk:2.6.14' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index 329da27f1..dfcb4ef55 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,5 +1,6 @@ -Wersja 2.6.15 +Wersja 2.6.16 -— naprawiliśmy moduł wiadomości +— dodaliśmy język kaszubski +— naprawiliśmy crash aplikacji przy przełączaniu uczniów, kiedy włączone są reklamy Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From 3e106d5af0265477b2704a2f6cdeb63eab56fe05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Tue, 11 Jun 2024 20:37:31 +0200 Subject: [PATCH 08/11] Add end (#2574) --- .../java/io/github/wulkanowy/data/Resource.kt | 4 +- .../data/repositories/WulkanowyRepository.kt | 5 +- .../wulkanowy/services/sync/SyncManager.kt | 20 +++++- .../wulkanowy/services/sync/SyncWorker.kt | 6 +- .../wulkanowy/ui/modules/end/EndFragment.kt | 31 +++++++++ .../wulkanowy/ui/modules/end/EndView.kt | 5 ++ .../ui/modules/login/LoginActivity.kt | 6 ++ .../ui/modules/login/LoginPresenter.kt | 12 +++- .../wulkanowy/ui/modules/login/LoginView.kt | 2 + .../LuckyNumberWidgetProvider.kt | 9 +++ .../wulkanowy/ui/modules/main/MainActivity.kt | 8 +++ .../ui/modules/main/MainPresenter.kt | 10 +++ .../wulkanowy/ui/modules/main/MainView.kt | 2 + .../timetablewidget/TimetableWidgetFactory.kt | 3 + app/src/main/res/layout/fragment_end.xml | 63 +++++++++++++++++++ .../values-csb-rPL-v29/preferences_values.xml | 9 +++ app/src/main/res/values/strings.xml | 4 ++ 17 files changed, 192 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/io/github/wulkanowy/ui/modules/end/EndFragment.kt create mode 100644 app/src/main/java/io/github/wulkanowy/ui/modules/end/EndView.kt create mode 100644 app/src/main/res/layout/fragment_end.xml create mode 100644 app/src/main/res/values-csb-rPL-v29/preferences_values.xml diff --git a/app/src/main/java/io/github/wulkanowy/data/Resource.kt b/app/src/main/java/io/github/wulkanowy/data/Resource.kt index 712a946f3..61eaaea19 100644 --- a/app/src/main/java/io/github/wulkanowy/data/Resource.kt +++ b/app/src/main/java/io/github/wulkanowy/data/Resource.kt @@ -1,5 +1,6 @@ package io.github.wulkanowy.data +import io.github.wulkanowy.data.repositories.isEndDateReached import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.flow.Flow @@ -267,7 +268,8 @@ inline fun networkBoundResource( emit(Resource.Loading()) val data = query().first() - if (shouldFetch(data)) { + val updatedShouldFetch = if (isEndDateReached) false else shouldFetch(data) + if (updatedShouldFetch) { emit(Resource.Intermediate(data)) try { diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/WulkanowyRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/WulkanowyRepository.kt index 815f8b758..a25f8a0e6 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/WulkanowyRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/WulkanowyRepository.kt @@ -12,9 +12,13 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.filterNot import kotlinx.coroutines.sync.Mutex import timber.log.Timber +import java.time.LocalDate import javax.inject.Inject import javax.inject.Singleton +private val endDate = LocalDate.of(2024, 6, 25) +val isEndDateReached = LocalDate.now() >= endDate + @Singleton class WulkanowyRepository @Inject constructor( private val wulkanowyService: WulkanowyService, @@ -24,7 +28,6 @@ class WulkanowyRepository @Inject constructor( ) { private val saveFetchResultMutex = Mutex() - private val cacheKey = "mapping_refresh_key" fun getAdminMessages(): Flow>> = diff --git a/app/src/main/java/io/github/wulkanowy/services/sync/SyncManager.kt b/app/src/main/java/io/github/wulkanowy/services/sync/SyncManager.kt index e0a136f98..aa0700b3e 100644 --- a/app/src/main/java/io/github/wulkanowy/services/sync/SyncManager.kt +++ b/app/src/main/java/io/github/wulkanowy/services/sync/SyncManager.kt @@ -4,19 +4,27 @@ import android.os.Build.VERSION.SDK_INT import android.os.Build.VERSION_CODES.O import androidx.core.app.NotificationManagerCompat import androidx.lifecycle.asFlow -import androidx.work.* import androidx.work.BackoffPolicy.EXPONENTIAL +import androidx.work.Constraints +import androidx.work.Data import androidx.work.ExistingPeriodicWorkPolicy.KEEP import androidx.work.ExistingPeriodicWorkPolicy.UPDATE +import androidx.work.ExistingWorkPolicy import androidx.work.NetworkType.CONNECTED import androidx.work.NetworkType.UNMETERED +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkInfo +import androidx.work.WorkManager import io.github.wulkanowy.data.db.SharedPrefProvider import io.github.wulkanowy.data.db.SharedPrefProvider.Companion.APP_VERSION_CODE_KEY import io.github.wulkanowy.data.repositories.PreferencesRepository +import io.github.wulkanowy.data.repositories.isEndDateReached import io.github.wulkanowy.services.sync.channels.Channel import io.github.wulkanowy.utils.AppInfo import io.github.wulkanowy.utils.isHolidays import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf import timber.log.Timber import java.time.LocalDate.now import java.util.concurrent.TimeUnit.MINUTES @@ -34,7 +42,9 @@ class SyncManager @Inject constructor( ) { init { - if (now().isHolidays) stopSyncWorker() + if (now().isHolidays || isEndDateReached) { + stopSyncWorker() + } if (SDK_INT >= O) { channels.forEach { it.create() } @@ -50,7 +60,7 @@ class SyncManager @Inject constructor( } fun startPeriodicSyncWorker(restart: Boolean = false) { - if (preferencesRepository.isServiceEnabled && !now().isHolidays) { + if (preferencesRepository.isServiceEnabled && !now().isHolidays && isEndDateReached) { val serviceInterval = preferencesRepository.servicesInterval workManager.enqueueUniquePeriodicWork( @@ -70,6 +80,10 @@ class SyncManager @Inject constructor( // if quiet, no notifications will be sent fun startOneTimeSyncWorker(quiet: Boolean = false): Flow { + if (isEndDateReached) { + return flowOf(null) + } + val work = OneTimeWorkRequestBuilder() .setInputData( Data.Builder() diff --git a/app/src/main/java/io/github/wulkanowy/services/sync/SyncWorker.kt b/app/src/main/java/io/github/wulkanowy/services/sync/SyncWorker.kt index bcbc23ef2..a7639a258 100644 --- a/app/src/main/java/io/github/wulkanowy/services/sync/SyncWorker.kt +++ b/app/src/main/java/io/github/wulkanowy/services/sync/SyncWorker.kt @@ -15,6 +15,7 @@ import io.github.wulkanowy.R import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.data.repositories.SemesterRepository import io.github.wulkanowy.data.repositories.StudentRepository +import io.github.wulkanowy.data.repositories.isEndDateReached import io.github.wulkanowy.sdk.exception.FeatureNotAvailableException import io.github.wulkanowy.sdk.scrapper.exception.FeatureDisabledException import io.github.wulkanowy.sdk.scrapper.exception.FeatureUnavailableException @@ -42,7 +43,9 @@ class SyncWorker @AssistedInject constructor( override suspend fun doWork(): Result = withContext(dispatchersProvider.io) { Timber.i("SyncWorker is starting") - if (!studentRepository.isCurrentStudentSet()) return@withContext Result.failure() + if (!studentRepository.isCurrentStudentSet() || isEndDateReached) { + return@withContext Result.failure() + } val (student, semester) = try { val student = studentRepository.getCurrentStudent() @@ -91,6 +94,7 @@ class SyncWorker @AssistedInject constructor( .build() ) } + errors.isNotEmpty() -> Result.retry() else -> { preferencesRepository.lasSyncDate = Instant.now() diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/end/EndFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/end/EndFragment.kt new file mode 100644 index 000000000..cefbdddd3 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/end/EndFragment.kt @@ -0,0 +1,31 @@ +package io.github.wulkanowy.ui.modules.end + +import android.os.Bundle +import android.text.method.LinkMovementMethod +import android.view.View +import androidx.activity.addCallback +import androidx.core.text.HtmlCompat +import dagger.hilt.android.AndroidEntryPoint +import io.github.wulkanowy.R +import io.github.wulkanowy.databinding.FragmentEndBinding +import io.github.wulkanowy.ui.base.BaseFragment + +@AndroidEntryPoint +class EndFragment : BaseFragment(R.layout.fragment_end), EndView { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding = FragmentEndBinding.bind(view) + + requireActivity().onBackPressedDispatcher.addCallback { + requireActivity().finishAffinity() + } + + binding.endClose.setOnClickListener { requireActivity().finishAffinity() } + + val message = getString(R.string.end_message) + binding.endDescription.movementMethod = LinkMovementMethod.getInstance() + binding.endDescription.text = + HtmlCompat.fromHtml(message, HtmlCompat.FROM_HTML_MODE_COMPACT) + } +} diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/end/EndView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/end/EndView.kt new file mode 100644 index 000000000..730d570e6 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/end/EndView.kt @@ -0,0 +1,5 @@ +package io.github.wulkanowy.ui.modules.end + +import io.github.wulkanowy.ui.base.BaseView + +interface EndView : BaseView diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt index e528c5147..0d9bb21ef 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt @@ -15,6 +15,7 @@ import io.github.wulkanowy.R import io.github.wulkanowy.data.pojos.RegisterUser import io.github.wulkanowy.databinding.ActivityLoginBinding import io.github.wulkanowy.ui.base.BaseActivity +import io.github.wulkanowy.ui.modules.end.EndFragment import io.github.wulkanowy.ui.modules.login.advanced.LoginAdvancedFragment import io.github.wulkanowy.ui.modules.login.form.LoginFormFragment import io.github.wulkanowy.ui.modules.login.recover.LoginRecoverFragment @@ -115,9 +116,14 @@ class LoginActivity : BaseActivity(), Logi } } + override fun navigateToEnd() { + openFragment(EndFragment(), clearBackStack = true) + } + override fun onResume() { super.onResume() inAppUpdateHelper.onResume() presenter.updateSdkMappings() + presenter.checkIfEnd() } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt index aff0515f0..36552193c 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt @@ -2,6 +2,8 @@ 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.data.repositories.isEndDateReached +import io.github.wulkanowy.services.sync.SyncManager import io.github.wulkanowy.ui.base.BasePresenter import io.github.wulkanowy.ui.base.ErrorHandler import kotlinx.coroutines.launch @@ -11,7 +13,8 @@ import javax.inject.Inject class LoginPresenter @Inject constructor( private val wulkanowyRepository: WulkanowyRepository, errorHandler: ErrorHandler, - studentRepository: StudentRepository + studentRepository: StudentRepository, + private val syncManager: SyncManager ) : BasePresenter(errorHandler, studentRepository) { override fun onAttachView(view: LoginView) { @@ -26,4 +29,11 @@ class LoginPresenter @Inject constructor( .onFailure { Timber.e(it) } } } + + fun checkIfEnd() { + if (isEndDateReached) { + syncManager.stopSyncWorker() + view?.navigateToEnd() + } + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt index a0949e6d9..3fe1f0463 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt @@ -5,4 +5,6 @@ import io.github.wulkanowy.ui.base.BaseView interface LoginView : BaseView { fun initView() + + fun navigateToEnd() } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumberwidget/LuckyNumberWidgetProvider.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumberwidget/LuckyNumberWidgetProvider.kt index e6de17818..18437ef7a 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumberwidget/LuckyNumberWidgetProvider.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/luckynumberwidget/LuckyNumberWidgetProvider.kt @@ -14,7 +14,9 @@ import io.github.wulkanowy.R import io.github.wulkanowy.data.dataOrThrow import io.github.wulkanowy.data.db.SharedPrefProvider import io.github.wulkanowy.data.repositories.LuckyNumberRepository +import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.data.repositories.StudentRepository +import io.github.wulkanowy.data.repositories.isEndDateReached import io.github.wulkanowy.data.toFirstResult import io.github.wulkanowy.ui.modules.Destination import io.github.wulkanowy.ui.modules.splash.SplashActivity @@ -35,6 +37,9 @@ class LuckyNumberWidgetProvider : AppWidgetProvider() { @Inject lateinit var sharedPref: SharedPrefProvider + @Inject + lateinit var preferencesRepository: PreferencesRepository + companion object { private const val LUCKY_NUMBER_WIDGET_MAX_SIZE = 196 @@ -130,6 +135,10 @@ class LuckyNumberWidgetProvider : AppWidgetProvider() { } private fun getLuckyNumber(studentId: Long, appWidgetId: Int) = runBlocking { + if (isEndDateReached) { + return@runBlocking null + } + try { val students = studentRepository.getSavedStudents() val student = students.singleOrNull { it.student.id == studentId }?.student diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt index e64aa9b07..23aa51b42 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt @@ -33,6 +33,7 @@ import io.github.wulkanowy.ui.modules.Destination import io.github.wulkanowy.ui.modules.account.accountquick.AccountQuickDialog import io.github.wulkanowy.ui.modules.auth.AuthDialog import io.github.wulkanowy.ui.modules.captcha.CaptchaDialog +import io.github.wulkanowy.ui.modules.end.EndFragment import io.github.wulkanowy.ui.modules.settings.appearance.menuorder.AppMenuItem import io.github.wulkanowy.utils.AnalyticsHelper import io.github.wulkanowy.utils.AppInfo @@ -139,6 +140,7 @@ class MainActivity : BaseActivity(), MainVie super.onResume() inAppUpdateHelper.onResume() presenter.updateSdkMappings() + presenter.checkIfEnd() } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -362,4 +364,10 @@ class MainActivity : BaseActivity(), MainVie super.onSaveInstanceState(outState) navController.onSaveInstanceState(outState) } + + override fun navigateToEnd() { + binding.mainToolbar.isVisible = false + pushView(EndFragment()) + onBackCallback?.isEnabled = false + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt index 6a072718d..13edac6e1 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt @@ -7,6 +7,7 @@ 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.repositories.isEndDateReached import io.github.wulkanowy.data.resourceFlow import io.github.wulkanowy.services.sync.SyncManager import io.github.wulkanowy.ui.base.BasePresenter @@ -15,6 +16,7 @@ import io.github.wulkanowy.ui.base.ErrorHandler import io.github.wulkanowy.ui.modules.Destination import io.github.wulkanowy.ui.modules.account.AccountView import io.github.wulkanowy.ui.modules.account.accountdetails.AccountDetailsView +import io.github.wulkanowy.ui.modules.end.EndView import io.github.wulkanowy.ui.modules.studentinfo.StudentInfoView import io.github.wulkanowy.utils.AdsHelper import io.github.wulkanowy.utils.AnalyticsHelper @@ -110,6 +112,7 @@ class MainPresenter @Inject constructor( } private fun shouldShowBottomNavigation(destination: BaseView) = when (destination) { + is EndView, is AccountView, is StudentInfoView, is AccountDetailsView -> false @@ -208,4 +211,11 @@ class MainPresenter @Inject constructor( .onFailure { Timber.e(it) } } } + + fun checkIfEnd() { + if (isEndDateReached) { + syncManager.stopSyncWorker() + view?.navigateToEnd() + } + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt index 70a94fc81..c83d95681 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt @@ -48,6 +48,8 @@ interface MainView : BaseView { fun openMoreDestination(destination: Destination) + fun navigateToEnd() + interface MainChildView { fun onFragmentReselected() diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/timetablewidget/TimetableWidgetFactory.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/timetablewidget/TimetableWidgetFactory.kt index e60d54880..55621bc5a 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/timetablewidget/TimetableWidgetFactory.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/timetablewidget/TimetableWidgetFactory.kt @@ -22,6 +22,7 @@ import io.github.wulkanowy.data.repositories.PreferencesRepository import io.github.wulkanowy.data.repositories.SemesterRepository import io.github.wulkanowy.data.repositories.StudentRepository import io.github.wulkanowy.data.repositories.TimetableRepository +import io.github.wulkanowy.data.repositories.isEndDateReached import io.github.wulkanowy.data.toFirstResult import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getDateWidgetKey import io.github.wulkanowy.ui.modules.timetablewidget.TimetableWidgetProvider.Companion.getStudentWidgetKey @@ -71,6 +72,8 @@ class TimetableWidgetFactory( items = emptyList() + if (isEndDateReached) return + runBlocking { runCatching { val student = getStudent(studentId) ?: return@runBlocking diff --git a/app/src/main/res/layout/fragment_end.xml b/app/src/main/res/layout/fragment_end.xml new file mode 100644 index 000000000..883f0fc56 --- /dev/null +++ b/app/src/main/res/layout/fragment_end.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-csb-rPL-v29/preferences_values.xml b/app/src/main/res/values-csb-rPL-v29/preferences_values.xml new file mode 100644 index 000000000..23a933143 --- /dev/null +++ b/app/src/main/res/values-csb-rPL-v29/preferences_values.xml @@ -0,0 +1,9 @@ + + + + Motiw systemu + Jôsny + Cemny + Cemny (AMOLED) + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 82ccf5a2a..2337cfe87 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -895,4 +895,8 @@ Unmute You have muted this user You have unmuted this user + + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href="https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! From 6ac30c5a03576e85f697fcba8d870c7012d59344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Wed, 12 Jun 2024 21:36:13 +0200 Subject: [PATCH 09/11] New Crowdin updates (#2593) --- app/src/main/res/values-cs/strings.xml | 3 +++ app/src/main/res/values-csb-rPL/strings.xml | 3 +++ app/src/main/res/values-de/strings.xml | 3 +++ app/src/main/res/values-pl/strings.xml | 3 +++ app/src/main/res/values-ru/strings.xml | 27 ++++++++++++--------- app/src/main/res/values-sk/strings.xml | 3 +++ app/src/main/res/values-uk/strings.xml | 3 +++ 7 files changed, 33 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index bfb19ee14..25537b148 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -895,4 +895,7 @@ Zrušit ztlumení Ztlumili jste tohoto uživatele Zrušili jste ztlumení tohoto uživatele + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href=\"https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl\">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! diff --git a/app/src/main/res/values-csb-rPL/strings.xml b/app/src/main/res/values-csb-rPL/strings.xml index 010a30821..130509a3c 100644 --- a/app/src/main/res/values-csb-rPL/strings.xml +++ b/app/src/main/res/values-csb-rPL/strings.xml @@ -848,4 +848,7 @@ Wëłączë wëcëszenié Wëcësził jes tegò brëkòwnika Wëłącził jes wëcëszenié tegò brëkòwnika + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href=\"https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl\">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index cf682cf56..69254c2c3 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -801,4 +801,7 @@ Stummschaltung aufheben Sie haben diesen Benutzer stummgeschaltet Sie haben die Stummschaltung dieses Benutzers aufgehoben + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href=\"https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl\">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 9d291261e..f7af09f36 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -895,4 +895,7 @@ Wyłącz wyciszenie Wyciszyleś tego użytkownika Wyłączyłeś wyciszenie tego użytkownika + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href=\"https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl\">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 8f6847c75..4014a9374 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -58,7 +58,7 @@ Используйте назначенный логин или email в @%1$s Недопустимый суффикс домена Неверный символ. Если вы не можете найти символ, пожалуйста, свяжитесь со школой - Don\'t make this up! If you cannot find it, please contact the school + Неверный символ. Если вы не можете найти символ, пожалуйста, свяжитесь со школой Ученик не найден. Проверьте symbol и выбранный тип дненика UONET+ Данный ученик уже авторизован Symbol можно найти на странице регистрации в  Uczeń → Dostęp Mobilny → Wygeneruj kod dostępu.\n\nУбедитесь, что вы выбрали соответствующий тип дневника в поле Тип дневника UONET+ на первом экране входа @@ -123,7 +123,7 @@ Ожидаемая оценка Описательная оценка Рассчитанная средняя семестра - Calculated annual average + Рассчитанная средняя оценка Как работает \"Рассчитанная средняя оценка\"? Рассчитанная средняя оценка - это среднее арифметическое, рассчитанное на основе средних оценок по предметам. Это позволяет узнать приблизительную итоговую среднюю оценку. Она рассчитывается способом, выбранным пользователем в настройках приложения. Рекомендуется выбрать подходящий вариант, так как каждая школа по разному считает среднюю оценку. Кроме того, если ваша школа выставляет средние оценки по предметам на странице Vulcan, приложение просто загрузит их. Это можно изменить, заставив приложение считать среднюю оценку в настройках.\n\nСредняя из оценок выбранного семестра:\n1. Вычисление средневзвешенного значения по каждому предмету за семестр\n2.Суммирование вычисленных значений\n3. Вычисление среднего арифметического суммированных значений\n\nСредняя из средних оценок семестров:\n1.Расчет средневзвешенного значения для каждого предмета в семестрах. \n2. Вычисление среднего арифметического из средневзвешенных значений для каждого предмета в семестрах.\n3. Суммирование средних арифметических\n4. Вычисление среднего арифматического из суммированных значений\n\nСредняя из оценок со всего года:\n1. Расчет средневзвешенного значения по каждому предмету за год. Итоговое среднее значение за 1 семестр не имеет значения.\n2. Суммирование вычисленных средних\n3. Расчет среднего арифметического суммированных чисел Как работает \"Итоговая средняя оценка\"? @@ -271,11 +271,11 @@ Итоговая посещаемость Калькулятор посещаемости - %1$d over target - right on target - %1$d under target - %1$d/%2$d presences - No attendances recorded + %1$d выше нормы + является нормой + %1$d выше нормы + %1$d/%2$d посещаемостей + Нет зарегистрированных участников Отсутствие по школьным причинам Отсутствие по уважительной причине Отсутствие по неуважительной причине @@ -742,9 +742,9 @@ Параметры расчёта средних оценок Принудительно высчитать среднюю оценку через приложение Показывать присутствия - Attendance target - Show subjects without any attendances - Attendance calculator sorting + Норма посещаемости + Показать предметы без посещаемостей + Сортировка рассчитанных посещаемостей Тема Разворачивание оценок Показать группы рядом с темами @@ -870,10 +870,10 @@ Пропустить сейчас Требуется верификация веб-сайта VULCAN - Why am I seeing this?\nThe register website from which Wulkanowy downloads data displays the same screen as above, so Wulkanowy must also show it to be able to download data from this website. There\'s no way around it + Почему я это вижу?\n Веб-сайт регистрации, с которого Wulkanowy загружает данные, отображает тот же экран, что и выше, поэтому Wulkanowy также должен показать его, чтобы иметь возможность загружать данные с этого веб-сайта. Нет никакого способа обойти это Верификация успешна - Emergency access + Экстренный доступ Интернет-соединение отсутствует Произошла ошибка. Проверьте время на вашем устройстве @@ -895,4 +895,7 @@ Включить уведомления Вы отключили уведомления от этого пользователя Вы включили уведомления от этого пользователя снова + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href=\"https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl\">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 519670f6c..7de883e92 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -895,4 +895,7 @@ Zrušiť stlmenie Stlmili ste tohto používateľa Zrušili ste stlmenie tohto používateľa + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href=\"https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl\">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c6f6f0462..a2586935d 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -895,4 +895,7 @@ Ввімкнути сповіщення Ви ігноруєте цього користувача Ви не ігноруєте цього користувача + + Koniec Wulkanowego + Jak zapewne niektórzy z Was się domyślali zbliża się ten moment, aby zakończyć pewien etap. Wraz z końcem tego roku szkolnego zamykamy projekt Wulkanowy. Stworzenie apki było ekscytującym wyzwaniem, ale skala projektu jest tak duża, że nie jesteśmy w stanie odpowiedzialnie utrzymywać aplikacji. Wulkanowy był fajną przygodą, ale sytuacja wymknęła się nam spod kontroli – zarówno pod względem technicznym, jak i społecznym. Nie akceptujemy pojawiającego się hejtu wobec nas ani wobec innych, także Vulcana. Nie chcemy brać udziału w tych działaniach i być z nimi utożsamiani. Prosimy Was o powściągliwość i rozwagę w publikowanych komentarzach i nieprzekraczanie dopuszczalnych granic.<br /><br />Prosimy Was też o uszanowanie naszej decyzji, jest ona przemyślana i ostateczna. Wszystkim dotychczasowym użytkownikom Wulkanowego rekomendujemy użycie oficjalnej aplikacji <a href=\"https://play.google.com/store/apps/details?id=pl.edu.vulcan.hebe&hl=pl\">Dzienniczek VULCAN</a>. Jeszcze raz dziękujemy wszystkim użytkownikom za lata wsparcia, pomoc i miłe słowa! From f5aadb9cc8fb477e9aa199c62e3a0f0e92a07559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Wed, 12 Jun 2024 22:22:22 +0200 Subject: [PATCH 10/11] Version 2.7.0 --- app/build.gradle | 6 +++--- .../java/io/github/wulkanowy/data/WulkanowySdkFactory.kt | 4 +++- app/src/main/play/release-notes/pl-PL/default.txt | 7 ++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4be4543c4..17cb0aa60 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 21 targetSdkVersion 34 - versionCode 176 - versionName "2.6.16" + versionCode 177 + versionName "2.7.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "app_name", "Wulkanowy" @@ -191,7 +191,7 @@ ext { } dependencies { - implementation 'io.github.wulkanowy:sdk:2.6.14' + implementation 'io.github.wulkanowy:sdk:2.7.0' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' diff --git a/app/src/main/java/io/github/wulkanowy/data/WulkanowySdkFactory.kt b/app/src/main/java/io/github/wulkanowy/data/WulkanowySdkFactory.kt index 6b8555e43..9de751c5c 100644 --- a/app/src/main/java/io/github/wulkanowy/data/WulkanowySdkFactory.kt +++ b/app/src/main/java/io/github/wulkanowy/data/WulkanowySdkFactory.kt @@ -36,7 +36,9 @@ class WulkanowySdkFactory @Inject constructor( private val migrationFailedStudentIds = mutableSetOf() private val sandbox: ListenableFuture? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && JavaScriptSandbox.isSupported()) - JavaScriptSandbox.createConnectedInstanceAsync(context) + runCatching { JavaScriptSandbox.createConnectedInstanceAsync(context) } + .onFailure { Timber.e(it) } + .getOrNull() else null private val sdk = Sdk().apply { diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt index dfcb4ef55..c616505f8 100644 --- a/app/src/main/play/release-notes/pl-PL/default.txt +++ b/app/src/main/play/release-notes/pl-PL/default.txt @@ -1,6 +1,7 @@ -Wersja 2.6.16 +Wersja 2.7.0 -— dodaliśmy język kaszubski -— naprawiliśmy crash aplikacji przy przełączaniu uczniów, kiedy włączone są reklamy +— naprawiliśmy ustawienia wyglądu po zmianie na język kaszubski +— dodaliśmy ekran końca +- naprawiliśmy ładowanie ocen z modułu Uczeń Plus Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases From a0a589240ae02e88c8165ffddfa3609ce500b5e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 13:43:01 +0000 Subject: [PATCH 11/11] Bump androidx.lifecycle:lifecycle-livedata-ktx from 2.8.0 to 2.8.2 Bumps androidx.lifecycle:lifecycle-livedata-ktx from 2.8.0 to 2.8.2. --- updated-dependencies: - dependency-name: androidx.lifecycle:lifecycle-livedata-ktx dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 17cb0aa60..887b6d2d5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -221,7 +221,7 @@ dependencies { implementation "androidx.work:work-runtime:$work_manager" playImplementation "androidx.work:work-gcm:$work_manager" - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.8.0" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.8.2" implementation "androidx.room:room-runtime:$room" implementation "androidx.room:room-ktx:$room"