Add hoist flag for sidebar member grouping
Custom roles can hoist members into separate list sections when enabled in server settings. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -36,7 +36,7 @@ Let servers define up to 24 named colored roles with Discord-style permission fl
|
|||||||
|
|
||||||
| Method | Role |
|
| Method | Role |
|
||||||
|--------|------|
|
|--------|------|
|
||||||
| `listRoles` / `getRole` / `createRole` / `updateRole` / `deleteRole` / `reorderRoles` | Role CRUD + position reorder |
|
| `listRoles` / `getRole` / `createRole` / `updateRole` / `deleteRole` / `reorderRoles` | Role CRUD + position reorder; `hoist` displays members separately in sidebar (v0.8.171) |
|
||||||
| `getMemberRoleIds` / `setMemberRoleIds` | Member links |
|
| `getMemberRoleIds` / `setMemberRoleIds` | Member links |
|
||||||
| `attachCustomRolesToMembers` | Enrich member list |
|
| `attachCustomRolesToMembers` | Enrich member list |
|
||||||
| `resolvePermissions(member, customRoles)` | View object for UI |
|
| `resolvePermissions(member, customRoles)` | View object for UI |
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class PearcordGuildRoles {
|
|||||||
return this.store.get(ROLES_COLLECTION, { guildId: gid, id: roleId })
|
return this.store.get(ROLES_COLLECTION, { guildId: gid, id: roleId })
|
||||||
}
|
}
|
||||||
|
|
||||||
async createRole (guildId, { name, color, permissions, position } = {}) {
|
async createRole (guildId, { name, color, permissions, position, hoist } = {}) {
|
||||||
const gid = this._guildKey(guildId)
|
const gid = this._guildKey(guildId)
|
||||||
if (!gid) throw new Error('guildId required')
|
if (!gid) throw new Error('guildId required')
|
||||||
const rows = await this.listRoles(gid)
|
const rows = await this.listRoles(gid)
|
||||||
@@ -90,6 +90,7 @@ class PearcordGuildRoles {
|
|||||||
color: normalizeColor(color),
|
color: normalizeColor(color),
|
||||||
permissions: normalizePermissionsMask(permissions),
|
permissions: normalizePermissionsMask(permissions),
|
||||||
position: Number.isFinite(position) ? position : rows.length,
|
position: Number.isFinite(position) ? position : rows.length,
|
||||||
|
hoist: !!hoist,
|
||||||
createdAt: now()
|
createdAt: now()
|
||||||
}
|
}
|
||||||
await this.store.insert(ROLES_COLLECTION, row)
|
await this.store.insert(ROLES_COLLECTION, row)
|
||||||
@@ -115,6 +116,7 @@ class PearcordGuildRoles {
|
|||||||
row.permissions = normalizePermissionsMask(patch.permissions)
|
row.permissions = normalizePermissionsMask(patch.permissions)
|
||||||
}
|
}
|
||||||
if (patch.position !== undefined) row.position = Number(patch.position) || 0
|
if (patch.position !== undefined) row.position = Number(patch.position) || 0
|
||||||
|
if (patch.hoist !== undefined) row.hoist = !!patch.hoist
|
||||||
row.updatedAt = now()
|
row.updatedAt = now()
|
||||||
await this.store.insert(ROLES_COLLECTION, row)
|
await this.store.insert(ROLES_COLLECTION, row)
|
||||||
return row
|
return row
|
||||||
|
|||||||
Reference in New Issue
Block a user