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.text.method.LinkMovementMethod
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
import android.view.Menu
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.*
|
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
|
//Call the api function
|
||||||
status?.id?.let { id ->
|
status?.id?.let { id ->
|
||||||
try {
|
try {
|
||||||
|
if(bookmarked) {
|
||||||
api.bookmarkStatus(id)
|
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) {
|
} catch (exception: HttpException) {
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
binding.root.context,
|
binding.root.context,
|
||||||
@ -336,30 +348,11 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
|||||||
).show()
|
).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
return null
|
||||||
|
|
||||||
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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun activateMoreButton(apiHolder: PixelfedAPIHolder, db: AppDatabase, lifecycleScope: LifecycleCoroutineScope){
|
private fun activateMoreButton(apiHolder: PixelfedAPIHolder, db: AppDatabase, lifecycleScope: LifecycleCoroutineScope){
|
||||||
|
var bookmarked: Boolean? = null
|
||||||
binding.statusMore.setOnClickListener {
|
binding.statusMore.setOnClickListener {
|
||||||
PopupMenu(it.context, it).apply {
|
PopupMenu(it.context, it).apply {
|
||||||
setOnMenuItemClickListener { item ->
|
setOnMenuItemClickListener { item ->
|
||||||
@ -385,13 +378,13 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
|||||||
}
|
}
|
||||||
R.id.post_more_menu_bookmark -> {
|
R.id.post_more_menu_bookmark -> {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
bookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser())
|
bookmarked = bookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser(), db, menu, true)
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
R.id.post_more_menu_unbookmark -> {
|
R.id.post_more_menu_unbookmark -> {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
undoBookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser())
|
bookmarked = bookmarkPost(apiHolder.api ?: apiHolder.setToCurrentUser(), db, menu, false)
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
@ -483,9 +476,9 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
inflate(R.menu.post_more_menu)
|
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)
|
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)
|
menu.setGroupVisible(R.id.post_more_menu_group_unbookmark, false)
|
||||||
}
|
}
|
||||||
if(status?.media_attachments.isNullOrEmpty()) {
|
if(status?.media_attachments.isNullOrEmpty()) {
|
||||||
|
@ -70,7 +70,7 @@ class ProfileFeedFragment : UncachedFeedFragment<Status>() {
|
|||||||
bookmarks
|
bookmarks
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)["Profile", FeedViewModel::class.java] as FeedViewModel<Status>
|
)[if(bookmarks) "Bookmarks" else "Profile", FeedViewModel::class.java] as FeedViewModel<Status>
|
||||||
|
|
||||||
launch()
|
launch()
|
||||||
initSearch()
|
initSearch()
|
||||||
|
@ -196,7 +196,7 @@ interface PixelfedAPI {
|
|||||||
@Path("id") statusId: String
|
@Path("id") statusId: String
|
||||||
) : Status
|
) : Status
|
||||||
|
|
||||||
@POST("/api/v1/statuses/{id}/undobookmark")
|
@POST("/api/v1/statuses/{id}/unbookmark")
|
||||||
suspend fun undoBookmarkStatus(
|
suspend fun undoBookmarkStatus(
|
||||||
@Path("id") statusId: String
|
@Path("id") statusId: String
|
||||||
) : Status
|
) : Status
|
||||||
|
@ -21,8 +21,8 @@ interface UserDao {
|
|||||||
@Update
|
@Update
|
||||||
fun updateUser(user: UserDatabaseEntity)
|
fun updateUser(user: UserDatabaseEntity)
|
||||||
|
|
||||||
@Query("UPDATE users SET accessToken = :accessToken, refreshToken = :refreshToken WHERE user_id = :id and instance_uri = :instance_uri")
|
@Query("UPDATE users SET accessToken = :accessToken, refreshToken = :refreshToken WHERE user_id = :id and instance_uri = :instanceUri")
|
||||||
fun updateAccessToken(accessToken: String, refreshToken: String, id: String, instance_uri: String)
|
fun updateAccessToken(accessToken: String, refreshToken: String, id: String, instanceUri: String)
|
||||||
|
|
||||||
@Query("SELECT * FROM users")
|
@Query("SELECT * FROM users")
|
||||||
fun getAll(): List<UserDatabaseEntity>
|
fun getAll(): List<UserDatabaseEntity>
|
||||||
@ -33,12 +33,12 @@ interface UserDao {
|
|||||||
@Query("UPDATE users SET isActive=0")
|
@Query("UPDATE users SET isActive=0")
|
||||||
fun deActivateActiveUsers()
|
fun deActivateActiveUsers()
|
||||||
|
|
||||||
@Query("UPDATE users SET isActive=1 WHERE user_id=:id AND instance_uri=:instance_uri")
|
@Query("UPDATE users SET isActive=1 WHERE user_id=:id AND instance_uri=:instanceUri")
|
||||||
fun activateUser(id: String, instance_uri: String)
|
fun activateUser(id: String, instanceUri: String)
|
||||||
|
|
||||||
@Query("DELETE FROM users WHERE isActive=1")
|
@Query("DELETE FROM users WHERE isActive=1")
|
||||||
fun deleteActiveUsers()
|
fun deleteActiveUsers()
|
||||||
|
|
||||||
@Query("SELECT * FROM users WHERE user_id=:id AND instance_uri=:instance_uri")
|
@Query("SELECT * FROM users WHERE user_id=:id AND instance_uri=:instanceUri")
|
||||||
fun getUserWithId(id: String, instance_uri: String): UserDatabaseEntity
|
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")
|
@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)
|
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")
|
@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)
|
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="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_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="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_error">Could not (un)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="bookmark_post_failed_io_except">Could not (un)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>
|
|
||||||
|
|
||||||
<!-- Error message when a selected file can not be found -->
|
<!-- Error message when a selected file can not be found -->
|
||||||
<string name="file_not_found">File %1$s was not found</string>
|
<string name="file_not_found">File %1$s was not found</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user