Bookmarks done(?)
This commit is contained in:
parent
a81808664a
commit
86e5ed818f
@ -11,6 +11,7 @@ import android.net.Uri
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.Menu
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.*
|
||||
@ -317,11 +318,22 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun bookmarkPost(api: PixelfedAPI) {
|
||||
private suspend fun bookmarkPost(api: PixelfedAPI, db: AppDatabase, menu: Menu, bookmarked: Boolean) : Boolean? {
|
||||
//Call the api function
|
||||
status?.id?.let { id ->
|
||||
try {
|
||||
if(bookmarked) {
|
||||
api.bookmarkStatus(id)
|
||||
} else {
|
||||
api.undoBookmarkStatus(id)
|
||||
}
|
||||
val user = db.userDao().getActiveUser()!!
|
||||
db.homePostDao().bookmarkStatus(id, user.user_id, user.instance_uri, bookmarked)
|
||||
db.publicPostDao().bookmarkStatus(id, user.user_id, user.instance_uri, bookmarked)
|
||||
|
||||
menu.setGroupVisible(R.id.post_more_menu_group_bookmark, !bookmarked)
|
||||
menu.setGroupVisible(R.id.post_more_menu_group_unbookmark, bookmarked)
|
||||
return bookmarked
|
||||
} catch (exception: HttpException) {
|
||||
Toast.makeText(
|
||||
binding.root.context,
|
||||
@ -336,30 +348,11 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||
).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun undoBookmarkPost(api: PixelfedAPI) {
|
||||
//Call the api function
|
||||
status?.id?.let { id ->
|
||||
try {
|
||||
api.undoBookmarkStatus(id)
|
||||
} catch (exception: HttpException) {
|
||||
Toast.makeText(
|
||||
binding.root.context,
|
||||
binding.root.context.getString(R.string.undobookmark_post_failed_error, exception.code()),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
} catch (exception: IOException) {
|
||||
Toast.makeText(
|
||||
binding.root.context,
|
||||
binding.root.context.getString(R.string.undobookmark_post_failed_io_except),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
private fun activateMoreButton(apiHolder: PixelfedAPIHolder, db: AppDatabase, lifecycleScope: LifecycleCoroutineScope){
|
||||
var bookmarked: Boolean? = null
|
||||
binding.statusMore.setOnClickListener {
|
||||
PopupMenu(it.context, it).apply {
|
||||
setOnMenuItemClickListener { item ->
|
||||
@ -385,13 +378,13 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||
}
|
||||
R.id.post_more_menu_bookmark -> {
|
||||
lifecycleScope.launch {
|
||||
bookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser())
|
||||
bookmarked = bookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser(), db, menu, true)
|
||||
}
|
||||
true
|
||||
}
|
||||
R.id.post_more_menu_unbookmark -> {
|
||||
lifecycleScope.launch {
|
||||
undoBookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser())
|
||||
bookmarked = bookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser(), db, menu, false)
|
||||
}
|
||||
true
|
||||
}
|
||||
@ -483,9 +476,9 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||
}
|
||||
}
|
||||
inflate(R.menu.post_more_menu)
|
||||
if(status?.bookmarked == true) {
|
||||
if(bookmarked == true || status?.bookmarked == true) {
|
||||
menu.setGroupVisible(R.id.post_more_menu_group_bookmark, false)
|
||||
} else {
|
||||
} else if(bookmarked == false || status?.bookmarked != true) {
|
||||
menu.setGroupVisible(R.id.post_more_menu_group_unbookmark, false)
|
||||
}
|
||||
if(status?.media_attachments.isNullOrEmpty()) {
|
||||
|
@ -70,7 +70,7 @@ class ProfileFeedFragment : UncachedFeedFragment<Status>() {
|
||||
bookmarks
|
||||
)
|
||||
)
|
||||
)["Profile", FeedViewModel::class.java] as FeedViewModel<Status>
|
||||
)[if(bookmarks) "Bookmarks" else "Profile", FeedViewModel::class.java] as FeedViewModel<Status>
|
||||
|
||||
launch()
|
||||
initSearch()
|
||||
|
@ -196,7 +196,7 @@ interface PixelfedAPI {
|
||||
@Path("id") statusId: String
|
||||
) : Status
|
||||
|
||||
@POST("/api/v1/statuses/{id}/undobookmark")
|
||||
@POST("/api/v1/statuses/{id}/unbookmark")
|
||||
suspend fun undoBookmarkStatus(
|
||||
@Path("id") statusId: String
|
||||
) : Status
|
||||
|
@ -21,8 +21,8 @@ interface UserDao {
|
||||
@Update
|
||||
fun updateUser(user: UserDatabaseEntity)
|
||||
|
||||
@Query("UPDATE users SET accessToken = :accessToken, refreshToken = :refreshToken WHERE user_id = :id and instance_uri = :instance_uri")
|
||||
fun updateAccessToken(accessToken: String, refreshToken: String, id: String, instance_uri: String)
|
||||
@Query("UPDATE users SET accessToken = :accessToken, refreshToken = :refreshToken WHERE user_id = :id and instance_uri = :instanceUri")
|
||||
fun updateAccessToken(accessToken: String, refreshToken: String, id: String, instanceUri: String)
|
||||
|
||||
@Query("SELECT * FROM users")
|
||||
fun getAll(): List<UserDatabaseEntity>
|
||||
@ -33,12 +33,12 @@ interface UserDao {
|
||||
@Query("UPDATE users SET isActive=0")
|
||||
fun deActivateActiveUsers()
|
||||
|
||||
@Query("UPDATE users SET isActive=1 WHERE user_id=:id AND instance_uri=:instance_uri")
|
||||
fun activateUser(id: String, instance_uri: String)
|
||||
@Query("UPDATE users SET isActive=1 WHERE user_id=:id AND instance_uri=:instanceUri")
|
||||
fun activateUser(id: String, instanceUri: String)
|
||||
|
||||
@Query("DELETE FROM users WHERE isActive=1")
|
||||
fun deleteActiveUsers()
|
||||
|
||||
@Query("SELECT * FROM users WHERE user_id=:id AND instance_uri=:instance_uri")
|
||||
fun getUserWithId(id: String, instance_uri: String): UserDatabaseEntity
|
||||
@Query("SELECT * FROM users WHERE user_id=:id AND instance_uri=:instanceUri")
|
||||
fun getUserWithId(id: String, instanceUri: String): UserDatabaseEntity
|
||||
}
|
@ -18,4 +18,7 @@ interface HomePostDao: FeedContentDao<HomeStatusDatabaseEntity> {
|
||||
@Query("DELETE FROM homePosts WHERE user_id=:userId AND instance_uri=:instanceUri AND id=:id")
|
||||
override suspend fun delete(id: String, userId: String, instanceUri: String)
|
||||
|
||||
@Query("UPDATE homePosts SET bookmarked=:bookmarked WHERE user_id=:id AND instance_uri=:instanceUri AND id=:statusId")
|
||||
fun bookmarkStatus(id: String, instanceUri: String, statusId: String, bookmarked: Boolean)
|
||||
|
||||
}
|
@ -18,4 +18,7 @@ interface PublicPostDao: FeedContentDao<PublicFeedStatusDatabaseEntity> {
|
||||
@Query("DELETE FROM publicPosts WHERE user_id=:userId AND instance_uri=:instanceUri AND id=:id")
|
||||
override suspend fun delete(id: String, userId: String, instanceUri: String)
|
||||
|
||||
@Query("UPDATE homePosts SET bookmarked=:bookmarked WHERE user_id=:id AND instance_uri=:instanceUri AND id=:statusId")
|
||||
fun bookmarkStatus(id: String, instanceUri: String, statusId: String, bookmarked: Boolean)
|
||||
|
||||
}
|
@ -254,10 +254,8 @@ For more info about Pixelfed, you can check here: https://pixelfed.org"</string>
|
||||
<string name="mascot_description">Image showing a red panda, Pixelfed\'s mascot, using a phone</string>
|
||||
<string name="delete_post_failed_error">Could not delete the post, error %1$d</string>
|
||||
<string name="delete_post_failed_io_except">Could not delete the post, check your connection?</string>
|
||||
<string name="bookmark_post_failed_error">Could not bookmark the post, error %1$d</string>
|
||||
<string name="bookmark_post_failed_io_except">Could not bookmark the post, check your connection?</string>
|
||||
<string name="undobookmark_post_failed_error">Could not unbookmark the post, error %1$d</string>
|
||||
<string name="undobookmark_post_failed_io_except">Could not unbookmark the post, check your connection?</string>
|
||||
<string name="bookmark_post_failed_error">Could not (un)bookmark the post, error %1$d</string>
|
||||
<string name="bookmark_post_failed_io_except">Could not (un)bookmark the post, check your connection?</string>
|
||||
|
||||
<!-- Error message when a selected file can not be found -->
|
||||
<string name="file_not_found">File %1$s was not found</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user