forked from github/wulkanowy-mirror
Add last announcements to school announcements (#2452)
This commit is contained in:
parent
a7238e3f23
commit
ccba31f2e8
2533
app/schemas/io.github.wulkanowy.data.db.AppDatabase/61.json
Normal file
2533
app/schemas/io.github.wulkanowy.data.db.AppDatabase/61.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -173,6 +173,7 @@ import javax.inject.Singleton
|
|||||||
AutoMigration(from = 57, to = 58, spec = Migration58::class),
|
AutoMigration(from = 57, to = 58, spec = Migration58::class),
|
||||||
AutoMigration(from = 58, to = 59),
|
AutoMigration(from = 58, to = 59),
|
||||||
AutoMigration(from = 59, to = 60),
|
AutoMigration(from = 59, to = 60),
|
||||||
|
AutoMigration(from = 60, to = 61),
|
||||||
],
|
],
|
||||||
version = AppDatabase.VERSION_SCHEMA,
|
version = AppDatabase.VERSION_SCHEMA,
|
||||||
exportSchema = true
|
exportSchema = true
|
||||||
@ -181,7 +182,7 @@ import javax.inject.Singleton
|
|||||||
abstract class AppDatabase : RoomDatabase() {
|
abstract class AppDatabase : RoomDatabase() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val VERSION_SCHEMA = 60
|
const val VERSION_SCHEMA = 61
|
||||||
|
|
||||||
fun getMigrations(sharedPrefProvider: SharedPrefProvider, appInfo: AppInfo) = arrayOf(
|
fun getMigrations(sharedPrefProvider: SharedPrefProvider, appInfo: AppInfo) = arrayOf(
|
||||||
Migration2(),
|
Migration2(),
|
||||||
|
@ -16,7 +16,9 @@ data class SchoolAnnouncement(
|
|||||||
|
|
||||||
val subject: String,
|
val subject: String,
|
||||||
|
|
||||||
val content: String
|
val content: String,
|
||||||
|
|
||||||
|
val author: String? = null,
|
||||||
) : Serializable {
|
) : Serializable {
|
||||||
|
|
||||||
@PrimaryKey(autoGenerate = true)
|
@PrimaryKey(autoGenerate = true)
|
||||||
|
@ -3,12 +3,26 @@ package io.github.wulkanowy.data.mappers
|
|||||||
import io.github.wulkanowy.data.db.entities.SchoolAnnouncement
|
import io.github.wulkanowy.data.db.entities.SchoolAnnouncement
|
||||||
import io.github.wulkanowy.data.db.entities.Student
|
import io.github.wulkanowy.data.db.entities.Student
|
||||||
import io.github.wulkanowy.sdk.pojo.DirectorInformation as SdkDirectorInformation
|
import io.github.wulkanowy.sdk.pojo.DirectorInformation as SdkDirectorInformation
|
||||||
|
import io.github.wulkanowy.sdk.pojo.LastAnnouncement as SdkLastAnnouncement
|
||||||
|
|
||||||
|
@JvmName("mapDirectorInformationToEntities")
|
||||||
fun List<SdkDirectorInformation>.mapToEntities(student: Student) = map {
|
fun List<SdkDirectorInformation>.mapToEntities(student: Student) = map {
|
||||||
SchoolAnnouncement(
|
SchoolAnnouncement(
|
||||||
userLoginId = student.userLoginId,
|
userLoginId = student.userLoginId,
|
||||||
date = it.date,
|
date = it.date,
|
||||||
subject = it.subject,
|
subject = it.subject,
|
||||||
content = it.content,
|
content = it.content,
|
||||||
|
author = null,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("mapLastAnnouncementsToEntities")
|
||||||
|
fun List<SdkLastAnnouncement>.mapToEntities(student: Student) = map {
|
||||||
|
SchoolAnnouncement(
|
||||||
|
userLoginId = student.userLoginId,
|
||||||
|
date = it.date,
|
||||||
|
subject = it.subject,
|
||||||
|
content = it.content,
|
||||||
|
author = it.author,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -41,9 +41,10 @@ class SchoolAnnouncementRepository @Inject constructor(
|
|||||||
schoolAnnouncementDb.loadAll(student.userLoginId)
|
schoolAnnouncementDb.loadAll(student.userLoginId)
|
||||||
},
|
},
|
||||||
fetch = {
|
fetch = {
|
||||||
sdk.init(student)
|
val sdk = sdk.init(student)
|
||||||
.getDirectorInformation()
|
val lastAnnouncements = sdk.getLastAnnouncements().mapToEntities(student)
|
||||||
.mapToEntities(student)
|
val directorInformation = sdk.getDirectorInformation().mapToEntities(student)
|
||||||
|
lastAnnouncements + directorInformation
|
||||||
},
|
},
|
||||||
saveFetchResult = { old, new ->
|
saveFetchResult = { old, new ->
|
||||||
val schoolAnnouncementsToSave = (new uniqueSubtract old).onEach {
|
val schoolAnnouncementsToSave = (new uniqueSubtract old).onEach {
|
||||||
|
@ -2,6 +2,7 @@ package io.github.wulkanowy.ui.modules.schoolannouncement
|
|||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import io.github.wulkanowy.data.db.entities.SchoolAnnouncement
|
import io.github.wulkanowy.data.db.entities.SchoolAnnouncement
|
||||||
import io.github.wulkanowy.databinding.ItemSchoolAnnouncementBinding
|
import io.github.wulkanowy.databinding.ItemSchoolAnnouncementBinding
|
||||||
@ -29,6 +30,10 @@ class SchoolAnnouncementAdapter @Inject constructor() :
|
|||||||
schoolAnnouncementItemDate.text = item.date.toFormattedString()
|
schoolAnnouncementItemDate.text = item.date.toFormattedString()
|
||||||
schoolAnnouncementItemType.text = item.subject
|
schoolAnnouncementItemType.text = item.subject
|
||||||
schoolAnnouncementItemContent.text = item.content.parseUonetHtml()
|
schoolAnnouncementItemContent.text = item.content.parseUonetHtml()
|
||||||
|
with(schoolAnnouncementItemAuthor) {
|
||||||
|
text = item.author
|
||||||
|
isVisible = !item.author.isNullOrBlank()
|
||||||
|
}
|
||||||
|
|
||||||
root.setOnClickListener { onItemClickListener(item) }
|
root.setOnClickListener { onItemClickListener(item) }
|
||||||
}
|
}
|
||||||
|
@ -11,27 +11,41 @@
|
|||||||
android:id="@+id/schoolAnnouncementItemDate"
|
android:id="@+id/schoolAnnouncementItemDate"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="15dp"
|
android:layout_marginHorizontal="15dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginEnd="10dp"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
android:textColor="?android:textColorSecondary"
|
||||||
android:textSize="15sp"
|
android:textSize="15sp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toStartOf="@id/schoolAnnouncementItemAuthor"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@tools:sample/date/ddmmyy" />
|
tools:text="@tools:sample/date/ddmmyy" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/schoolAnnouncementItemAuthor"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="15dp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginEnd="10dp"
|
||||||
|
android:gravity="end"
|
||||||
|
android:textColor="?android:textColorSecondary"
|
||||||
|
android:textSize="15sp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/schoolAnnouncementItemDate"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:text="@tools:sample/full_names" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/schoolAnnouncementItemType"
|
android:id="@+id/schoolAnnouncementItemType"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginHorizontal="15dp"
|
||||||
android:layout_marginBottom="5dp"
|
android:layout_marginVertical="5dp"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
app:layout_constraintEnd_toEndOf="@id/schoolAnnouncementItemDate"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="@id/schoolAnnouncementItemDate"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/schoolAnnouncementItemDate"
|
app:layout_constraintTop_toBottomOf="@id/schoolAnnouncementItemDate"
|
||||||
app:layout_goneMarginEnd="0dp"
|
app:layout_goneMarginEnd="0dp"
|
||||||
tools:text="@tools:sample/lorem" />
|
tools:text="@tools:sample/lorem" />
|
||||||
@ -40,6 +54,7 @@
|
|||||||
android:id="@+id/schoolAnnouncementItemContent"
|
android:id="@+id/schoolAnnouncementItemContent"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="15dp"
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="5dp"
|
||||||
android:layout_marginBottom="15dp"
|
android:layout_marginBottom="15dp"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
@ -47,8 +62,8 @@
|
|||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="@+id/schoolAnnouncementItemType"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="@id/schoolAnnouncementItemDate"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/schoolAnnouncementItemType"
|
app:layout_constraintTop_toBottomOf="@id/schoolAnnouncementItemType"
|
||||||
tools:text="@tools:sample/lorem/random" />
|
tools:text="@tools:sample/lorem/random" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user