summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-10 12:13:16 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-05-16 17:39:43 -0400
commit228e522081d14baaf1c0e265ddee2ab25bc4a8fd (patch)
treef6445b0f4c26cf8c0bd3e6de4e6a4e523e081ac7 /packages
parentadd "accent" styling to MkButton (diff)
downloadsharkey-228e522081d14baaf1c0e265ddee2ab25bc4a8fd.tar.gz
sharkey-228e522081d14baaf1c0e265ddee2ab25bc4a8fd.tar.bz2
sharkey-228e522081d14baaf1c0e265ddee2ab25bc4a8fd.zip
add "followStats" property to admin/show-user response
Diffstat (limited to 'packages')
-rw-r--r--packages/backend/src/server/api/endpoints/admin/show-user.ts39
-rw-r--r--packages/misskey-js/src/autogen/types.ts8
2 files changed, 47 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts
index 6dbfbf9d9a..1579719246 100644
--- a/packages/backend/src/server/api/endpoints/admin/show-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts
@@ -12,6 +12,7 @@ import { RoleEntityService } from '@/core/entities/RoleEntityService.js';
import { IdService } from '@/core/IdService.js';
import { notificationRecieveConfig } from '@/models/json-schema/user.js';
import { isSystemAccount } from '@/misc/is-system-account.js';
+import { CacheService } from '@/core/CacheService.js';
export const meta = {
tags: ['admin'],
@@ -186,6 +187,36 @@ export const meta = {
},
},
},
+ followStats: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ totalFollowing: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ totalFollowers: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ localFollowing: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ localFollowers: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ remoteFollowing: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ remoteFollowers: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ },
+ },
},
},
} as const;
@@ -213,6 +244,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private roleService: RoleService,
private roleEntityService: RoleEntityService,
private idService: IdService,
+ private readonly cacheService: CacheService,
) {
super(meta, paramDef, async (ps, me) => {
const [user, profile] = await Promise.all([
@@ -237,6 +269,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
const roleAssigns = await this.roleService.getUserAssigns(user.id);
const roles = await this.roleService.getUserRoles(user.id);
+ const followStats = await this.cacheService.getFollowStats(user.id);
+
return {
email: profile.email,
emailVerified: profile.emailVerified,
@@ -269,6 +303,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
expiresAt: a.expiresAt ? a.expiresAt.toISOString() : null,
roleId: a.roleId,
})),
+ followStats: {
+ ...followStats,
+ totalFollowers: Math.max(user.followersCount, followStats.localFollowers + followStats.remoteFollowers),
+ totalFollowing: Math.max(user.followingCount, followStats.localFollowing + followStats.remoteFollowing),
+ },
};
});
}
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 778b00c66d..dee803a9e6 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -11222,6 +11222,14 @@ export type operations = {
expiresAt: string | null;
roleId: string;
})[];
+ followStats: {
+ totalFollowing: number;
+ totalFollowers: number;
+ localFollowing: number;
+ localFollowers: number;
+ remoteFollowing: number;
+ remoteFollowers: number;
+ };
};
};
};