- 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 static final field Companion Lnet/mamoe/mirai/utils/BotConfiguration$Companion;
public fun <init> ()V public fun <init> ()V
public final fun autoReconnectOnForceOffline ()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 copy ()Lnet/mamoe/mirai/utils/BotConfiguration;
public final fun disableContactCaches ()V public final fun disableContactCache ()V
public final fun disableFriendListCache ()V public final fun enableContactCache ()V
public final fun disableGroupMemberListCache ()V
public final fun fileBasedDeviceInfo ()V public final fun fileBasedDeviceInfo ()V
public final fun fileBasedDeviceInfo (Ljava/lang/String;)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 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 fun <init> ()V
public final fun getFriendListCacheEnabled ()Z public final fun getFriendListCacheEnabled ()Z
public final fun getGroupMemberListCacheEnabled ()Z public final fun getGroupMemberListCacheEnabled ()Z
public final synthetic fun getSaveInterval-UwyO8pc ()D
public final fun getSaveIntervalMillis ()J public final fun getSaveIntervalMillis ()J
public final fun setFriendListCacheEnabled (Z)V public final fun setFriendListCacheEnabled (Z)V
public final fun setGroupMemberListCacheEnabled (Z)V public final fun setGroupMemberListCacheEnabled (Z)V
public final synthetic fun setSaveInterval-LRDsOJo (D)V
public final fun setSaveIntervalMillis (J)V public final fun setSaveIntervalMillis (J)V
} }

View File

@ -25,6 +25,9 @@ import java.io.File
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext import kotlin.coroutines.EmptyCoroutineContext
import kotlin.coroutines.coroutineContext import kotlin.coroutines.coroutineContext
import kotlin.time.Duration
import kotlin.time.ExperimentalTime
import kotlin.time.milliseconds
/** /**
* [Bot] 配置. 用于 [BotFactory.newBot] * [Bot] 配置. 用于 [BotFactory.newBot]
@ -396,6 +399,9 @@ public open class BotConfiguration { // open for Java
/** /**
* 联系人信息缓存配置 * 联系人信息缓存配置
* @see contactListCache
* @see enableContactCache
* @see disableContactCache
* @since 2.4 * @since 2.4
*/ */
public class ContactListCache { public class ContactListCache {
@ -405,32 +411,39 @@ public open class BotConfiguration { // open for Java
public var saveIntervalMillis: Long = 60_000 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 * @since 2.4
*/ */
@ConfigurationDsl @JvmSynthetic
public fun disableFriendListCache() { public inline fun contactListCache(action: ContactListCache.() -> Unit) {
contactListCache.friendListCacheEnabled = false action.invoke(this.contactListCache)
}
/**
* 禁用群成员列表缓存.
* @since 2.4
*/
@ConfigurationDsl
public fun disableGroupMemberListCache() {
contactListCache.groupMemberListCacheEnabled = false
} }
/** /**
@ -438,15 +451,26 @@ public open class BotConfiguration { // open for Java
* @since 2.4 * @since 2.4
*/ */
@ConfigurationDsl @ConfigurationDsl
public fun disableContactCaches() { public fun disableContactCache() {
contactListCache.friendListCacheEnabled = false contactListCache.friendListCacheEnabled = false
contactListCache.groupMemberListCacheEnabled = false contactListCache.groupMemberListCacheEnabled = false
} }
/**
* 启用好友列表和群成员列表的缓存.
* @since 2.4
*/
@ConfigurationDsl
public fun enableContactCache() {
contactListCache.friendListCacheEnabled = true
contactListCache.groupMemberListCacheEnabled = true
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Misc // Misc
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@Suppress("DuplicatedCode")
public fun copy(): BotConfiguration { public fun copy(): BotConfiguration {
return BotConfiguration().also { new -> return BotConfiguration().also { new ->
// To structural order // To structural order