fix formatting
This commit is contained in:
parent
3d6f6206e6
commit
dc139d4dae
|
@ -79,7 +79,6 @@ class TimelineFragment : DaggerFragment(R.layout.fragment_timeline), TimeLineAct
|
||||||
adapter.addDataRefreshListener {
|
adapter.addDataRefreshListener {
|
||||||
binding.timelineSwipeRefresh.isRefreshing = false
|
binding.timelineSwipeRefresh.isRefreshing = false
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onFavorite(status: StatusEntity) {
|
override fun onFavorite(status: StatusEntity) {
|
||||||
|
|
|
@ -80,7 +80,7 @@ fun BindingHolder<ItemStatusBinding>.bind(status: StatusEntity, displayWidth: In
|
||||||
(binding.postImages.adapter as TimelineImageAdapter).images = status.attachments
|
(binding.postImages.adapter as TimelineImageAdapter).images = status.attachments
|
||||||
|
|
||||||
val maxImageRatio = status.attachments.map {
|
val maxImageRatio = status.attachments.map {
|
||||||
if(it.meta?.small?.width == null || it.meta.small.height == null) {
|
if (it.meta?.small?.width == null || it.meta.small.height == null) {
|
||||||
1f
|
1f
|
||||||
} else {
|
} else {
|
||||||
it.meta.small.height.toFloat() / it.meta.small.width.toFloat()
|
it.meta.small.height.toFloat() / it.meta.small.width.toFloat()
|
||||||
|
@ -135,4 +135,4 @@ fun BindingHolder<ItemStatusBinding>.bind(status: StatusEntity, displayWidth: In
|
||||||
binding.root.setOnClickListener {
|
binding.root.setOnClickListener {
|
||||||
listener.onDetailsOpened(status)
|
listener.onDetailsOpened(status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,31 +18,29 @@ class TimelineUseCases @Inject constructor(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
suspend fun onFavorite(status: StatusEntity) {
|
suspend fun onFavorite(status: StatusEntity) {
|
||||||
val alreadyFavourited = status.favourited
|
val alreadyFavourited = status.favourited
|
||||||
if (alreadyFavourited) {
|
if (alreadyFavourited) {
|
||||||
api.unfavouriteStatus(status.actionableId)
|
api.unfavouriteStatus(status.actionableId)
|
||||||
} else {
|
} else {
|
||||||
api.favouriteStatus(status.actionableId)
|
api.favouriteStatus(status.actionableId)
|
||||||
}.updateStatusInDb()
|
}.updateStatusInDb()
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun onBoost(status: StatusEntity) {
|
suspend fun onBoost(status: StatusEntity) {
|
||||||
val alreadyBoosted = status.reblogged
|
val alreadyBoosted = status.reblogged
|
||||||
if (alreadyBoosted) {
|
if (alreadyBoosted) {
|
||||||
api.unreblogStatus(status.actionableId)
|
api.unreblogStatus(status.actionableId)
|
||||||
} else {
|
} else {
|
||||||
api.reblogStatus(status.actionableId)
|
api.reblogStatus(status.actionableId)
|
||||||
}.updateStatusInDb()
|
}.updateStatusInDb()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun onMediaVisibilityChanged(status: StatusEntity) {
|
suspend fun onMediaVisibilityChanged(status: StatusEntity) {
|
||||||
db.statusDao().changeMediaVisibility(
|
db.statusDao().changeMediaVisibility(
|
||||||
!status.mediaVisible,
|
!status.mediaVisible,
|
||||||
status.id,
|
status.id,
|
||||||
accountManager.activeAccount()?.id!!
|
accountManager.activeAccount()?.id!!
|
||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun NetworkResponse<Status>.updateStatusInDb() {
|
private suspend fun NetworkResponse<Status>.updateStatusInDb() {
|
||||||
|
@ -57,5 +55,4 @@ class TimelineUseCases @Inject constructor(
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -71,5 +71,4 @@ class TimelineViewModel @Inject constructor(
|
||||||
useCases.onMediaVisibilityChanged(status)
|
useCases.onMediaVisibilityChanged(status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ import at.connyduck.pixelcat.db.entitity.StatusEntity
|
||||||
import at.connyduck.pixelcat.util.viewBinding
|
import at.connyduck.pixelcat.util.viewBinding
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class DetailActivity: BaseActivity(), TimeLineActionListener {
|
class DetailActivity : BaseActivity(), TimeLineActionListener {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var viewModelFactory: ViewModelFactory
|
lateinit var viewModelFactory: ViewModelFactory
|
||||||
|
@ -69,37 +69,41 @@ class DetailActivity: BaseActivity(), TimeLineActionListener {
|
||||||
|
|
||||||
binding.detailRecyclerView.adapter = ConcatAdapter(statusAdapter, repliesAdapter)
|
binding.detailRecyclerView.adapter = ConcatAdapter(statusAdapter, repliesAdapter)
|
||||||
|
|
||||||
viewModel.currentStatus.observe(this, Observer {
|
viewModel.currentStatus.observe(
|
||||||
when(it) {
|
this,
|
||||||
is Success -> {
|
Observer {
|
||||||
binding.detailSwipeRefresh.show()
|
when (it) {
|
||||||
binding.detailStatus.hide()
|
is Success -> {
|
||||||
binding.detailProgress.hide()
|
binding.detailSwipeRefresh.show()
|
||||||
binding.detailSwipeRefresh.isRefreshing = false
|
binding.detailStatus.hide()
|
||||||
binding.detailRecyclerView.show()
|
binding.detailProgress.hide()
|
||||||
statusAdapter.submitList(listOf(it.data))
|
binding.detailSwipeRefresh.isRefreshing = false
|
||||||
}
|
binding.detailRecyclerView.show()
|
||||||
is Loading -> {
|
statusAdapter.submitList(listOf(it.data))
|
||||||
binding.detailSwipeRefresh.hide()
|
}
|
||||||
binding.detailStatus.hide()
|
is Loading -> {
|
||||||
binding.detailProgress.show()
|
binding.detailSwipeRefresh.hide()
|
||||||
}
|
binding.detailStatus.hide()
|
||||||
is Error -> {
|
binding.detailProgress.show()
|
||||||
binding.detailSwipeRefresh.hide()
|
}
|
||||||
binding.detailStatus.show()
|
is Error -> {
|
||||||
binding.detailProgress.hide()
|
binding.detailSwipeRefresh.hide()
|
||||||
binding.detailStatus.setOnRetryListener { }
|
binding.detailStatus.show()
|
||||||
binding.detailStatus.showGeneralError()
|
binding.detailProgress.hide()
|
||||||
|
binding.detailStatus.showGeneralError()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
)
|
||||||
|
|
||||||
viewModel.replies.observe(this, Observer {
|
viewModel.replies.observe(
|
||||||
if(it is Success) {
|
this,
|
||||||
repliesAdapter.submitList(it.data)
|
Observer {
|
||||||
|
if (it is Success) {
|
||||||
|
repliesAdapter.submitList(it.data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onFavorite(status: StatusEntity) {
|
override fun onFavorite(status: StatusEntity) {
|
||||||
|
@ -131,5 +135,4 @@ class DetailActivity: BaseActivity(), TimeLineActionListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import java.text.SimpleDateFormat
|
||||||
|
|
||||||
class DetailReplyAdapter(
|
class DetailReplyAdapter(
|
||||||
private val listener: TimeLineActionListener
|
private val listener: TimeLineActionListener
|
||||||
): ListAdapter<StatusEntity, BindingHolder<ItemReplyBinding>>(TimelineDiffUtil) {
|
) : ListAdapter<StatusEntity, BindingHolder<ItemReplyBinding>>(TimelineDiffUtil) {
|
||||||
|
|
||||||
private val dateTimeFormatter = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT)
|
private val dateTimeFormatter = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT)
|
||||||
|
|
||||||
|
@ -51,8 +51,6 @@ class DetailReplyAdapter(
|
||||||
holder.binding.postReplyButton.setOnClickListener {
|
holder.binding.postReplyButton.setOnClickListener {
|
||||||
listener.onReply(status)
|
listener.onReply(status)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,11 +12,10 @@ import at.connyduck.pixelcat.databinding.ItemStatusBinding
|
||||||
import at.connyduck.pixelcat.db.entitity.StatusEntity
|
import at.connyduck.pixelcat.db.entitity.StatusEntity
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
|
|
||||||
|
|
||||||
class DetailStatusAdapter(
|
class DetailStatusAdapter(
|
||||||
private val displayWidth: Int,
|
private val displayWidth: Int,
|
||||||
private val listener: TimeLineActionListener
|
private val listener: TimeLineActionListener
|
||||||
): ListAdapter<StatusEntity, BindingHolder<ItemStatusBinding>>(TimelineDiffUtil) {
|
) : ListAdapter<StatusEntity, BindingHolder<ItemStatusBinding>>(TimelineDiffUtil) {
|
||||||
|
|
||||||
private val dateTimeFormatter = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT)
|
private val dateTimeFormatter = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT)
|
||||||
|
|
||||||
|
@ -36,5 +35,4 @@ class DetailStatusAdapter(
|
||||||
holder.bind(status, displayWidth, listener, dateTimeFormatter)
|
holder.bind(status, displayWidth, listener, dateTimeFormatter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ class DetailViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun reload(showLoading: Boolean) {
|
fun reload(showLoading: Boolean) {
|
||||||
if(showLoading) {
|
if (showLoading) {
|
||||||
currentStatus.value = Loading()
|
currentStatus.value = Loading()
|
||||||
replies.value = Loading()
|
replies.value = Loading()
|
||||||
}
|
}
|
||||||
|
@ -78,23 +78,31 @@ class DetailViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun loadStatus() {
|
private suspend fun loadStatus() {
|
||||||
api.status(statusId).fold({
|
api.status(statusId).fold(
|
||||||
val statusEntity = it.toEntity(accountManager.activeAccount()?.id!!)
|
{
|
||||||
db.statusDao().insertOrReplace(statusEntity)
|
val statusEntity = it.toEntity(accountManager.activeAccount()?.id!!)
|
||||||
currentStatus.value = Success(statusEntity)
|
db.statusDao().insertOrReplace(statusEntity)
|
||||||
}, {
|
currentStatus.value = Success(statusEntity)
|
||||||
currentStatus.value = Error(cause = it)
|
},
|
||||||
})
|
{
|
||||||
|
currentStatus.value = Error(cause = it)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun loadReplies() {
|
private suspend fun loadReplies() {
|
||||||
api.statusContext(statusId).fold({
|
api.statusContext(statusId).fold(
|
||||||
replies.value = Success(it.descendants.map{
|
{
|
||||||
descendant -> descendant.toEntity(accountManager.activeAccount()?.id!!)
|
replies.value = Success(
|
||||||
})
|
it.descendants.map { descendant ->
|
||||||
}, {
|
descendant.toEntity(accountManager.activeAccount()?.id!!)
|
||||||
replies.value = Error(cause = it)
|
}
|
||||||
})
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
replies.value = Error(cause = it)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onFavorite(status: StatusEntity) {
|
fun onFavorite(status: StatusEntity) {
|
||||||
|
@ -114,5 +122,4 @@ class DetailViewModel @Inject constructor(
|
||||||
useCases.onMediaVisibilityChanged(status)
|
useCases.onMediaVisibilityChanged(status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,4 +57,4 @@ class StatusView @JvmOverloads constructor(
|
||||||
binding.statusMessage.setText(R.string.status_network_error)
|
binding.statusMessage.setText(R.string.status_network_error)
|
||||||
binding.statusMessage.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_wifi_off, 0, 0)
|
binding.statusMessage.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_wifi_off, 0, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ package at.connyduck.pixelcat.model
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
|
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class StatusContext (
|
data class StatusContext(
|
||||||
val ancestors: List<Status>,
|
val ancestors: List<Status>,
|
||||||
val descendants: List<Status>
|
val descendants: List<Status>
|
||||||
)
|
)
|
||||||
|
|
|
@ -19,7 +19,14 @@
|
||||||
|
|
||||||
package at.connyduck.pixelcat.network
|
package at.connyduck.pixelcat.network
|
||||||
|
|
||||||
import at.connyduck.pixelcat.model.*
|
import at.connyduck.pixelcat.model.AccessToken
|
||||||
|
import at.connyduck.pixelcat.model.Account
|
||||||
|
import at.connyduck.pixelcat.model.AppCredentials
|
||||||
|
import at.connyduck.pixelcat.model.Attachment
|
||||||
|
import at.connyduck.pixelcat.model.NewStatus
|
||||||
|
import at.connyduck.pixelcat.model.Relationship
|
||||||
|
import at.connyduck.pixelcat.model.Status
|
||||||
|
import at.connyduck.pixelcat.model.StatusContext
|
||||||
import at.connyduck.pixelcat.network.calladapter.NetworkResponse
|
import at.connyduck.pixelcat.network.calladapter.NetworkResponse
|
||||||
import okhttp3.MultipartBody
|
import okhttp3.MultipartBody
|
||||||
import retrofit2.http.Body
|
import retrofit2.http.Body
|
||||||
|
|
Loading…
Reference in New Issue