From 4e3873c3d37a05c565501fae6cc9063960df3cd6 Mon Sep 17 00:00:00 2001 From: sandtechnology <20417547+sandtechnology@users.noreply.github.com> Date: Tue, 16 Nov 2021 22:54:39 +0800 Subject: [PATCH] Fix #1674, apply right nick and remark impl to contact design (#1678) * Fix #1674, apply right nick and remark impl for contact design * Fix build, add missed member impl * Fix wrong delegate in AbstractMember impl Co-authored-by: sandtechnology <a1294790523@hotmail.com> Co-authored-by: Him188 <him188@mamoe.net> --- mirai-core/src/commonMain/kotlin/contact/AbstractMember.kt | 4 ++++ mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt | 4 ++-- mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt | 2 ++ mirai-core/src/commonMain/kotlin/contact/StrangerImpl.kt | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/contact/AbstractMember.kt b/mirai-core/src/commonMain/kotlin/contact/AbstractMember.kt index 73f55e4ce..7a710765f 100644 --- a/mirai-core/src/commonMain/kotlin/contact/AbstractMember.kt +++ b/mirai-core/src/commonMain/kotlin/contact/AbstractMember.kt @@ -21,8 +21,12 @@ internal sealed class AbstractMember( parentCoroutineContext: CoroutineContext, memberInfo: MemberInfo, ) : AbstractUser(group.bot, parentCoroutineContext, memberInfo), Member { + final override val info: MemberInfoImpl = memberInfo.cast() + override var nick: String by info::nick + override var remark: String by info::remark + override val nameCard: String get() = info.nameCard override val specialTitle: String get() = info.specialTitle override var permission: MemberPermission by info::permission diff --git a/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt b/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt index 76ad013d8..a0017452e 100644 --- a/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt +++ b/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt @@ -62,8 +62,8 @@ internal sealed class AbstractUser( ) : User, AbstractContact(bot, parentCoroutineContext) { final override val id: Long = userInfo.uin - final override var nick: String = userInfo.nick - final override val remark: String = userInfo.remark + abstract override val nick: String + abstract override val remark: String val messageSeq = AtomicIntSeq.forMessageSeq() val fragmentedMessageMerger = C2CPkgMsgParsingCache() diff --git a/mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt b/mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt index b5c757daf..89dce8ba8 100644 --- a/mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt @@ -63,6 +63,8 @@ internal class FriendImpl( parentCoroutineContext: CoroutineContext, override val info: FriendInfoImpl, ) : Friend, AbstractUser(bot, parentCoroutineContext, info) { + override var nick: String by info::nick + override var remark: String by info::remark override suspend fun delete() { check(bot.friends[id] != null) { "Friend $id had already been deleted" diff --git a/mirai-core/src/commonMain/kotlin/contact/StrangerImpl.kt b/mirai-core/src/commonMain/kotlin/contact/StrangerImpl.kt index eff70f575..7459eb91a 100644 --- a/mirai-core/src/commonMain/kotlin/contact/StrangerImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/StrangerImpl.kt @@ -48,6 +48,8 @@ internal class StrangerImpl( parentCoroutineContext: CoroutineContext, override val info: StrangerInfo, ) : Stranger, AbstractUser(bot, parentCoroutineContext, info) { + override val nick: String by info::nick + override val remark: String by info::remark override suspend fun delete() { check(bot.strangers[this.id] != null) { "Stranger ${this.id} had already been deleted"