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

View File

@ -38,7 +38,7 @@ buildscript {
jcenter()
}
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'
}
}
@ -50,7 +50,7 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 26
targetSdkVersion 27
versionCode projectVersionCode
versionName projectVersionName
}

View File

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

View File

@ -201,7 +201,7 @@ dependencies {
implementation "android.arch.lifecycle:extensions:${libVersions['ArchLifecycleExtensions']}"
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-compat:${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
fun <T> PagedListAdapterHelper<T>.setPagedListListener(listener: ((list: PagedList<T>?) -> Unit)?) {
mListener = if (listener != null) PagedListAdapterHelper.PagedListListener { pagedList ->
fun <T> AsyncPagedListDiffer<T>.setPagedListListener(listener: ((list: PagedList<T>?) -> Unit)?) {
mListener = if (listener != null) AsyncPagedListDiffer.PagedListListener { pagedList ->
listener(pagedList)
} else null
}

View File

@ -1,16 +1,10 @@
package android.support.v4.app
/**
* Created by mariotaku on 2016/11/26.
*/
fun LoaderManager.hasRunningLoadersSafe(): Boolean {
if (this !is LoaderManagerImpl) return false
var loadersRunning = false
val count = mLoaders.size()
for (i in 0 until count) {
val li = mLoaders.valueAt(i) ?: continue
loadersRunning = loadersRunning or (li.mStarted && !li.mDeliveredData)
return try {
hasRunningLoaders()
} catch (e: Exception) {
false
}
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.annotation.LoadMorePosition
import org.mariotaku.twidere.constant.IntentConstants.*
import org.mariotaku.twidere.extension.accountKey
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.userlists.UserListOwnershipsLoader
import org.mariotaku.twidere.model.ParcelableUser
@ -144,20 +146,20 @@ class UserListSelectorActivity : BaseActivity(),
}
}
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<ParcelableUserList>> {
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableUserList>> {
val accountKey = args!!.accountKey!!
val userKey = args.userKey!!
return UserListOwnershipsLoader(this, accountKey, userKey, null, adapter.all).apply {
pagination = args.getParcelable(EXTRA_PAGINATION)
}
}
override fun onLoaderReset(loader: Loader<List<ParcelableUserList>>?) {
override fun onLoaderReset(loader: Loader<List<ParcelableUserList>>) {
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.loadMoreSupportedPosition = if (adapter.all != data) {
LoadMorePosition.END

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -138,8 +138,8 @@ abstract class ParcelableUserListsFragment : AbsContentListRecyclerViewFragment<
loaderManager.initLoader(0, loaderArgs, this)
}
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<ParcelableUserList>> {
val fromUser = args.getBoolean(EXTRA_FROM_USER)
override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableUserList>> {
val fromUser = args!!.getBoolean(EXTRA_FROM_USER)
args.remove(EXTRA_FROM_USER)
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.util.Utils
/**
* Created by mariotaku on 16/3/23.
*/
class GroupFragment : AbsToolbarTabPagesFragment(), LoaderCallbacks<SingleResponse<ParcelableGroup>> {
var group: ParcelableGroup? = null
private set
@ -70,8 +67,8 @@ class GroupFragment : AbsToolbarTabPagesFragment(), LoaderCallbacks<SingleRespon
getGroupInfo(false)
}
override fun onCreateLoader(id: Int, args: Bundle): Loader<SingleResponse<ParcelableGroup>> {
val accountKey = args.accountKey
override fun onCreateLoader(id: Int, args: Bundle?): Loader<SingleResponse<ParcelableGroup>> {
val accountKey = args!!.accountKey
val groupId = args.groupId
val groupName = args.groupName
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.UserKey
/**
* Created by mariotaku on 16/3/9.
*/
class UserGroupsFragment : ParcelableGroupsFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

View File

@ -247,10 +247,10 @@ class MessageConversationInfoFragment : BaseFragment(), IToolBarSupportFragment,
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
if (data == null) {
activity?.finish()

View File

@ -113,12 +113,12 @@ class StatusFragment : BaseFragment(), LoaderCallbacks<SingleResponse<Parcelable
// Listeners
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
adapter.isRepliesLoading = true
adapter.isConversationsLoading = true
adapter.updateItemDecoration()
val status: ParcelableStatus = args.getParcelable(EXTRA_STATUS)
val status: ParcelableStatus = args!!.getParcelable(EXTRA_STATUS)
val loadingMore = args.getBoolean(EXTRA_LOADING_MORE, false)
return ConversationLoader(activity!!, status, adapter.data, true, loadingMore).apply {
pagination = args.toPagination()
@ -328,7 +328,7 @@ class StatusFragment : BaseFragment(), LoaderCallbacks<SingleResponse<Parcelable
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 accountKey = fragmentArgs.accountKey
val statusId = fragmentArgs.statusId

View File

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

View File

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

View File

@ -6,7 +6,6 @@ import android.os.Build
import android.util.Base64
import android.util.Log
import okhttp3.*
import okhttp3.internal.platform.Platform
import org.mariotaku.kpreferences.get
import org.mariotaku.restfu.http.RestHttpClient
import org.mariotaku.restfu.okhttp3.OkHttpRestClient
@ -38,9 +37,15 @@ object HttpClientFactory {
connectionPool: ConnectionPool, cache: Cache) {
updateHttpClientConfiguration(builder, conf, dns, connectionPool, cache)
if (Build.VERSION.SDK_INT in Build.VERSION_CODES.JELLY_BEAN until Build.VERSION_CODES.LOLLIPOP) {
val tlsSocketFactory = TLSSocketFactory()
val trustManager = Platform.get().trustManager(tlsSocketFactory) ?:
systemDefaultTrustManager()
val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(null as KeyStore?)
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)
}
updateTLSConnectionSpecs(builder)
@ -164,17 +169,6 @@ object HttpClientFactory {
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]",
"[PATH]", "[/PATH]", "[PATH_ENCODED]", "[QUERY]", "[?QUERY]", "[QUERY_ENCODED]",
"[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.SSLSocket
import javax.net.ssl.SSLSocketFactory
import javax.net.ssl.TrustManager
/**
* @author fkrauthan
*/
class TLSSocketFactory : SSLSocketFactory() {
class TLSSocketFactory(tm: Array<TrustManager>) : SSLSocketFactory() {
private val delegate: SSLSocketFactory
init {
val context = SSLContext.getInstance("TLS").apply {
init(null, null, null)
init(null, tm, null)
}
delegate = context.socketFactory
}