Skip to content

Commit

Permalink
fix: hasChild
Browse files Browse the repository at this point in the history
  • Loading branch information
cssxsh committed Jul 30, 2023
1 parent fca4a3c commit e8a28d9
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import net.mamoe.mirai.console.data.PluginDataExtensions
import net.mamoe.mirai.console.permission.*
import net.mamoe.mirai.console.permission.Permission.Companion.parentsWithSelf
import net.mamoe.mirai.console.permission.PermitteeId.Companion.allParentsWithSelf
import net.mamoe.mirai.console.permission.PermitteeId.Companion.hasChild
import net.mamoe.mirai.console.permission.PermitteeId.Companion.isChild

internal abstract class AbstractConcurrentPermissionService<P : Permission> : PermissionService<P> {
protected abstract val permissions: MutableMap<PermissionId, P>
Expand Down Expand Up @@ -75,7 +75,7 @@ internal abstract class AbstractConcurrentPermissionService<P : Permission> : Pe
override fun getPermittedPermissions(permitteeId: PermitteeId): Sequence<P> = sequence {
for ((permissionIdentifier, permissibleIdentifiers) in grantedPermissionsMap) {

val granted = permissibleIdentifiers.any { permitteeId.hasChild(it) }
val granted = permissibleIdentifiers.any { permitteeId.isChild(it) }

if (granted) get(permissionIdentifier)?.let { yield(it) }
}
Expand All @@ -84,7 +84,7 @@ internal abstract class AbstractConcurrentPermissionService<P : Permission> : Pe
internal fun getPermittedPermissionsAndSource(permitteeId: PermitteeId): Sequence<Pair<PermitteeId, P>> = sequence {
for ((permissionIdentifier, permissibleIdentifiers) in grantedPermissionsMap) {
permissibleIdentifiers.forEach { pid ->
if (permitteeId.hasChild(pid)) {
if (permitteeId.isChild(pid)) {
get(permissionIdentifier)?.let { yield(pid to it) }
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,14 @@ public interface PermitteeId {
* 当 [this] 或 [this] 的任意一个直接或间接父 [PermitteeId.asString] 与 `this.asString` 相同时返回 `true`
*/
@JvmStatic
public fun PermitteeId.hasChild(child: PermitteeId): Boolean {
return allParentsWithSelf.any { it.asString() == child.asString() } // asString is for compatibility issue with external implementations
public fun PermitteeId.isChild(parent: PermitteeId): Boolean {
return allParentsWithSelf.any { it.asString() == parent.asString() } // asString is for compatibility issue with external implementations
}

@JvmStatic
@DeprecatedSinceMirai(warningSince = "2.16", hiddenSince = "2.17")
public fun PermitteeId.hasChild(child: PermitteeId): Boolean = isChild(child)

/**
* 获取所有直接或间接父类的 [PermitteeId].
*/
Expand Down

0 comments on commit e8a28d9

Please sign in to comment.