- Simplify ContactListCache configuration

- Add kotlin.Duration support
- Disable contact list cache by default for stability
This commit is contained in:
Him188 2021-02-11 16:52:22 +08:00
parent e219fb3a95
commit c51eea6268
2 changed files with 47 additions and 21 deletions

View File

@ -5356,10 +5356,10 @@ public class net/mamoe/mirai/utils/BotConfiguration {
public static final field Companion Lnet/mamoe/mirai/utils/BotConfiguration$Companion;
public fun <init> ()V
public final fun autoReconnectOnForceOffline ()V
public final synthetic fun contactListCache (Lkotlin/jvm/functions/Function1;)V
public final fun copy ()Lnet/mamoe/mirai/utils/BotConfiguration;
public final fun disableContactCaches ()V
public final fun disableFriendListCache ()V
public final fun disableGroupMemberListCache ()V
public final fun disableContactCache ()V
public final fun enableContactCache ()V
public final fun fileBasedDeviceInfo ()V
public final fun fileBasedDeviceInfo (Ljava/lang/String;)V
public static synthetic fun fileBasedDeviceInfo$default (Lnet/mamoe/mirai/utils/BotConfiguration;Ljava/lang/String;ILjava/lang/Object;)V
@ -5436,9 +5436,11 @@ public final class net/mamoe/mirai/utils/BotConfiguration$ContactListCache {
public fun <init> ()V
public final fun getFriendListCacheEnabled ()Z
public final fun getGroupMemberListCacheEnabled ()Z
public final synthetic fun getSaveInterval-UwyO8pc ()D
public final fun getSaveIntervalMillis ()J
public final fun setFriendListCacheEnabled (Z)V
public final fun setGroupMemberListCacheEnabled (Z)V
public final synthetic fun setSaveInterval-LRDsOJo (D)V
public final fun setSaveIntervalMillis (J)V
}

View File

@ -25,6 +25,9 @@ import java.io.File
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext
import kotlin.coroutines.coroutineContext
import kotlin.time.Duration
import kotlin.time.ExperimentalTime
import kotlin.time.milliseconds
/**
* [Bot] 配置. 用于 [BotFactory.newBot]
@ -396,6 +399,9 @@ public open class BotConfiguration { // open for Java
/**
* 联系人信息缓存配置
* @see contactListCache
* @see enableContactCache
* @see disableContactCache
* @since 2.4
*/
public class ContactListCache {
@ -405,32 +411,39 @@ public open class BotConfiguration { // open for Java
public var saveIntervalMillis: Long = 60_000
/**
* 开启好友列表缓存
* 在有修改时自动保存间隔. 默认 60 . 在每次登录完成后有修改时都会立即保存一次.
*/
public var friendListCacheEnabled: Boolean = true
@ExperimentalTime
public inline var saveInterval: Duration
@JvmSynthetic inline get() = saveIntervalMillis.milliseconds
@JvmSynthetic inline set(v) {
saveIntervalMillis = v.toLongMilliseconds()
}
/**
* 开启群成员列表缓存
* 开启好友列表缓存.
*/
public var groupMemberListCacheEnabled: Boolean = true
public var friendListCacheEnabled: Boolean = false
/**
* 开启群成员列表缓存.
*/
public var groupMemberListCacheEnabled: Boolean = false
}
/**
* 禁用好友列表缓存.
* 配置 [ContactListCache]
* ```
* contactListCache {
* saveIntervalMillis = 30_000
* friendListCacheEnabled = true
* }
* ```
* @since 2.4
*/
@ConfigurationDsl
public fun disableFriendListCache() {
contactListCache.friendListCacheEnabled = false
}
/**
* 禁用群成员列表缓存.
* @since 2.4
*/
@ConfigurationDsl
public fun disableGroupMemberListCache() {
contactListCache.groupMemberListCacheEnabled = false
@JvmSynthetic
public inline fun contactListCache(action: ContactListCache.() -> Unit) {
action.invoke(this.contactListCache)
}
/**
@ -438,15 +451,26 @@ public open class BotConfiguration { // open for Java
* @since 2.4
*/
@ConfigurationDsl
public fun disableContactCaches() {
public fun disableContactCache() {
contactListCache.friendListCacheEnabled = false
contactListCache.groupMemberListCacheEnabled = false
}
/**
* 启用好友列表和群成员列表的缓存.
* @since 2.4
*/
@ConfigurationDsl
public fun enableContactCache() {
contactListCache.friendListCacheEnabled = true
contactListCache.groupMemberListCacheEnabled = true
}
///////////////////////////////////////////////////////////////////////////
// Misc
///////////////////////////////////////////////////////////////////////////
@Suppress("DuplicatedCode")
public fun copy(): BotConfiguration {
return BotConfiguration().also { new ->
// To structural order