updated lib versions

This commit is contained in:
Mariotaku Lee 2018-03-12 01:54:43 +08:00
parent e9e2e53af8
commit 96f27fe819
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
26 changed files with 94 additions and 110 deletions

View File

@ -20,7 +20,7 @@ allprojects {
projectVersionName = '4.0.0-SNAPSHOT' projectVersionName = '4.0.0-SNAPSHOT'
globalCompileSdkVersion = 27 globalCompileSdkVersion = 27
globalBuildToolsVersion = '27.0.2' globalBuildToolsVersion = '27.0.3'
} }
repositories { repositories {
@ -42,7 +42,8 @@ subprojects {
] ]
libVersions = [ libVersions = [
Kotlin : "${kotlinVersion}", Kotlin : "${kotlinVersion}",
SupportLib : '27.0.2', MultiDex : '1.0.3',
SupportLib : '27.1.0',
SupportTest : '1.0.0', SupportTest : '1.0.0',
MariotakuCommons : '0.9.22', MariotakuCommons : '0.9.22',
RestFu : '0.9.61', RestFu : '0.9.61',
@ -56,7 +57,7 @@ subprojects {
Toro : '2.1.0', Toro : '2.1.0',
LoganSquare : '1.3.7', LoganSquare : '1.3.7',
Mime4J : '0.7.2', Mime4J : '0.7.2',
OkHttp : '3.9.0', OkHttp : '3.10.0',
Stetho : '1.5.0', Stetho : '1.5.0',
OSMDroid : '5.6.5', OSMDroid : '5.6.5',
LeakCanary : '1.5.1', LeakCanary : '1.5.1',
@ -68,7 +69,7 @@ subprojects {
KPreferences : '0.9.7', KPreferences : '0.9.7',
Kovenant : '3.3.0', Kovenant : '3.3.0',
ParcelablePlease : '1.0.2', ParcelablePlease : '1.0.2',
Chameleon : '0.9.25', Chameleon : '0.9.26',
UniqR : '0.9.6', UniqR : '0.9.6',
SQLiteQB : '0.9.18', SQLiteQB : '0.9.18',
Glide : '3.7.0', Glide : '3.7.0',
@ -81,8 +82,8 @@ subprojects {
Dagger : '2.11', Dagger : '2.11',
StethoBeanShellREPL : '0.3', StethoBeanShellREPL : '0.3',
ArchLifecycleExtensions: '1.1.0', ArchLifecycleExtensions: '1.1.0',
ArchPaging : '1.0.0-alpha5', ArchPaging : '1.0.0-alpha6',
ConstraintLayout : '1.1.0-beta4', ConstraintLayout : '1.1.0-beta5',
MessageBubbleView : '2.1', MessageBubbleView : '2.1',
] ]

View File

@ -38,7 +38,7 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
} }
} }
@ -50,7 +50,7 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 14 minSdkVersion 14
targetSdkVersion 26 targetSdkVersion 27
versionCode projectVersionCode versionCode projectVersionCode
versionName projectVersionName versionName projectVersionName
} }

View File

@ -20,7 +20,7 @@ package org.mariotaku.twidere.model;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.support.annotation.IntDef; import android.support.annotation.LongDef;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
@ -593,7 +593,7 @@ public class ParcelableStatus implements Parcelable, Comparable<ParcelableStatus
* <p> * <p>
* DO NOT CHANGE ONCE DEFINED! * DO NOT CHANGE ONCE DEFINED!
*/ */
@IntDef(value = { @LongDef(value = {
FilterFlags.QUOTE_NOT_AVAILABLE, FilterFlags.QUOTE_NOT_AVAILABLE,
FilterFlags.BLOCKING_USER, FilterFlags.BLOCKING_USER,
FilterFlags.BLOCKED_BY_USER, FilterFlags.BLOCKED_BY_USER,

View File

@ -201,7 +201,7 @@ dependencies {
implementation "android.arch.lifecycle:extensions:${libVersions['ArchLifecycleExtensions']}" implementation "android.arch.lifecycle:extensions:${libVersions['ArchLifecycleExtensions']}"
implementation "android.arch.paging:runtime:${libVersions['ArchPaging']}" implementation "android.arch.paging:runtime:${libVersions['ArchPaging']}"
implementation 'com.android.support:multidex:1.0.2' implementation "com.android.support:multidex:${libVersions['MultiDex']}"
implementation "com.android.support:support-annotations:${libVersions['SupportLib']}" implementation "com.android.support:support-annotations:${libVersions['SupportLib']}"
implementation "com.android.support:support-compat:${libVersions['SupportLib']}" implementation "com.android.support:support-compat:${libVersions['SupportLib']}"
implementation "com.android.support:support-core-utils:${libVersions['SupportLib']}" implementation "com.android.support:support-core-utils:${libVersions['SupportLib']}"

View File

@ -1 +1 @@
9246a03faeacbdf02e60fef3b988ef1e0d7f4bc0 e17dccbf0a84adaa5cc963c83f0202923f99f3e6

View File

@ -19,8 +19,8 @@
package android.arch.paging package android.arch.paging
fun <T> PagedListAdapterHelper<T>.setPagedListListener(listener: ((list: PagedList<T>?) -> Unit)?) { fun <T> AsyncPagedListDiffer<T>.setPagedListListener(listener: ((list: PagedList<T>?) -> Unit)?) {
mListener = if (listener != null) PagedListAdapterHelper.PagedListListener { pagedList -> mListener = if (listener != null) AsyncPagedListDiffer.PagedListListener { pagedList ->
listener(pagedList) listener(pagedList)
} else null } else null
} }

View File

@ -1,16 +1,10 @@
package android.support.v4.app package android.support.v4.app
/**
* Created by mariotaku on 2016/11/26.
*/
fun LoaderManager.hasRunningLoadersSafe(): Boolean { fun LoaderManager.hasRunningLoadersSafe(): Boolean {
if (this !is LoaderManagerImpl) return false if (this !is LoaderManagerImpl) return false
var loadersRunning = false return try {
val count = mLoaders.size() hasRunningLoaders()
for (i in 0 until count) { } catch (e: Exception) {
val li = mLoaders.valueAt(i) ?: continue false
loadersRunning = loadersRunning or (li.mStarted && !li.mDeliveredData)
} }
return loadersRunning
} }

View File

@ -37,7 +37,9 @@ import org.mariotaku.twidere.TwidereConstants.REQUEST_SELECT_USER
import org.mariotaku.twidere.adapter.SimpleParcelableUserListsAdapter import org.mariotaku.twidere.adapter.SimpleParcelableUserListsAdapter
import org.mariotaku.twidere.annotation.LoadMorePosition import org.mariotaku.twidere.annotation.LoadMorePosition
import org.mariotaku.twidere.constant.IntentConstants.* import org.mariotaku.twidere.constant.IntentConstants.*
import org.mariotaku.twidere.extension.accountKey
import org.mariotaku.twidere.extension.adapter.all import org.mariotaku.twidere.extension.adapter.all
import org.mariotaku.twidere.extension.userKey
import org.mariotaku.twidere.loader.iface.IPaginationLoader import org.mariotaku.twidere.loader.iface.IPaginationLoader
import org.mariotaku.twidere.loader.userlists.UserListOwnershipsLoader import org.mariotaku.twidere.loader.userlists.UserListOwnershipsLoader
import org.mariotaku.twidere.model.ParcelableUser import org.mariotaku.twidere.model.ParcelableUser
@ -144,20 +146,20 @@ class UserListSelectorActivity : BaseActivity(),
} }
} }
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<ParcelableUserList>> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableUserList>> {
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY) val accountKey = args!!.accountKey!!
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY) val userKey = args.userKey!!
return UserListOwnershipsLoader(this, accountKey, userKey, null, adapter.all).apply { return UserListOwnershipsLoader(this, accountKey, userKey, null, adapter.all).apply {
pagination = args.getParcelable(EXTRA_PAGINATION) pagination = args.getParcelable(EXTRA_PAGINATION)
} }
} }
override fun onLoaderReset(loader: Loader<List<ParcelableUserList>>?) { override fun onLoaderReset(loader: Loader<List<ParcelableUserList>>) {
adapter.setData(null) adapter.setData(null)
} }
override fun onLoadFinished(loader: Loader<List<ParcelableUserList>>?, data: List<ParcelableUserList>?) { override fun onLoadFinished(loader: Loader<List<ParcelableUserList>>, data: List<ParcelableUserList>?) {
adapter.loadMoreIndicatorPosition = LoadMorePosition.NONE adapter.loadMoreIndicatorPosition = LoadMorePosition.NONE
adapter.loadMoreSupportedPosition = if (adapter.all != data) { adapter.loadMoreSupportedPosition = if (adapter.all != data) {
LoadMorePosition.END LoadMorePosition.END

View File

@ -19,12 +19,12 @@
package org.mariotaku.twidere.adapter package org.mariotaku.twidere.adapter
import android.arch.paging.AsyncPagedListDiffer
import android.arch.paging.PagedList import android.arch.paging.PagedList
import android.arch.paging.PagedListAdapterHelper
import android.content.Context import android.content.Context
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.support.v4.graphics.ColorUtils import android.support.v4.graphics.ColorUtils
import android.support.v7.recyclerview.extensions.ListAdapterConfig import android.support.v7.recyclerview.extensions.AsyncDifferConfig
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -99,7 +99,7 @@ class MessagesConversationAdapter(
var messages: PagedList<ParcelableMessage>? var messages: PagedList<ParcelableMessage>?
get() = pagedMessagesHelper.currentList get() = pagedMessagesHelper.currentList
set(value) { set(value) {
pagedMessagesHelper.setList(value) pagedMessagesHelper.submitList(value)
if (value == null) { if (value == null) {
itemCounts[0] = 0 itemCounts[0] = 0
} }
@ -116,8 +116,8 @@ class MessagesConversationAdapter(
val bubbleColorOutgoing: ColorStateList? = ThemeUtils.getColorStateListFromAttribute(context, R.attr.messageBubbleColor) val bubbleColorOutgoing: ColorStateList? = ThemeUtils.getColorStateListFromAttribute(context, R.attr.messageBubbleColor)
val bubbleColorIncoming: ColorStateList? = context.getIncomingMessageColor() val bubbleColorIncoming: ColorStateList? = context.getIncomingMessageColor()
private var pagedMessagesHelper = PagedListAdapterHelper<ParcelableMessage>(ItemCountsAdapterListUpdateCallback(this, 0), private var pagedMessagesHelper = AsyncPagedListDiffer<ParcelableMessage>(ItemCountsAdapterListUpdateCallback(this, 0),
ListAdapterConfig.Builder<ParcelableMessage>().setDiffCallback(DiffCallbacks.message).build()) AsyncDifferConfig.Builder<ParcelableMessage>(DiffCallbacks.message).build())
private val calendars = Pair(Calendar.getInstance(), Calendar.getInstance()) private val calendars = Pair(Calendar.getInstance(), Calendar.getInstance())

View File

@ -1,9 +1,9 @@
package org.mariotaku.twidere.adapter package org.mariotaku.twidere.adapter
import android.arch.paging.AsyncPagedListDiffer
import android.arch.paging.PagedList import android.arch.paging.PagedList
import android.arch.paging.PagedListAdapterHelper
import android.content.Context import android.content.Context
import android.support.v7.recyclerview.extensions.ListAdapterConfig import android.support.v7.recyclerview.extensions.AsyncDifferConfig
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
@ -38,7 +38,7 @@ class MessagesEntriesAdapter(
var conversations: PagedList<ParcelableMessageConversation>? var conversations: PagedList<ParcelableMessageConversation>?
get() = pagedEntriesHelper.currentList get() = pagedEntriesHelper.currentList
set(value) { set(value) {
pagedEntriesHelper.setList(value) pagedEntriesHelper.submitList(value)
if (value == null) { if (value == null) {
itemCounts[0] = 0 itemCounts[0] = 0
} }
@ -55,8 +55,8 @@ class MessagesEntriesAdapter(
var listener: MessageConversationClickListener? = null var listener: MessageConversationClickListener? = null
private var pagedEntriesHelper = PagedListAdapterHelper<ParcelableMessageConversation>(ItemCountsAdapterListUpdateCallback(this, 0), private var pagedEntriesHelper = AsyncPagedListDiffer<ParcelableMessageConversation>(ItemCountsAdapterListUpdateCallback(this, 0),
ListAdapterConfig.Builder<ParcelableMessageConversation>().setDiffCallback(DiffCallbacks.conversation).build()) AsyncDifferConfig.Builder<ParcelableMessageConversation>(DiffCallbacks.conversation).build())
override fun getItemCount(): Int { override fun getItemCount(): Int {
return itemCounts.itemCount return itemCounts.itemCount

View File

@ -20,11 +20,11 @@
package org.mariotaku.twidere.adapter package org.mariotaku.twidere.adapter
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.arch.paging.AsyncPagedListDiffer
import android.arch.paging.PagedList import android.arch.paging.PagedList
import android.arch.paging.PagedListAdapterHelper
import android.arch.paging.setPagedListListener import android.arch.paging.setPagedListListener
import android.content.Context import android.content.Context
import android.support.v7.recyclerview.extensions.ListAdapterConfig import android.support.v7.recyclerview.extensions.AsyncDifferConfig
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -119,7 +119,7 @@ class ParcelableActivitiesAdapter(
var activities: PagedList<ParcelableActivity>? var activities: PagedList<ParcelableActivity>?
get() = pagedActivitiesHelper.currentList get() = pagedActivitiesHelper.currentList
set(value) { set(value) {
pagedActivitiesHelper.setList(value) pagedActivitiesHelper.submitList(value)
gapLoadingIds.clear() gapLoadingIds.clear()
} }
@ -137,8 +137,8 @@ class ParcelableActivitiesAdapter(
private val eventListener: EventListener private val eventListener: EventListener
private val gapLoadingIds: MutableSet<ObjectId<String>> = HashSet() private val gapLoadingIds: MutableSet<ObjectId<String>> = HashSet()
private var pagedActivitiesHelper = PagedListAdapterHelper<ParcelableActivity>(ItemCountsAdapterListUpdateCallback(this, ITEM_INDEX_ACTIVITY), private var pagedActivitiesHelper = AsyncPagedListDiffer<ParcelableActivity>(ItemCountsAdapterListUpdateCallback(this, ITEM_INDEX_ACTIVITY),
ListAdapterConfig.Builder<ParcelableActivity>().setDiffCallback(DiffCallbacks.activity).build()) AsyncDifferConfig.Builder<ParcelableActivity>(DiffCallbacks.activity).build())
init { init {
eventListener = EventListener(this) eventListener = EventListener(this)

View File

@ -19,12 +19,12 @@
package org.mariotaku.twidere.adapter package org.mariotaku.twidere.adapter
import android.arch.paging.AsyncPagedListDiffer
import android.arch.paging.PagedList import android.arch.paging.PagedList
import android.arch.paging.PagedListAdapterHelper
import android.arch.paging.setPagedListListener import android.arch.paging.setPagedListListener
import android.content.Context import android.content.Context
import android.support.v4.widget.Space import android.support.v4.widget.Space
import android.support.v7.recyclerview.extensions.ListAdapterConfig import android.support.v7.recyclerview.extensions.AsyncDifferConfig
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
import android.view.LayoutInflater import android.view.LayoutInflater
@ -139,7 +139,7 @@ class ParcelableStatusesAdapter(
var statuses: PagedList<ParcelableStatus>? var statuses: PagedList<ParcelableStatus>?
get() = pagedStatusesHelper.currentList get() = pagedStatusesHelper.currentList
set(value) { set(value) {
pagedStatusesHelper.setList(value) pagedStatusesHelper.submitList(value)
gapLoadingIds.clear() gapLoadingIds.clear()
if (value == null) { if (value == null) {
itemCounts[ITEM_INDEX_STATUS] = 0 itemCounts[ITEM_INDEX_STATUS] = 0
@ -164,8 +164,8 @@ class ParcelableStatusesAdapter(
private val showingFullTextStates = SparseBooleanArray() private val showingFullTextStates = SparseBooleanArray()
private var pagedStatusesHelper = PagedListAdapterHelper<ParcelableStatus>(ItemCountsAdapterListUpdateCallback(this, ITEM_INDEX_STATUS), private var pagedStatusesHelper = AsyncPagedListDiffer<ParcelableStatus>(ItemCountsAdapterListUpdateCallback(this, ITEM_INDEX_STATUS),
ListAdapterConfig.Builder<ParcelableStatus>().setDiffCallback(DiffCallbacks.status).build()) AsyncDifferConfig.Builder<ParcelableStatus>(DiffCallbacks.status).build())
init { init {
val handler = StatusAdapterLinkClickHandler<List<ParcelableStatus>>(context, preferences) val handler = StatusAdapterLinkClickHandler<List<ParcelableStatus>>(context, preferences)
@ -395,7 +395,8 @@ class ParcelableStatusesAdapter(
return if (loadAround) { return if (loadAround) {
pagedStatusesHelper.getItem(dataPosition) ?: ParcelableStatusPlaceholder pagedStatusesHelper.getItem(dataPosition) ?: ParcelableStatusPlaceholder
} else { } else {
pagedStatusesHelper.currentList?.get(dataPosition) ?: ParcelableStatusPlaceholder pagedStatusesHelper.currentList?.get(dataPosition)
?: ParcelableStatusPlaceholder
} }
} }
} }

View File

@ -19,11 +19,11 @@
package org.mariotaku.twidere.adapter package org.mariotaku.twidere.adapter
import android.arch.paging.AsyncPagedListDiffer
import android.arch.paging.PagedList import android.arch.paging.PagedList
import android.arch.paging.PagedListAdapterHelper
import android.content.Context import android.content.Context
import android.support.v4.util.ArrayMap import android.support.v4.util.ArrayMap
import android.support.v7.recyclerview.extensions.ListAdapterConfig import android.support.v7.recyclerview.extensions.AsyncDifferConfig
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
@ -62,7 +62,7 @@ class ParcelableUsersAdapter(
var users: PagedList<ParcelableUser>? var users: PagedList<ParcelableUser>?
get() = pagedStatusesHelper.currentList get() = pagedStatusesHelper.currentList
set(value) { set(value) {
pagedStatusesHelper.setList(value) pagedStatusesHelper.submitList(value)
if (value == null) { if (value == null) {
itemCounts[ITEM_INDEX_USER] = 0 itemCounts[ITEM_INDEX_USER] = 0
} }
@ -80,8 +80,8 @@ class ParcelableUsersAdapter(
private val inflater = LayoutInflater.from(context) private val inflater = LayoutInflater.from(context)
private var pagedStatusesHelper = PagedListAdapterHelper<ParcelableUser>(ItemCountsAdapterListUpdateCallback(this, ITEM_INDEX_USER), private var pagedStatusesHelper = AsyncPagedListDiffer<ParcelableUser>(ItemCountsAdapterListUpdateCallback(this, ITEM_INDEX_USER),
ListAdapterConfig.Builder<ParcelableUser>().setDiffCallback(DiffCallbacks.user).build()) AsyncDifferConfig.Builder<ParcelableUser>(DiffCallbacks.user).build())
override fun getItemCount(): Int { override fun getItemCount(): Int {
val position = loadMoreIndicatorPosition val position = loadMoreIndicatorPosition

View File

@ -420,12 +420,12 @@ class StatusDetailsAdapter(
return itemCounts.itemCount return itemCounts.itemCount
} }
override fun onAttachedToRecyclerView(recyclerView: RecyclerView?) { override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView) super.onAttachedToRecyclerView(recyclerView)
this.recyclerView = recyclerView this.recyclerView = recyclerView
} }
override fun onDetachedFromRecyclerView(recyclerView: RecyclerView?) { override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) {
super.onDetachedFromRecyclerView(recyclerView) super.onDetachedFromRecyclerView(recyclerView)
this.recyclerView = null this.recyclerView = null
} }

View File

@ -21,10 +21,6 @@ package org.mariotaku.twidere.extension
import java.lang.reflect.Field import java.lang.reflect.Field
/**
* Created by mariotaku on 2017/4/17.
*/
fun Class<*>.findFieldByTypes(vararg checkTypes: Class<*>): Field? { fun Class<*>.findFieldByTypes(vararg checkTypes: Class<*>): Field? {
return declaredFields.firstOrNull { field -> return declaredFields.firstOrNull { field ->
checkTypes.all { it.isAssignableFrom(field.type) } checkTypes.all { it.isAssignableFrom(field.type) }

View File

@ -115,8 +115,8 @@ class FileSelectorDialogFragment : BaseDialogFragment(), LoaderCallbacks<List<Fi
return dialog return dialog
} }
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<File>> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<File>> {
val extensions = args.getStringArray(EXTRA_FILE_EXTENSIONS) val extensions = args!!.getStringArray(EXTRA_FILE_EXTENSIONS)
val path = args.getString(EXTRA_PATH) val path = args.getString(EXTRA_PATH)
var currentDir: File? = if (path != null) File(path) else getExternalStorageDirectory() var currentDir: File? = if (path != null) File(path) else getExternalStorageDirectory()
if (currentDir == null) { if (currentDir == null) {

View File

@ -134,8 +134,8 @@ abstract class ParcelableGroupsFragment : AbsContentListRecyclerViewFragment<Par
loaderManager.initLoader(0, loaderArgs, this) loaderManager.initLoader(0, loaderArgs, this)
} }
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<ParcelableGroup>?> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableGroup>?> {
val fromUser = args.getBoolean(EXTRA_FROM_USER) val fromUser = args!!.getBoolean(EXTRA_FROM_USER)
args.remove(EXTRA_FROM_USER) args.remove(EXTRA_FROM_USER)
return onCreateUserListsLoader(activity!!, args, fromUser) return onCreateUserListsLoader(activity!!, args, fromUser)
} }

View File

@ -138,8 +138,8 @@ abstract class ParcelableUserListsFragment : AbsContentListRecyclerViewFragment<
loaderManager.initLoader(0, loaderArgs, this) loaderManager.initLoader(0, loaderArgs, this)
} }
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<ParcelableUserList>> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableUserList>> {
val fromUser = args.getBoolean(EXTRA_FROM_USER) val fromUser = args!!.getBoolean(EXTRA_FROM_USER)
args.remove(EXTRA_FROM_USER) args.remove(EXTRA_FROM_USER)
return onCreateUserListsLoader(activity!!, args, fromUser) return onCreateUserListsLoader(activity!!, args, fromUser)
} }

View File

@ -46,9 +46,6 @@ import org.mariotaku.twidere.model.SingleResponse
import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.util.Utils import org.mariotaku.twidere.util.Utils
/**
* Created by mariotaku on 16/3/23.
*/
class GroupFragment : AbsToolbarTabPagesFragment(), LoaderCallbacks<SingleResponse<ParcelableGroup>> { class GroupFragment : AbsToolbarTabPagesFragment(), LoaderCallbacks<SingleResponse<ParcelableGroup>> {
var group: ParcelableGroup? = null var group: ParcelableGroup? = null
private set private set
@ -70,8 +67,8 @@ class GroupFragment : AbsToolbarTabPagesFragment(), LoaderCallbacks<SingleRespon
getGroupInfo(false) getGroupInfo(false)
} }
override fun onCreateLoader(id: Int, args: Bundle): Loader<SingleResponse<ParcelableGroup>> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<SingleResponse<ParcelableGroup>> {
val accountKey = args.accountKey val accountKey = args!!.accountKey
val groupId = args.groupId val groupId = args.groupId
val groupName = args.groupName val groupName = args.groupName
val omitIntentExtra = args.getBoolean(EXTRA_OMIT_INTENT_EXTRA, true) val omitIntentExtra = args.getBoolean(EXTRA_OMIT_INTENT_EXTRA, true)

View File

@ -30,9 +30,6 @@ import org.mariotaku.twidere.loader.group.UserGroupsLoader
import org.mariotaku.twidere.model.ParcelableGroup import org.mariotaku.twidere.model.ParcelableGroup
import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.UserKey
/**
* Created by mariotaku on 16/3/9.
*/
class UserGroupsFragment : ParcelableGroupsFragment() { class UserGroupsFragment : ParcelableGroupsFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)

View File

@ -247,10 +247,10 @@ class MessageConversationInfoFragment : BaseFragment(), IToolBarSupportFragment,
return ConversationInfoLoader(context!!, accountKey, conversationId) return ConversationInfoLoader(context!!, accountKey, conversationId)
} }
override fun onLoaderReset(loader: Loader<ParcelableMessageConversation?>?) { override fun onLoaderReset(loader: Loader<ParcelableMessageConversation?>) {
} }
override fun onLoadFinished(loader: Loader<ParcelableMessageConversation?>?, data: ParcelableMessageConversation?) { override fun onLoadFinished(loader: Loader<ParcelableMessageConversation?>, data: ParcelableMessageConversation?) {
val context = this.context ?: return val context = this.context ?: return
if (data == null) { if (data == null) {
activity?.finish() activity?.finish()

View File

@ -113,12 +113,12 @@ class StatusFragment : BaseFragment(), LoaderCallbacks<SingleResponse<Parcelable
// Listeners // Listeners
private val conversationsLoaderCallback = object : LoaderCallbacks<List<ParcelableStatus>> { private val conversationsLoaderCallback = object : LoaderCallbacks<List<ParcelableStatus>> {
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<ParcelableStatus>> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableStatus>> {
val adapter = this@StatusFragment.adapter val adapter = this@StatusFragment.adapter
adapter.isRepliesLoading = true adapter.isRepliesLoading = true
adapter.isConversationsLoading = true adapter.isConversationsLoading = true
adapter.updateItemDecoration() adapter.updateItemDecoration()
val status: ParcelableStatus = args.getParcelable(EXTRA_STATUS) val status: ParcelableStatus = args!!.getParcelable(EXTRA_STATUS)
val loadingMore = args.getBoolean(EXTRA_LOADING_MORE, false) val loadingMore = args.getBoolean(EXTRA_LOADING_MORE, false)
return ConversationLoader(activity!!, status, adapter.data, true, loadingMore).apply { return ConversationLoader(activity!!, status, adapter.data, true, loadingMore).apply {
pagination = args.toPagination() pagination = args.toPagination()
@ -328,7 +328,7 @@ class StatusFragment : BaseFragment(), LoaderCallbacks<SingleResponse<Parcelable
repeatCount, event, metaState) repeatCount, event, metaState)
} }
override fun onCreateLoader(id: Int, args: Bundle): Loader<SingleResponse<ParcelableStatus>> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<SingleResponse<ParcelableStatus>> {
val fragmentArgs = arguments!! val fragmentArgs = arguments!!
val accountKey = fragmentArgs.accountKey val accountKey = fragmentArgs.accountKey
val statusId = fragmentArgs.statusId val statusId = fragmentArgs.statusId

View File

@ -45,7 +45,6 @@ import com.squareup.otto.Subscribe
import org.mariotaku.kpreferences.get import org.mariotaku.kpreferences.get
import org.mariotaku.ktextension.Bundle import org.mariotaku.ktextension.Bundle
import org.mariotaku.ktextension.setItemAvailability import org.mariotaku.ktextension.setItemAvailability
import org.mariotaku.microblog.library.MicroBlog
import org.mariotaku.microblog.library.MicroBlogException import org.mariotaku.microblog.library.MicroBlogException
import org.mariotaku.microblog.library.Twitter import org.mariotaku.microblog.library.Twitter
import org.mariotaku.twidere.Constants.* import org.mariotaku.twidere.Constants.*
@ -279,8 +278,8 @@ class UserListFragment : AbsToolbarTabPagesFragment(), OnClickListener,
} }
override fun onCreateLoader(id: Int, args: Bundle): Loader<SingleResponse<ParcelableUserList>> { override fun onCreateLoader(id: Int, args: Bundle?): Loader<SingleResponse<ParcelableUserList>> {
val accountKey = args.accountKey val accountKey = args!!.accountKey
val userKey = args.userKey val userKey = args.userKey
val listId = args.listId val listId = args.listId
val listName = args.listName val listName = args.listName

View File

@ -103,10 +103,10 @@ class GetMessagesTask(
AccountType.TWITTER -> { AccountType.TWITTER -> {
val twitter = details.newMicroBlogInstance(context, cls = Twitter::class.java) val twitter = details.newMicroBlogInstance(context, cls = Twitter::class.java)
// Use official DM api // Use official DM api
if (details.isOfficial(context)) { // if (details.isOfficial(context)) {
return getTwitterOfficialMessages(twitter, details, param, index) // return getTwitterOfficialMessages(twitter, details, param, index)
} // }
// getTwitterMessages(twitter, details, param, index) getTwitterMessages(twitter, details, param, index)
} }
} }
// Use default method // Use default method
@ -336,7 +336,8 @@ class GetMessagesTask(
val oldestConversations = DataStoreUtils.getOldestConversations(context, val oldestConversations = DataStoreUtils.getOldestConversations(context,
Conversations.CONTENT_URI, twitterOfficialKeys) Conversations.CONTENT_URI, twitterOfficialKeys)
oldestConversations.forEachIndexed { i, conversation -> oldestConversations.forEachIndexed { i, conversation ->
val extras = conversation?.conversation_extras as? TwitterOfficialConversationExtras ?: return@forEachIndexed val extras = conversation?.conversation_extras as? TwitterOfficialConversationExtras
?: return@forEachIndexed
incomingIds[i] = extras.maxEntryId incomingIds[i] = extras.maxEntryId
} }
return@lazy (incomingIds + outgoingIds).mapToArray { maxId -> return@lazy (incomingIds + outgoingIds).mapToArray { maxId ->
@ -463,11 +464,12 @@ class GetMessagesTask(
if (myLastReadTimestamp > 0) { if (myLastReadTimestamp > 0) {
conversation.last_read_timestamp = myLastReadTimestamp conversation.last_read_timestamp = myLastReadTimestamp
} }
val conversationExtras = conversation.conversation_extras as? TwitterOfficialConversationExtras ?: run { val conversationExtras = conversation.conversation_extras as? TwitterOfficialConversationExtras
val extras = TwitterOfficialConversationExtras() ?: run {
conversation.conversation_extras = extras val extras = TwitterOfficialConversationExtras()
return@run extras conversation.conversation_extras = extras
} return@run extras
}
conversationExtras.apply { conversationExtras.apply {
this.minEntryId = v.minEntryId this.minEntryId = v.minEntryId
this.maxEntryId = v.maxEntryId this.maxEntryId = v.maxEntryId

View File

@ -6,7 +6,6 @@ import android.os.Build
import android.util.Base64 import android.util.Base64
import android.util.Log import android.util.Log
import okhttp3.* import okhttp3.*
import okhttp3.internal.platform.Platform
import org.mariotaku.kpreferences.get import org.mariotaku.kpreferences.get
import org.mariotaku.restfu.http.RestHttpClient import org.mariotaku.restfu.http.RestHttpClient
import org.mariotaku.restfu.okhttp3.OkHttpRestClient import org.mariotaku.restfu.okhttp3.OkHttpRestClient
@ -38,9 +37,15 @@ object HttpClientFactory {
connectionPool: ConnectionPool, cache: Cache) { connectionPool: ConnectionPool, cache: Cache) {
updateHttpClientConfiguration(builder, conf, dns, connectionPool, cache) updateHttpClientConfiguration(builder, conf, dns, connectionPool, cache)
if (Build.VERSION.SDK_INT in Build.VERSION_CODES.JELLY_BEAN until Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT in Build.VERSION_CODES.JELLY_BEAN until Build.VERSION_CODES.LOLLIPOP) {
val tlsSocketFactory = TLSSocketFactory() val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
val trustManager = Platform.get().trustManager(tlsSocketFactory) ?: trustManagerFactory.init(null as KeyStore?)
systemDefaultTrustManager() val trustManagers = trustManagerFactory.trustManagers
if (trustManagers.single() !is X509TrustManager) {
throw IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers))
}
val trustManager = trustManagers[0] as X509TrustManager
val tlsSocketFactory = TLSSocketFactory(trustManagers)
builder.sslSocketFactory(tlsSocketFactory, trustManager) builder.sslSocketFactory(tlsSocketFactory, trustManager)
} }
updateTLSConnectionSpecs(builder) updateTLSConnectionSpecs(builder)
@ -164,17 +169,6 @@ object HttpClientFactory {
private fun String.prefix(prefix: String) = prefix + this private fun String.prefix(prefix: String) = prefix + this
private fun systemDefaultTrustManager(): X509TrustManager {
val trustManagerFactory = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(null as KeyStore?)
val trustManagers = trustManagerFactory.trustManagers
if (trustManagers.size != 1 || trustManagers[0] !is X509TrustManager) {
throw IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers))
}
return trustManagers[0] as X509TrustManager
}
private val urlSupportedPatterns = listOf("[SCHEME]", "[HOST]", "[PORT]", "[AUTHORITY]", private val urlSupportedPatterns = listOf("[SCHEME]", "[HOST]", "[PORT]", "[AUTHORITY]",
"[PATH]", "[/PATH]", "[PATH_ENCODED]", "[QUERY]", "[?QUERY]", "[QUERY_ENCODED]", "[PATH]", "[/PATH]", "[PATH_ENCODED]", "[QUERY]", "[?QUERY]", "[QUERY_ENCODED]",
"[FRAGMENT]", "[#FRAGMENT]", "[FRAGMENT_ENCODED]", "[URL_ENCODED]", "[URL_BASE64]") "[FRAGMENT]", "[#FRAGMENT]", "[FRAGMENT_ENCODED]", "[URL_ENCODED]", "[URL_BASE64]")

View File

@ -27,17 +27,18 @@ import java.net.Socket
import javax.net.ssl.SSLContext import javax.net.ssl.SSLContext
import javax.net.ssl.SSLSocket import javax.net.ssl.SSLSocket
import javax.net.ssl.SSLSocketFactory import javax.net.ssl.SSLSocketFactory
import javax.net.ssl.TrustManager
/** /**
* @author fkrauthan * @author fkrauthan
*/ */
class TLSSocketFactory : SSLSocketFactory() { class TLSSocketFactory(tm: Array<TrustManager>) : SSLSocketFactory() {
private val delegate: SSLSocketFactory private val delegate: SSLSocketFactory
init { init {
val context = SSLContext.getInstance("TLS").apply { val context = SSLContext.getInstance("TLS").apply {
init(null, null, null) init(null, tm, null)
} }
delegate = context.socketFactory delegate = context.socketFactory
} }