diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt index 78a1d24ea..d0a7be8f7 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt @@ -63,6 +63,7 @@ import android.view.* import android.view.View.OnClickListener import android.view.View.OnTouchListener import android.view.animation.AnimationUtils +import android.widget.Toast import com.bumptech.glide.Glide import com.squareup.otto.Subscribe import edu.tsinghua.hotmobi.HotMobiLogger @@ -828,6 +829,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener, MenuUtils.setItemAvailability(menu, R.id.mute_user, !isMyself && isTwitter) MenuUtils.setItemAvailability(menu, R.id.muted_users, isMyself && isTwitter) MenuUtils.setItemAvailability(menu, R.id.report_spam, !isMyself && isTwitter) + MenuUtils.setItemAvailability(menu, R.id.enable_notifications, !isMyself && isTwitter) MenuUtils.setItemAvailability(menu, R.id.enable_retweets, !isMyself && isTwitter) val userRelationship = relationship @@ -847,14 +849,9 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener, ActionIconDrawable.setMenuHighlight(blockItem, TwidereMenuInfo(userRelationship.blocking)) blockItem.setTitle(if (userRelationship.blocking) R.string.action_unblock else R.string.action_block) } - val muteItem = menu.findItem(R.id.mute_user) - if (muteItem != null) { - muteItem.isChecked = userRelationship.muting - } - val wantRetweetsItem = menu.findItem(R.id.enable_retweets) - if (wantRetweetsItem != null) { - wantRetweetsItem.isChecked = userRelationship.retweet_enabled - } + menu.findItem(R.id.mute_user)?.isChecked = userRelationship.muting + menu.findItem(R.id.enable_retweets)?.isChecked = userRelationship.retweet_enabled + menu.findItem(R.id.enable_notifications)?.isChecked = userRelationship.notifications_enabled } } else { MenuUtils.setItemAvailability(menu, R.id.send_direct_message, false) @@ -1028,6 +1025,18 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener, item.isChecked = newState return true } + R.id.enable_notifications -> { + val newState = !item.isChecked + if (newState) { + Toast.makeText(context, R.string.message_toast_notification_enabled_hint, + Toast.LENGTH_SHORT).show() + } + val update = FriendshipUpdate() + update.deviceNotifications(newState) + twitter.updateFriendship(user.account_key, user.key, update) + item.isChecked = newState + return true + } R.id.muted_users -> { IntentUtils.openMutesUsers(activity, user.account_key) return true diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableRelationshipUtils.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableRelationshipUtils.kt index 8b3c1732f..7abd411d3 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableRelationshipUtils.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableRelationshipUtils.kt @@ -34,7 +34,7 @@ import org.mariotaku.twidere.util.content.ContentResolverUtils object ParcelableRelationshipUtils { fun create(accountKey: UserKey, userKey: UserKey, relationship: Relationship?, - filtering: Boolean): ParcelableRelationship { + filtering: Boolean = false): ParcelableRelationship { val obj = ParcelableRelationship() obj.account_key = accountKey obj.user_key = userKey diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/util/AsyncTwitterWrapper.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/util/AsyncTwitterWrapper.kt index 4835a43f5..7d3ac1f83 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/util/AsyncTwitterWrapper.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/util/AsyncTwitterWrapper.kt @@ -39,6 +39,7 @@ import org.mariotaku.twidere.constant.SharedPreferenceConstants import org.mariotaku.twidere.constant.nameFirstKey import org.mariotaku.twidere.model.* import org.mariotaku.twidere.model.event.* +import org.mariotaku.twidere.model.util.ParcelableRelationshipUtils import org.mariotaku.twidere.model.util.ParcelableUserListUtils import org.mariotaku.twidere.provider.TwidereDataStore.* import org.mariotaku.twidere.task.* @@ -326,11 +327,12 @@ class AsyncTwitterWrapper( } fun updateFriendship(accountKey: UserKey, userKey: UserKey, update: FriendshipUpdate) { - TaskStarter.execute(object : ExceptionHandlingAbstractTask(context) { - override fun onExecute(params: Any): Relationship { + TaskStarter.execute(object : ExceptionHandlingAbstractTask(context) { + override fun onExecute(params: Any?): Relationship { val microBlog = MicroBlogAPIFactory.getInstance(context, accountKey) ?: throw MicroBlogException("No account") val relationship = microBlog.updateFriendship(userKey.id, update) + val cr = context.contentResolver if (!relationship.isSourceWantRetweetsFromTarget) { // TODO remove cached retweets val where = Expression.and( @@ -338,8 +340,11 @@ class AsyncTwitterWrapper( Expression.equalsArgs(Statuses.RETWEETED_BY_USER_KEY) ) val selectionArgs = arrayOf(accountKey.toString(), userKey.toString()) - context.contentResolver.delete(Statuses.CONTENT_URI, where.sql, selectionArgs) + cr.delete(Statuses.CONTENT_URI, where.sql, selectionArgs) } + + ParcelableRelationshipUtils.insert(cr, listOf(ParcelableRelationshipUtils + .create(accountKey, userKey, relationship))) return relationship } diff --git a/twidere/src/main/res/menu/menu_user_profile.xml b/twidere/src/main/res/menu/menu_user_profile.xml index 2568dc1da..2f57498f8 100644 --- a/twidere/src/main/res/menu/menu_user_profile.xml +++ b/twidere/src/main/res/menu/menu_user_profile.xml @@ -42,6 +42,12 @@ android:icon="@drawable/ic_action_time" android:title="@string/scheduled_statuses" android:visible="false"/> + Empty content + Enable notifications Enable retweets Enable streaming @@ -632,6 +633,7 @@ Account permission is required No account selected No user selected + Only available when streaming is on, and not 100% reliable. Press again to close Profile banner image updated Retweet cancelled @@ -713,8 +715,8 @@ Ringtone New tweet by %s New Tweet by %1$s and %2$d others - New tweet by %1$s %1$s retweeted + New tweet by %1$s Home Interactions Messages