diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt
index 2dff48ec..b0e79707 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/Errors.kt
@@ -168,7 +168,6 @@ const val ERROR_IDZIENNIK_API_NO_REGISTER = 452
const val ERROR_LOGIN_EDUDZIENNIK_WEB_INVALID_LOGIN = 501
const val ERROR_LOGIN_EDUDZIENNIK_WEB_OTHER = 510
const val ERROR_LOGIN_EDUDZIENNIK_WEB_NO_SESSION_ID = 511
-const val ERROR_EDUDZIENNIK_WEB_TIMETABLE_NOT_PUBLIC = 520
const val ERROR_EDUDZIENNIK_WEB_LIMITED_ACCESS = 521
const val ERROR_EDUDZIENNIK_WEB_SESSION_EXPIRED = 522
const val ERROR_EDUDZIENNIK_WEB_TEAM_MISSING = 530
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt
index 056a06f4..059bfd70 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt
@@ -88,11 +88,6 @@ class DataEdudziennik(app: App, profile: Profile?, loginStore: LoginStore) : Dat
get() { mSchoolName = mSchoolName ?: profile?.getStudentData("schoolName", null); return mSchoolName }
set(value) { profile?.putStudentData("schoolName", value) ?: return; mSchoolName = value }
- private var mTimetableNotPublic: Boolean? = null
- var timetableNotPublic: Boolean
- get() { mTimetableNotPublic = mTimetableNotPublic ?: profile?.getStudentData("timetableNotPublic", false); return mTimetableNotPublic ?: false }
- set(value) { profile?.putStudentData("timetableNotPublic", value) ?: return; mTimetableNotPublic = value }
-
val studentEndpoint: String
get() = "Students/$studentId/"
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/Edudziennik.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/Edudziennik.kt
index 697beacc..8980d1a1 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/Edudziennik.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/Edudziennik.kt
@@ -124,8 +124,7 @@ class Edudziennik(val app: App, val profile: Profile?, val loginStore: LoginStor
ERROR_LOGIN_EDUDZIENNIK_WEB_NO_SESSION_ID -> {
login()
}
- ERROR_EDUDZIENNIK_WEB_TIMETABLE_NOT_PUBLIC -> {
- data.timetableNotPublic = true
+ ERROR_EDUDZIENNIK_WEB_LIMITED_ACCESS -> {
data()
}
else -> callback.onError(apiError)
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt
index 79879fc9..72862060 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt
@@ -5,13 +5,11 @@
package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web
import org.jsoup.Jsoup
-import pl.szczodrzynski.edziennik.data.api.ERROR_EDUDZIENNIK_WEB_TIMETABLE_NOT_PUBLIC
import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_SUBJECT_ID
import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_TEACHER_ID
import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik
import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_TIMETABLE
import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb
-import pl.szczodrzynski.edziennik.data.api.models.ApiError
import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonRange
@@ -56,17 +54,7 @@ class EdudziennikWebTimetable(override val data: DataEdudziennik,
val table = doc.select("#Schedule tbody").first()
- if (table.text().trim() == "Brak planu lekcji.") {
- val today = Date.getToday()
- val schoolYearStart = if (today.month >= 9) today.year else today.year - 1
-
- if (weekStart >= Date(schoolYearStart, 9, 1)) {
- data.error(ApiError(TAG, ERROR_EDUDZIENNIK_WEB_TIMETABLE_NOT_PUBLIC)
- .withApiResponse(text))
- onSuccess()
- return@webGet
- }
- } else {
+ if (!table.text().contains("Brak planu lekcji.")) {
table.children().forEach { row ->
val rowElements = row.children()
@@ -152,8 +140,6 @@ class EdudziennikWebTimetable(override val data: DataEdudziennik,
d(TAG, "Clearing lessons between ${weekStart.stringY_m_d} and ${weekEnd.stringY_m_d} - timetable downloaded for $getDate")
- if (data.timetableNotPublic) data.timetableNotPublic = false
-
data.toRemove.add(DataRemoveModel.Timetable.between(weekStart, weekEnd))
data.setSyncNext(ENDPOINT_EDUDZIENNIK_WEB_TIMETABLE, SYNC_ALWAYS)
onSuccess()
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/v2/TimetableFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/v2/TimetableFragment.kt
index 76fdabba..37d9e77c 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/v2/TimetableFragment.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/v2/TimetableFragment.kt
@@ -15,6 +15,7 @@ import androidx.lifecycle.Observer
import androidx.viewpager.widget.ViewPager
import com.google.android.material.datepicker.MaterialDatePicker
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
+import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial.Icon2
import com.mikepenz.iconics.typeface.library.szkolny.font.SzkolnyFont
import kotlinx.coroutines.*
import pl.szczodrzynski.edziennik.App
@@ -24,6 +25,7 @@ import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
import pl.szczodrzynski.edziennik.data.db.modules.timetable.Lesson
import pl.szczodrzynski.edziennik.databinding.FragmentTimetableV2Binding
import pl.szczodrzynski.edziennik.observeOnce
+import pl.szczodrzynski.edziennik.ui.dialogs.event.EventManualDialog
import pl.szczodrzynski.edziennik.utils.Themes
import pl.szczodrzynski.edziennik.utils.models.Date
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem
@@ -103,8 +105,8 @@ class TimetableFragment : Fragment(), CoroutineScope {
val monthDayCount = listOf(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
- val yearStart = app.profile.dateSemester1Start?.clone() ?: return@async
- val yearEnd = app.profile.dateYearEnd ?: return@async
+ val yearStart = app.profile.dateSemester1Start.clone() ?: return@async
+ val yearEnd = app.profile.dateYearEnd
while (yearStart.value <= yearEnd.value) {
items += yearStart.clone()
var maxDays = monthDayCount[yearStart.month-1]
@@ -180,6 +182,22 @@ class TimetableFragment : Fragment(), CoroutineScope {
show(this@TimetableFragment.activity.supportFragmentManager, "MaterialDatePicker")
}
}),
+ BottomSheetPrimaryItem(true)
+ .withTitle(R.string.menu_add_event)
+ .withDescription(R.string.menu_add_event_desc)
+ .withIcon(SzkolnyFont.Icon.szf_calendar_plus_outline)
+ .withOnClickListener(View.OnClickListener {
+ activity.bottomSheet.close()
+ EventManualDialog(activity, App.profileId, defaultDate = pageSelection)
+ }),
+ BottomSheetPrimaryItem(true)
+ .withTitle(R.string.menu_generate_block_timetable)
+ .withDescription(R.string.menu_generate_block_timetable_desc)
+ .withIcon(Icon2.cmd_table_large)
+ .withOnClickListener(View.OnClickListener {
+ activity.bottomSheet.close()
+ //showBlockTimetableDialog()
+ }),
BottomSheetSeparatorItem(true),
BottomSheetPrimaryItem(true)
.withTitle(R.string.menu_mark_as_read)
@@ -199,6 +217,22 @@ class TimetableFragment : Fragment(), CoroutineScope {
})
}}
+ /*private fun showBlockTimetableDialog() {
+ val weekCurrentStart = Week.getWeekStart()
+ val weekCurrentEnd = Week.getWeekEnd()
+ val weekNextStart = weekCurrentEnd.clone().stepForward(0, 0, 1)
+ val weekNextEnd = weekNextStart.clone().stepForward(0, 0, 6)
+
+ MaterialAlertDialogBuilder(activity)
+ .setTitle(R.string.timetable_generate_range)
+ .setMultiChoiceItems(arrayOf(
+ getString(R.string.timetable_generate_current_week_format, weekCurrentStart.formattedStringShort, weekCurrentEnd.formattedStringShort),
+ getString(R.string.timetable_generate_next_week_format, weekNextStart.formattedStringShort, weekNextEnd.formattedStringShort)
+ ), BooleanArray(2)) { dialog, which, isChecked ->
+
+ }
+ }*/
+
private fun markLessonsAsSeen() = pageSelection?.let { date ->
app.db.timetableDao().getForDate(App.profileId, date).observeOnce(this@TimetableFragment, Observer { lessons ->
lessons.forEach { lesson ->
diff --git a/app/src/main/res/values/errors.xml b/app/src/main/res/values/errors.xml
index 6494d8a7..1943fce8 100644
--- a/app/src/main/res/values/errors.xml
+++ b/app/src/main/res/values/errors.xml
@@ -142,7 +142,6 @@
ERROR_LOGIN_EDUDZIENNIK_WEB_INVALID_LOGIN
ERROR_LOGIN_EDUDZIENNIK_WEB_OTHER
ERROR_LOGIN_EDUDZIENNIK_WEB_NO_SESSION_ID
- ERROR_EDUDZIENNIK_WEB_TIMETABLE_NOT_PUBLIC
ERROR_EDUDZIENNIK_WEB_LIMITED_ACCESS
ERROR_EDUDZIENNIK_WEB_SESSION_EXPIRED
ERROR_EDUDZIENNIK_WEB_TEAM_MISSING
@@ -307,7 +306,6 @@
Błędny email lub hasło
Inny błąd logowania
Brak ID sesji
- Plan lekcji niedostępny
Ograniczony dostęp do dziennika
Sesja wygasła
Nie można pobrać informacji o klasie i szkole