loads all lists when add to / remove from list

This commit is contained in:
Mariotaku Lee 2016-11-26 15:14:32 +08:00
parent 9568db7cd8
commit ad4c3268ea
4 changed files with 41 additions and 48 deletions

View File

@ -38,13 +38,13 @@ android {
dependencies {
apt 'com.bluelinelabs:logansquare-compiler:1.3.7'
apt 'com.hannesdorfmann.parcelableplease:processor:1.0.2'
apt 'com.github.mariotaku.ObjectCursor:processor:0.9.9'
apt 'com.github.mariotaku.ObjectCursor:processor:0.9.10'
compile 'com.android.support:support-annotations:25.0.0'
compile 'com.bluelinelabs:logansquare:1.3.7'
compile 'com.github.mariotaku.RestFu:library:0.9.34'
compile 'com.github.mariotaku.RestFu:oauth:0.9.34'
compile 'com.hannesdorfmann.parcelableplease:annotation:1.0.2'
compile 'com.github.mariotaku.ObjectCursor:core:0.9.9'
compile 'com.github.mariotaku.ObjectCursor:core:0.9.10'
compile 'com.github.mariotaku.CommonsLibrary:objectcursor:0.9.10'
compile 'com.github.mariotaku.CommonsLibrary:logansquare:0.9.10'
compile fileTree(dir: 'libs', include: ['*.jar'])

View File

@ -39,5 +39,5 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.support:wearable:1.4.0'
compile 'com.google.android.gms:play-services-wearable:9.6.1'
compile 'com.google.android.gms:play-services-wearable:9.8.0'
}

View File

@ -10,7 +10,7 @@ apply plugin: 'io.fabric'
// END Non-FOSS component
buildscript {
ext.kotlin_version = '1.0.4'
ext.kotlin_version = '1.0.5-2'
repositories {
jcenter()
@ -21,7 +21,7 @@ buildscript {
dependencies {
// START Non-FOSS component
classpath 'io.fabric.tools:gradle:1.21.7'
classpath 'io.fabric.tools:gradle:1.22.0'
// END Non-FOSS component
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
@ -91,7 +91,7 @@ dependencies {
kapt 'com.bluelinelabs:logansquare-compiler:1.3.7'
kapt 'com.hannesdorfmann.parcelableplease:processor:1.0.2'
kapt 'com.google.dagger:dagger-compiler:2.6.1'
kapt 'com.github.mariotaku.ObjectCursor:processor:0.9.9'
kapt 'com.github.mariotaku.ObjectCursor:processor:0.9.10'
compile('com.github.mariotaku:app-theme-engine:1efc6237e1@aar') {
transitive = true
@ -102,18 +102,18 @@ dependencies {
compile project(':twidere.component.nyan')
// START Non-FOSS component
googleCompile 'com.google.android.gms:play-services-maps:9.6.1'
googleCompile 'com.google.android.gms:play-services-auth:9.6.1'
googleCompile 'com.google.android.gms:play-services-maps:9.8.0'
googleCompile 'com.google.android.gms:play-services-auth:9.8.0'
googleCompile 'com.google.maps.android:android-maps-utils:0.4.4'
googleCompile('com.crashlytics.sdk.android:crashlytics:2.6.2@aar') { transitive = true }
googleCompile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') { transitive = true }
googleCompile ':YouTubeAndroidPlayerApi:1.2.2@jar'
// END Non-FOSS component
fdroidCompile 'org.osmdroid:osmdroid-android:5.4:release@aar'
fdroidCompile 'org.osmdroid:osmdroid-android:5.5:release@aar'
debugCompile 'com.facebook.stetho:stetho:1.4.0'
debugCompile 'com.facebook.stetho:stetho-okhttp3:1.4.0'
debugCompile 'com.facebook.stetho:stetho-js-rhino:1.4.0'
debugCompile 'com.facebook.stetho:stetho:1.4.1'
debugCompile 'com.facebook.stetho:stetho-okhttp3:1.4.1'
debugCompile 'com.facebook.stetho:stetho-js-rhino:1.4.1'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
provided 'javax.annotation:jsr250-api:1.0'
@ -133,7 +133,7 @@ dependencies {
compile 'com.android.support:preference-v14:25.0.0'
compile 'com.twitter:twitter-text:1.13.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.5.0'
compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0'
compile 'com.squareup:otto:1.3.8'
compile 'dnsjava:dnsjava:2.1.7'
compile 'com.commonsware.cwac:merge:1.1.1'
@ -147,7 +147,7 @@ dependencies {
compile 'com.sprylab.android.texturevideoview:texturevideoview:1.1.1'
compile 'com.squareup:pollexor:2.0.4'
compile 'com.squareup:tape:1.2.3'
compile 'org.apache.commons:commons-lang3:3.4'
compile 'org.apache.commons:commons-lang3:3.5'
compile 'commons-primitives:commons-primitives:1.0'
compile 'com.bluelinelabs:logansquare:1.3.7'
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
@ -155,14 +155,14 @@ dependencies {
compile 'com.github.mariotaku:PickNCrop:0.9.5'
compile 'com.github.mariotaku.RestFu:library:0.9.34'
compile 'com.github.mariotaku.RestFu:okhttp3:0.9.34'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okhttp3:okhttp:3.4.2'
compile 'com.lnikkila:extendedtouchview:0.1.0'
compile 'com.google.dagger:dagger:2.6.1'
compile 'org.attoparser:attoparser:2.0.0.RELEASE'
compile 'org.attoparser:attoparser:2.0.1.RELEASE'
compile 'com.github.mariotaku.MediaViewerLibrary:base:0.9.17'
compile 'com.github.mariotaku.MediaViewerLibrary:subsample-image-view:0.9.17'
compile 'com.github.mariotaku.SQLiteQB:library:0.9.7'
compile 'com.github.mariotaku.ObjectCursor:core:0.9.9'
compile 'com.github.mariotaku.SQLiteQB:library:0.9.8'
compile 'com.github.mariotaku.ObjectCursor:core:0.9.10'
compile 'com.github.mariotaku:MultiValueSwitch:0.9.7'
compile 'com.github.mariotaku:AbstractTask:0.9.4'
compile 'com.github.mariotaku.CommonsLibrary:parcel:0.9.10'

View File

@ -56,7 +56,6 @@ import android.support.v7.widget.Toolbar
import android.text.SpannableStringBuilder
import android.text.TextUtils
import android.text.util.Linkify
import android.util.Pair
import android.util.SparseBooleanArray
import android.view.*
import android.view.View.OnClickListener
@ -73,20 +72,20 @@ import kotlinx.android.synthetic.main.header_user.*
import kotlinx.android.synthetic.main.header_user.view.*
import kotlinx.android.synthetic.main.layout_content_fragment_common.*
import kotlinx.android.synthetic.main.layout_content_pages_common.*
import nl.komponents.kovenant.task
import nl.komponents.kovenant.then
import nl.komponents.kovenant.ui.alwaysUi
import nl.komponents.kovenant.ui.failUi
import nl.komponents.kovenant.ui.promiseOnUi
import nl.komponents.kovenant.ui.successUi
import org.apache.commons.lang3.ObjectUtils
import org.mariotaku.abstask.library.AbstractTask
import org.mariotaku.abstask.library.TaskStarter
import org.mariotaku.ktextension.Bundle
import org.mariotaku.ktextension.empty
import org.mariotaku.ktextension.set
import org.mariotaku.ktextension.toTypedArray
import org.mariotaku.microblog.library.MicroBlogException
import org.mariotaku.microblog.library.twitter.model.FriendshipUpdate
import org.mariotaku.microblog.library.twitter.model.Paging
import org.mariotaku.microblog.library.twitter.model.Relationship
import org.mariotaku.sqliteqb.library.Expression
import org.mariotaku.twidere.Constants.*
@ -114,8 +113,7 @@ import org.mariotaku.twidere.model.message.FriendshipUpdatedEvent
import org.mariotaku.twidere.model.message.ProfileUpdatedEvent
import org.mariotaku.twidere.model.message.TaskStateChangedEvent
import org.mariotaku.twidere.model.util.*
import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
import org.mariotaku.twidere.provider.TwidereDataStore.*
import org.mariotaku.twidere.util.*
import org.mariotaku.twidere.util.KeyboardShortcutsHandler.KeyboardShortcutCallback
import org.mariotaku.twidere.util.TwidereLinkify.OnLinkClickListener
@ -163,7 +161,7 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener
private var mHideBirthdayView: Boolean = false
private var userEvent: UserEvent? = null
private val mFriendshipLoaderCallbacks = object : LoaderCallbacks<SingleResponse<UserRelationship>> {
private val friendshipLoaderCallbacks = object : LoaderCallbacks<SingleResponse<UserRelationship>> {
override fun onCreateLoader(id: Int, args: Bundle): Loader<SingleResponse<UserRelationship>> {
invalidateOptionsMenu()
@ -194,7 +192,7 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener
}
}
private val mUserInfoLoaderCallbacks = object : LoaderCallbacks<SingleResponse<ParcelableUser>> {
private val userInfoLoaderCallbacks = object : LoaderCallbacks<SingleResponse<ParcelableUser>> {
override fun onCreateLoader(id: Int, args: Bundle): Loader<SingleResponse<ParcelableUser>> {
val omitIntentExtra = args.getBoolean(EXTRA_OMIT_INTENT_EXTRA, true)
@ -310,9 +308,11 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener
followContainer.follow.compoundDrawablePadding = Math.round(followContainer.follow.textSize * 0.25f)
followingYouIndicator.visibility = if (userRelationship.followed_by) View.VISIBLE else View.GONE
val task = CacheUserInfoTask(context.applicationContext)
task.setParams(Pair.create(user, userRelationship))
TaskStarter.execute(task)
task {
val resolver = contentResolver;
resolver.insert(CachedUsers.CONTENT_URI, ParcelableUserValuesCreator.create(user))
resolver.insert(CachedRelationships.CONTENT_URI, CachedRelationshipValuesCreator.create(userRelationship))
}
followContainer.follow.visibility = View.VISIBLE
}
@ -551,10 +551,10 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener
args.putString(EXTRA_SCREEN_NAME, screenName)
args.putBoolean(EXTRA_OMIT_INTENT_EXTRA, omitIntentExtra)
if (!mGetUserInfoLoaderInitialized) {
lm.initLoader(LOADER_ID_USER, args, mUserInfoLoaderCallbacks)
lm.initLoader(LOADER_ID_USER, args, userInfoLoaderCallbacks)
mGetUserInfoLoaderInitialized = true
} else {
lm.restartLoader(LOADER_ID_USER, args, mUserInfoLoaderCallbacks)
lm.restartLoader(LOADER_ID_USER, args, userInfoLoaderCallbacks)
}
if (userKey == null && screenName == null) {
cardContent!!.visibility = View.GONE
@ -906,8 +906,14 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener
}
}.then {
val microBlog = MicroBlogAPIFactory.getInstance(context, user.account_key, true)
val ownedLists = microBlog.getUserListOwnerships(null)
val paging = Paging()
val ownedLists = microBlog.getUserListOwnerships(paging)
var nextCursor = ownedLists.nextCursor
while (nextCursor != 0L) {
val list = microBlog.getUserListOwnerships(paging)
ownedLists.addAll(list)
nextCursor = list.nextCursor
}
val userListMemberships = microBlog.getUserListMemberships(user.key.id, null, true)
return@then Array<ParcelableUserList>(ownedLists.size) { idx ->
val list = ParcelableUserListUtils.from(ownedLists[idx], user.account_key)
@ -1250,10 +1256,10 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener
args.putParcelable(EXTRA_ACCOUNT_KEY, user.account_key)
args.putParcelable(EXTRA_USER, user)
if (!mGetFriendShipLoaderInitialized) {
lm.initLoader(LOADER_ID_FRIENDSHIP, args, mFriendshipLoaderCallbacks)
lm.initLoader(LOADER_ID_FRIENDSHIP, args, friendshipLoaderCallbacks)
mGetFriendShipLoaderInitialized = true
} else {
lm.restartLoader(LOADER_ID_FRIENDSHIP, args, mFriendshipLoaderCallbacks)
lm.restartLoader(LOADER_ID_FRIENDSHIP, args, friendshipLoaderCallbacks)
}
}
@ -1587,19 +1593,6 @@ class UserFragment : BaseSupportFragment(), OnClickListener, OnLinkClickListener
}
private class CacheUserInfoTask(
private val context: Context
) : AbstractTask<Pair<ParcelableUser, CachedRelationship>, Any, Any?>() {
public override fun doLongOperation(args: Pair<ParcelableUser, CachedRelationship>): Any? {
val resolver = context.contentResolver
val user = args.first
resolver.insert(CachedUsers.CONTENT_URI, ParcelableUserValuesCreator.create(user))
// resolver.insert(CachedRelationships.CONTENT_URI, CachedRelationshipValuesCreator.create(args.second))
return null
}
}
class AddRemoveUserListDialogFragment : BaseDialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val lists = arguments.getParcelableArray(EXTRA_USER_LISTS).toTypedArray(ParcelableUserList.CREATOR)