Skip to content

Commit 84085cf

Browse files
authored
v3.0.1 release
2 parents 439a5d8 + 33a9138 commit 84085cf

9 files changed

Lines changed: 81 additions & 79 deletions

File tree

.github/workflows/publish-update.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ jobs:
112112

113113
send-to-channel:
114114
needs: [ prepare-release-notes, get-apk-version ]
115-
if: ${{ needs.get-last-release-version.outputs.is-update }}
115+
# if: ${{ needs.get-last-release-version.outputs.is-update }}
116116
runs-on: ubuntu-latest
117117
steps:
118118
- name: Get APK
@@ -131,7 +131,7 @@ jobs:
131131

132132
create-release:
133133
needs: [ prepare-release-notes, get-apk-version ]
134-
if: ${{ needs.get-last-release-version.outputs.is-update }}
134+
# if: ${{ needs.get-last-release-version.outputs.is-update }}
135135
runs-on: ubuntu-latest
136136
steps:
137137
- name: Get APK

RELEASE_NOTES.md

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1 @@
1-
- Редизайн авторизации\n
2-
- Полностью переработана отправка домашнего задания\n
3-
- Теперь у всех предметов в названии есть крутые эмодзи\n
4-
- Появилась возможность узнать оценки за предыдущие учебные периоды\n
5-
- Повышена производительность и стабильность главного экрана\n
6-
- Переработано взаимодействие с фильтрами оценок\n
7-
- Доработано получение файлов. Теперь они сохраняются в собственной папке в /Android/Data\n
8-
- Переработан главный экран настроек\n
9-
- Переработан UI дневника\n
10-
- Улучшен UI\UX оценок\n
11-
- Улучшен UX объявлений\n
12-
- Оказывается приложение не давало войти, если у пользователя в пароле есть кириллица. За багфикс
13-
спасибо @darkcat09\n
14-
- В некоторых местах появились красивые иллюстрации происходящего\n
15-
- Добавлена монохромная иконка для устройств на Android 12+\n
16-
- Прибрался в исходниках
1+
- Исправление багов

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ android {
3333
applicationId "com.mezhendosina.sgo.app"
3434
minSdk 24
3535
targetSdk 33
36-
versionCode 35
37-
versionName '3.0.0'
36+
versionCode 36
37+
versionName '3.0.1'
3838

3939
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
4040

app/src/main/java/com/mezhendosina/sgo/app/ui/announcementsFlow/announcementsItem/AnnouncementsFragmentViewModel.kt

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,14 @@
1717
package com.mezhendosina.sgo.app.ui.announcementsFlow.announcementsItem
1818

1919
import android.content.Context
20-
import android.view.View
2120
import androidx.lifecycle.LiveData
2221
import androidx.lifecycle.MutableLiveData
2322
import androidx.lifecycle.ViewModel
24-
import com.mezhendosina.sgo.app.databinding.ItemAttachmentBinding
23+
import com.mezhendosina.sgo.app.model.answer.FileUiEntity
2524
import com.mezhendosina.sgo.app.model.attachments.AttachmentsRepository
2625
import com.mezhendosina.sgo.app.utils.PermissionNotGranted
2726
import com.mezhendosina.sgo.app.utils.toDescription
2827
import com.mezhendosina.sgo.data.netschool.NetSchoolSingleton
29-
import com.mezhendosina.sgo.data.netschool.api.attachments.entities.Attachment
3028
import kotlinx.coroutines.Dispatchers
3129
import kotlinx.coroutines.withContext
3230

@@ -40,14 +38,13 @@ class AnnouncementsFragmentViewModel(
4038

4139
suspend fun downloadAttachment(
4240
context: Context,
43-
attachment: Attachment,
44-
binding: ItemAttachmentBinding
41+
attachment: FileUiEntity,
4542
) {
4643
try {
4744
attachmentsRepository.downloadAttachment(
4845
context,
49-
attachment.id,
50-
attachment.originalFileName
46+
attachment.id!!,
47+
attachment.fileName
5148
)
5249
} catch (e: Exception) {
5350
if (e is PermissionNotGranted) {
@@ -57,10 +54,6 @@ class AnnouncementsFragmentViewModel(
5754
_errorMessage.value = e.toDescription()
5855
}
5956
}
60-
} finally {
61-
withContext(Dispatchers.Main) {
62-
binding.progressBar.visibility = View.GONE
63-
}
6457
}
6558
}
6659
}

app/src/main/java/com/mezhendosina/sgo/app/ui/announcementsFlow/announcementsItem/AnnouncementsItemFragment.kt

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.mezhendosina.sgo.app.ui.announcementsFlow.announcementsItem
1818

19+
import android.Manifest
20+
import android.content.pm.PackageManager
1921
import android.os.Bundle
2022
import android.view.View
2123
import androidx.activity.result.contract.ActivityResultContracts
@@ -35,6 +37,9 @@ import com.mezhendosina.sgo.data.DateManipulation
3537
import com.mezhendosina.sgo.data.netschool.api.announcements.AnnouncementsResponseEntity
3638
import io.noties.markwon.Markwon
3739
import io.noties.markwon.html.HtmlPlugin
40+
import kotlinx.coroutines.CoroutineScope
41+
import kotlinx.coroutines.Dispatchers
42+
import kotlinx.coroutines.launch
3843
import org.jsoup.Jsoup
3944

4045

@@ -44,8 +49,10 @@ class AnnouncementsItemFragment : Fragment(R.layout.fragment_announcement_item)
4449

4550
internal val viewModel: AnnouncementsFragmentViewModel by viewModels()
4651

47-
private val registerPermissionLauncher =
48-
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}
52+
53+
private val storagePermission =
54+
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
55+
}
4956

5057
override fun onCreate(savedInstanceState: Bundle?) {
5158
super.onCreate(savedInstanceState)
@@ -83,7 +90,18 @@ class AnnouncementsItemFragment : Fragment(R.layout.fragment_announcement_item)
8390
val attachmentAdapter = AttachmentAdapter(
8491
object : AttachmentClickListener {
8592
override fun invoke(attachment: FileUiEntity, loadingList: MutableList<Int>) {
86-
TODO("Not yet implemented")
93+
val permission =
94+
requireContext().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
95+
if (permission == PackageManager.PERMISSION_GRANTED) {
96+
CoroutineScope(Dispatchers.Main).launch {
97+
viewModel.downloadAttachment(
98+
requireContext(),
99+
attachment,
100+
)
101+
}
102+
} else {
103+
storagePermission.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
104+
}
87105
}
88106
}
89107
)

app/src/main/java/com/mezhendosina/sgo/app/ui/journalFlow/lessonItem/LessonFragment.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ class LessonFragment : Fragment(R.layout.fragment_item_lesson) {
4949

5050
private val storagePermission =
5151
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
52-
println(it)
5352
}
5453

5554
private val onAttachmentClickListener = object : AttachmentClickListener {

app/src/main/java/com/mezhendosina/sgo/app/utils/ActivityUtils.kt

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.mezhendosina.sgo.app.utils
1818

19-
import android.graphics.Color
19+
import android.os.Build
2020
import android.view.View
2121
import android.view.WindowManager
2222
import androidx.appcompat.app.AppCompatActivity
@@ -25,24 +25,29 @@ import androidx.core.view.WindowInsetsCompat
2525

2626

2727
fun AppCompatActivity.setupStatusBar(fragmentContainer: View) {
28-
window.statusBarColor = Color.TRANSPARENT
2928
val w = window
30-
w.setFlags(
31-
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
32-
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
33-
)
34-
ViewCompat.setOnApplyWindowInsetsListener(fragmentContainer) { view, windowInsets ->
35-
val insetsNavigation =
36-
windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars())
37-
val topBarInset = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
38-
val insets =
39-
windowInsets.getInsets(WindowInsetsCompat.Type.mandatorySystemGestures())
40-
view.setPadding(
41-
insets.left,
42-
topBarInset.top,
43-
insets.right,
44-
insetsNavigation.bottom
29+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
30+
31+
w.setFlags(
32+
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
33+
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
4534
)
46-
windowInsets
35+
ViewCompat.setOnApplyWindowInsetsListener(fragmentContainer) { view, windowInsets ->
36+
val insetsNavigation =
37+
windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars())
38+
val topBarInset = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
39+
val insets =
40+
windowInsets.getInsets(WindowInsetsCompat.Type.mandatorySystemGestures())
41+
view.setPadding(
42+
insets.left,
43+
topBarInset.top,
44+
insets.right,
45+
insetsNavigation.bottom
46+
)
47+
windowInsets
48+
}
49+
} else {
50+
fragmentContainer.fitsSystemWindows = true
4751
}
52+
4853
}

app/src/main/java/com/mezhendosina/sgo/data/DateManipulation.kt

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -62,36 +62,38 @@ fun getWeeksList(): List<WeekStartEndEntity> {
6262
minusWeekCalendar.timeInMillis = currentYearTime
6363
val plusWeekCalendar = Calendar.getInstance()
6464
plusWeekCalendar.timeInMillis = currentYearTime
65+
val currentCalendar = Calendar.getInstance()
66+
currentCalendar.timeInMillis = currentYearTime
6567

6668
minusWeekCalendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
6769
plusWeekCalendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
68-
while (minusWeekCalendar[Calendar.MONTH] != Calendar.AUGUST || plusWeekCalendar[Calendar.MONTH] != Calendar.SEPTEMBER) {
69-
if (minusWeekCalendar[Calendar.MONTH] != Calendar.AUGUST) {
70-
minusWeekCalendar.add(Calendar.WEEK_OF_YEAR, -1)
71-
val weekStart = minusWeekCalendar.dateToSting()
72-
val weekEnd = minusWeekCalendar.getWeekEnd()
73-
outList.add(
74-
WeekStartEndEntity(
75-
weekStart,
76-
weekEnd,
77-
tabDate(weekStart),
78-
tabDate(weekEnd)
79-
)
70+
71+
while (minusWeekCalendar[Calendar.MONTH] != Calendar.AUGUST) {
72+
minusWeekCalendar.add(Calendar.WEEK_OF_YEAR, -1)
73+
val weekStart = minusWeekCalendar.dateToSting()
74+
val weekEnd = minusWeekCalendar.getWeekEnd()
75+
outList.add(
76+
WeekStartEndEntity(
77+
weekStart,
78+
weekEnd,
79+
tabDate(weekStart),
80+
tabDate(weekEnd)
8081
)
81-
}
82-
if (plusWeekCalendar[Calendar.MONTH] != Calendar.SEPTEMBER) {
83-
val weekStart = plusWeekCalendar.dateToSting()
84-
val weekEnd = plusWeekCalendar.getWeekEnd()
85-
outList.add(
86-
WeekStartEndEntity(
87-
weekStart,
88-
weekEnd,
89-
tabDate(weekStart),
90-
tabDate(weekEnd)
91-
)
82+
)
83+
}
84+
85+
while (plusWeekCalendar[Calendar.YEAR] != currentCalendar[Calendar.YEAR] + 1 || plusWeekCalendar[Calendar.MONTH] != Calendar.SEPTEMBER) {
86+
val weekStart = plusWeekCalendar.dateToSting()
87+
val weekEnd = plusWeekCalendar.getWeekEnd()
88+
outList.add(
89+
WeekStartEndEntity(
90+
weekStart,
91+
weekEnd,
92+
tabDate(weekStart),
93+
tabDate(weekEnd)
9294
)
93-
plusWeekCalendar.add(Calendar.WEEK_OF_YEAR, 1)
94-
}
95+
)
96+
plusWeekCalendar.add(Calendar.WEEK_OF_YEAR, 1)
9597
}
9698

9799
return outList.sortedBy { it.weekStart }

app/src/main/res/values/themes.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
<style name="Theme.SGOApp" parent="Theme.Material3.DayNight.NoActionBar">
2323
<item name="android:windowTranslucentStatus">true</item>
24-
<item name="android:windowTranslucentNavigation">true</item>
24+
2525
<item name="android:windowLightStatusBar">true</item>
2626

2727
<item name="colorPrimary">@color/md_theme_light_primary</item>

0 commit comments

Comments
 (0)