From 7ef7f575a475d10d11503bcde4a27f5b45b6f9b2 Mon Sep 17 00:00:00 2001 From: lqvp <183242690+lqvp@users.noreply.github.com> Date: Sun, 22 Dec 2024 01:54:39 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E3=83=AA=E3=82=A2=E3=82=AF?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E7=B5=B1=E8=A8=88=E3=82=92?= =?UTF-8?q?=E8=A6=8B=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/src/server/api/endpoint-list.ts | 1 + .../server/api/endpoints/reactions-stat.ts | 78 ++++++++++++ packages/frontend/src/navbar.ts | 5 + .../frontend/src/pages/reactions-stat.vue | 111 ++++++++++++++++++ packages/frontend/src/router/definition.ts | 4 + packages/misskey-js/etc/misskey-js.api.md | 8 ++ .../misskey-js/src/autogen/apiClientJSDoc.ts | 11 ++ packages/misskey-js/src/autogen/endpoint.ts | 3 + packages/misskey-js/src/autogen/entities.ts | 2 + packages/misskey-js/src/autogen/types.ts | 66 +++++++++++ 10 files changed, 289 insertions(+) create mode 100644 packages/backend/src/server/api/endpoints/reactions-stat.ts create mode 100644 packages/frontend/src/pages/reactions-stat.vue diff --git a/packages/backend/src/server/api/endpoint-list.ts b/packages/backend/src/server/api/endpoint-list.ts index 28f7cfea04..40ddcc7182 100644 --- a/packages/backend/src/server/api/endpoint-list.ts +++ b/packages/backend/src/server/api/endpoint-list.ts @@ -339,6 +339,7 @@ export * as 'pages/update' from './endpoints/pages/update.js'; export * as 'ping' from './endpoints/ping.js'; export * as 'pinned-users' from './endpoints/pinned-users.js'; export * as 'promo/read' from './endpoints/promo/read.js'; +export * as 'reactions-stat' from './endpoints/reactions-stat.js'; export * as 'renote-mute/create' from './endpoints/renote-mute/create.js'; export * as 'renote-mute/delete' from './endpoints/renote-mute/delete.js'; export * as 'renote-mute/list' from './endpoints/renote-mute/list.js'; diff --git a/packages/backend/src/server/api/endpoints/reactions-stat.ts b/packages/backend/src/server/api/endpoints/reactions-stat.ts new file mode 100644 index 0000000000..313ea4b69a --- /dev/null +++ b/packages/backend/src/server/api/endpoints/reactions-stat.ts @@ -0,0 +1,78 @@ +/* + * SPDX-FileCopyrightText: lqvp + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Inject, Injectable } from '@nestjs/common'; +import { Endpoint } from '@/server/api/endpoint-base.js'; +import type { NoteReactionsRepository } from '@/models/_.js'; +import { DI } from '@/di-symbols.js'; + +export const meta = { + tags: ['meta'], + + requireCredential: true, + kind: 'read:account', + + res: { + type: 'array', + items: { + type: 'object', + properties: { + reaction: { + type: 'string', + optional: false, + }, + count: { + type: 'number', + optional: false, + }, + }, + }, + }, + + errors: { + noSuchUser: { + message: 'No such user.', + code: 'NO_SUCH_USER', + id: '27e494ba-2ac2-48e8-893b-10d4d8c2387b', + }, + }, +} as const; + +export const paramDef = { + type: 'object', + properties: { + site: { type: 'boolean', default: false }, + }, + required: [], +} as const; + +@Injectable() +export default class extends Endpoint { // eslint-disable-line import/no-default-export + constructor( + @Inject(DI.noteReactionsRepository) + private noteReactionsRepository: NoteReactionsRepository, + ) { + super(meta, paramDef, async (ps, me) => { + const query = + this.noteReactionsRepository.createQueryBuilder('nr') + .select('nr.reaction', 'reaction') + .addSelect('count(nr.id)', 'count') + .groupBy('nr.reaction') + .orderBy('count', 'DESC') + .limit(100); + + if (!ps.site) { + query.where('nr.userId = :id', { id: me.id }); + } + + const res = await query.getRawMany(); + + return res.map(x => ({ + reaction: x.reaction, + count: x.count, + })); + }); + } +} diff --git a/packages/frontend/src/navbar.ts b/packages/frontend/src/navbar.ts index 096d404a57..768585bc9a 100644 --- a/packages/frontend/src/navbar.ts +++ b/packages/frontend/src/navbar.ts @@ -176,6 +176,11 @@ export const navbarItemDef = reactive({ show: computed(() => $i != null), to: `/@${$i?.username}`, }, + reactionStat: { + title: i18n.ts.reactionsStat, + icon: 'ti ti-chart-bar', + to: '/reactions-stat', + }, cacheClear: { title: i18n.ts.clearCache, icon: 'ti ti-trash', diff --git a/packages/frontend/src/pages/reactions-stat.vue b/packages/frontend/src/pages/reactions-stat.vue new file mode 100644 index 0000000000..70ad255de4 --- /dev/null +++ b/packages/frontend/src/pages/reactions-stat.vue @@ -0,0 +1,111 @@ + + + + + + + diff --git a/packages/frontend/src/router/definition.ts b/packages/frontend/src/router/definition.ts index 732b209a36..0c39a292a2 100644 --- a/packages/frontend/src/router/definition.ts +++ b/packages/frontend/src/router/definition.ts @@ -577,6 +577,10 @@ const routes: RouteDef[] = [{ }, { path: '/timeline', component: page(() => import('@/pages/timeline.vue')), +}, { + path: '/reactions-stat', + component: page(() => import('@/pages/reactions-stat.vue')), + loginRequired: true, }, { name: 'index', path: '/', diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index ac7babb250..2064c81bbd 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -1724,6 +1724,8 @@ declare namespace entities { PingResponse, PinnedUsersResponse, PromoReadRequest, + ReactionsStatRequest, + ReactionsStatResponse, RenoteMuteCreateRequest, RenoteMuteDeleteRequest, RenoteMuteListRequest, @@ -2937,6 +2939,12 @@ type QueueStats = { // @public (undocumented) type QueueStatsLog = QueueStats[]; +// @public (undocumented) +type ReactionsStatRequest = operations['reactions-stat']['requestBody']['content']['application/json']; + +// @public (undocumented) +type ReactionsStatResponse = operations['reactions-stat']['responses']['200']['content']['application/json']; + // @public (undocumented) type RenoteMuteCreateRequest = operations['renote-mute___create']['requestBody']['content']['application/json']; diff --git a/packages/misskey-js/src/autogen/apiClientJSDoc.ts b/packages/misskey-js/src/autogen/apiClientJSDoc.ts index 6bace3924c..c767e30b81 100644 --- a/packages/misskey-js/src/autogen/apiClientJSDoc.ts +++ b/packages/misskey-js/src/autogen/apiClientJSDoc.ts @@ -3671,6 +3671,17 @@ declare module '../api.js' { credential?: string | null, ): Promise>; + /** + * No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + request( + endpoint: E, + params: P, + credential?: string | null, + ): Promise>; + /** * No description provided. * diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts index a9903b9139..00a971014c 100644 --- a/packages/misskey-js/src/autogen/endpoint.ts +++ b/packages/misskey-js/src/autogen/endpoint.ts @@ -489,6 +489,8 @@ import type { PingResponse, PinnedUsersResponse, PromoReadRequest, + ReactionsStatRequest, + ReactionsStatResponse, RenoteMuteCreateRequest, RenoteMuteDeleteRequest, RenoteMuteListRequest, @@ -915,6 +917,7 @@ export type Endpoints = { 'ping': { req: EmptyRequest; res: PingResponse }; 'pinned-users': { req: EmptyRequest; res: PinnedUsersResponse }; 'promo/read': { req: PromoReadRequest; res: EmptyResponse }; + 'reactions-stat': { req: ReactionsStatRequest; res: ReactionsStatResponse }; 'renote-mute/create': { req: RenoteMuteCreateRequest; res: EmptyResponse }; 'renote-mute/delete': { req: RenoteMuteDeleteRequest; res: EmptyResponse }; 'renote-mute/list': { req: RenoteMuteListRequest; res: RenoteMuteListResponse }; diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts index b7639abca8..c2e97d8e11 100644 --- a/packages/misskey-js/src/autogen/entities.ts +++ b/packages/misskey-js/src/autogen/entities.ts @@ -492,6 +492,8 @@ export type PagesUpdateRequest = operations['pages___update']['requestBody']['co export type PingResponse = operations['ping']['responses']['200']['content']['application/json']; export type PinnedUsersResponse = operations['pinned-users']['responses']['200']['content']['application/json']; export type PromoReadRequest = operations['promo___read']['requestBody']['content']['application/json']; +export type ReactionsStatRequest = operations['reactions-stat']['requestBody']['content']['application/json']; +export type ReactionsStatResponse = operations['reactions-stat']['responses']['200']['content']['application/json']; export type RenoteMuteCreateRequest = operations['renote-mute___create']['requestBody']['content']['application/json']; export type RenoteMuteDeleteRequest = operations['renote-mute___delete']['requestBody']['content']['application/json']; export type RenoteMuteListRequest = operations['renote-mute___list']['requestBody']['content']['application/json']; diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index e42a163288..c221947493 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -3176,6 +3176,15 @@ export type paths = { */ post: operations['promo___read']; }; + '/reactions-stat': { + /** + * reactions-stat + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + post: operations['reactions-stat']; + }; '/renote-mute/create': { /** * renote-mute/create @@ -24848,6 +24857,63 @@ export type operations = { }; }; }; + /** + * reactions-stat + * @description No description provided. + * + * **Credential required**: *Yes* / **Permission**: *read:account* + */ + 'reactions-stat': { + requestBody: { + content: { + 'application/json': { + /** @default false */ + site?: boolean; + }; + }; + }; + responses: { + /** @description OK (with results) */ + 200: { + content: { + 'application/json': { + reaction: string; + count: number; + }[]; + }; + }; + /** @description Client error */ + 400: { + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Authentication error */ + 401: { + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Forbidden error */ + 403: { + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description I'm Ai */ + 418: { + content: { + 'application/json': components['schemas']['Error']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['Error']; + }; + }; + }; + }; /** * renote-mute/create * @description No description provided. From 1fd5ebc832881fc022234d5bfdfd122dd46279be Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:08:57 +0900 Subject: [PATCH 2/5] stat -> stats --- packages/backend/src/server/api/endpoint-list.ts | 2 +- .../{reactions-stat.ts => reactions-stats.ts} | 0 .../pages/{reactions-stat.vue => reactions-stats.vue} | 6 +++--- packages/frontend/src/router/definition.ts | 4 ++-- packages/misskey-js/etc/misskey-js.api.md | 8 ++++---- packages/misskey-js/src/autogen/apiClientJSDoc.ts | 2 +- packages/misskey-js/src/autogen/endpoint.ts | 6 +++--- packages/misskey-js/src/autogen/entities.ts | 4 ++-- packages/misskey-js/src/autogen/types.ts | 10 +++++----- 9 files changed, 21 insertions(+), 21 deletions(-) rename packages/backend/src/server/api/endpoints/{reactions-stat.ts => reactions-stats.ts} (100%) rename packages/frontend/src/pages/{reactions-stat.vue => reactions-stats.vue} (94%) diff --git a/packages/backend/src/server/api/endpoint-list.ts b/packages/backend/src/server/api/endpoint-list.ts index 40ddcc7182..aa4dfc0aa1 100644 --- a/packages/backend/src/server/api/endpoint-list.ts +++ b/packages/backend/src/server/api/endpoint-list.ts @@ -339,7 +339,7 @@ export * as 'pages/update' from './endpoints/pages/update.js'; export * as 'ping' from './endpoints/ping.js'; export * as 'pinned-users' from './endpoints/pinned-users.js'; export * as 'promo/read' from './endpoints/promo/read.js'; -export * as 'reactions-stat' from './endpoints/reactions-stat.js'; +export * as 'reactions-stats' from './endpoints/reactions-stats.js'; export * as 'renote-mute/create' from './endpoints/renote-mute/create.js'; export * as 'renote-mute/delete' from './endpoints/renote-mute/delete.js'; export * as 'renote-mute/list' from './endpoints/renote-mute/list.js'; diff --git a/packages/backend/src/server/api/endpoints/reactions-stat.ts b/packages/backend/src/server/api/endpoints/reactions-stats.ts similarity index 100% rename from packages/backend/src/server/api/endpoints/reactions-stat.ts rename to packages/backend/src/server/api/endpoints/reactions-stats.ts diff --git a/packages/frontend/src/pages/reactions-stat.vue b/packages/frontend/src/pages/reactions-stats.vue similarity index 94% rename from packages/frontend/src/pages/reactions-stat.vue rename to packages/frontend/src/pages/reactions-stats.vue index 70ad255de4..ead00c230b 100644 --- a/packages/frontend/src/pages/reactions-stat.vue +++ b/packages/frontend/src/pages/reactions-stats.vue @@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only - {{ i18n.ts.reactionsStatDescription }} + {{ i18n.ts.reactionsStatsDescription }}
@@ -53,7 +53,7 @@ watch(tab, async () => { if (tab.value === 'site' && serverReactionsListMfm.value !== 'Loading...') { return; } if (tab.value !== 'site' && myReactionsListMfm.value !== 'Loading...') { return; } - const reactionsList = await misskeyApi('reactions-stat', { site: tab.value === 'site' }); + const reactionsList = await misskeyApi('reactions-stats', { site: tab.value === 'site' }); const res = reactionsList.map((x) => `${x.reaction} ${x.count}`).join('\n'); @@ -80,7 +80,7 @@ const headerTabs = computed(() => [{ }]); definePageMetadata(() => ({ - title: i18n.ts.reactionsStat, + title: i18n.ts.reactionsStats, icon: 'ti ti-chart-bar', })); diff --git a/packages/frontend/src/router/definition.ts b/packages/frontend/src/router/definition.ts index 0c39a292a2..774d7071da 100644 --- a/packages/frontend/src/router/definition.ts +++ b/packages/frontend/src/router/definition.ts @@ -578,8 +578,8 @@ const routes: RouteDef[] = [{ path: '/timeline', component: page(() => import('@/pages/timeline.vue')), }, { - path: '/reactions-stat', - component: page(() => import('@/pages/reactions-stat.vue')), + path: '/reactions-stats', + component: page(() => import('@/pages/reactions-stats.vue')), loginRequired: true, }, { name: 'index', diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index 2064c81bbd..176c3ca948 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -1724,8 +1724,8 @@ declare namespace entities { PingResponse, PinnedUsersResponse, PromoReadRequest, - ReactionsStatRequest, - ReactionsStatResponse, + ReactionsStatsRequest, + ReactionsStatsResponse, RenoteMuteCreateRequest, RenoteMuteDeleteRequest, RenoteMuteListRequest, @@ -2940,10 +2940,10 @@ type QueueStats = { type QueueStatsLog = QueueStats[]; // @public (undocumented) -type ReactionsStatRequest = operations['reactions-stat']['requestBody']['content']['application/json']; +type ReactionsStatsRequest = operations['reactions-stats']['requestBody']['content']['application/json']; // @public (undocumented) -type ReactionsStatResponse = operations['reactions-stat']['responses']['200']['content']['application/json']; +type ReactionsStatsResponse = operations['reactions-stats']['responses']['200']['content']['application/json']; // @public (undocumented) type RenoteMuteCreateRequest = operations['renote-mute___create']['requestBody']['content']['application/json']; diff --git a/packages/misskey-js/src/autogen/apiClientJSDoc.ts b/packages/misskey-js/src/autogen/apiClientJSDoc.ts index c767e30b81..4f5ac5b157 100644 --- a/packages/misskey-js/src/autogen/apiClientJSDoc.ts +++ b/packages/misskey-js/src/autogen/apiClientJSDoc.ts @@ -3676,7 +3676,7 @@ declare module '../api.js' { * * **Credential required**: *Yes* / **Permission**: *read:account* */ - request( + request( endpoint: E, params: P, credential?: string | null, diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts index 00a971014c..7634358b9c 100644 --- a/packages/misskey-js/src/autogen/endpoint.ts +++ b/packages/misskey-js/src/autogen/endpoint.ts @@ -489,8 +489,8 @@ import type { PingResponse, PinnedUsersResponse, PromoReadRequest, - ReactionsStatRequest, - ReactionsStatResponse, + ReactionsStatsRequest, + ReactionsStatsResponse, RenoteMuteCreateRequest, RenoteMuteDeleteRequest, RenoteMuteListRequest, @@ -917,7 +917,7 @@ export type Endpoints = { 'ping': { req: EmptyRequest; res: PingResponse }; 'pinned-users': { req: EmptyRequest; res: PinnedUsersResponse }; 'promo/read': { req: PromoReadRequest; res: EmptyResponse }; - 'reactions-stat': { req: ReactionsStatRequest; res: ReactionsStatResponse }; + 'reactions-stats': { req: ReactionsStatsRequest; res: ReactionsStatsResponse }; 'renote-mute/create': { req: RenoteMuteCreateRequest; res: EmptyResponse }; 'renote-mute/delete': { req: RenoteMuteDeleteRequest; res: EmptyResponse }; 'renote-mute/list': { req: RenoteMuteListRequest; res: RenoteMuteListResponse }; diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts index c2e97d8e11..01331cd75e 100644 --- a/packages/misskey-js/src/autogen/entities.ts +++ b/packages/misskey-js/src/autogen/entities.ts @@ -492,8 +492,8 @@ export type PagesUpdateRequest = operations['pages___update']['requestBody']['co export type PingResponse = operations['ping']['responses']['200']['content']['application/json']; export type PinnedUsersResponse = operations['pinned-users']['responses']['200']['content']['application/json']; export type PromoReadRequest = operations['promo___read']['requestBody']['content']['application/json']; -export type ReactionsStatRequest = operations['reactions-stat']['requestBody']['content']['application/json']; -export type ReactionsStatResponse = operations['reactions-stat']['responses']['200']['content']['application/json']; +export type ReactionsStatsRequest = operations['reactions-stats']['requestBody']['content']['application/json']; +export type ReactionsStatsResponse = operations['reactions-stats']['responses']['200']['content']['application/json']; export type RenoteMuteCreateRequest = operations['renote-mute___create']['requestBody']['content']['application/json']; export type RenoteMuteDeleteRequest = operations['renote-mute___delete']['requestBody']['content']['application/json']; export type RenoteMuteListRequest = operations['renote-mute___list']['requestBody']['content']['application/json']; diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index c221947493..55a082e786 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -3176,14 +3176,14 @@ export type paths = { */ post: operations['promo___read']; }; - '/reactions-stat': { + '/reactions-stats': { /** - * reactions-stat + * reactions-stats * @description No description provided. * * **Credential required**: *Yes* / **Permission**: *read:account* */ - post: operations['reactions-stat']; + post: operations['reactions-stats']; }; '/renote-mute/create': { /** @@ -24858,12 +24858,12 @@ export type operations = { }; }; /** - * reactions-stat + * reactions-stats * @description No description provided. * * **Credential required**: *Yes* / **Permission**: *read:account* */ - 'reactions-stat': { + 'reactions-stats': { requestBody: { content: { 'application/json': { From f633cfd3020b8bb2f15658d653a5e180819ff516 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:09:21 +0900 Subject: [PATCH 3/5] missing locales --- locales/index.d.ts | 8 ++++++++ locales/ja-JP.yml | 2 ++ 2 files changed, 10 insertions(+) diff --git a/locales/index.d.ts b/locales/index.d.ts index a0540fd228..69069de297 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5254,6 +5254,14 @@ export interface Locale extends ILocale { * このサーバーは連合が無効化されています。他のサーバーのユーザーとやり取りすることはできません。 */ "federationDisabled": string; + /** + * リアクション統計 + */ + "reactionStats": string; + /** + * 最も使用された絵文字リアクション上位100件を表示します + */ + "reactionsStatsDescription": string; "_accountSettings": { /** * コンテンツの表示にログインを必須にする diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index a578704434..5495175ed1 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1309,6 +1309,8 @@ availableRoles: "利用可能なロール" acknowledgeNotesAndEnable: "注意事項を理解した上でオンにします。" federationSpecified: "このサーバーはホワイトリスト連合で運用されています。管理者が指定したサーバー以外とやり取りすることはできません。" federationDisabled: "このサーバーは連合が無効化されています。他のサーバーのユーザーとやり取りすることはできません。" +reactionStats: "リアクション統計" +reactionsStatsDescription: "最も使用された絵文字リアクション上位100件を表示します" _accountSettings: requireSigninToViewContents: "コンテンツの表示にログインを必須にする" From cafba63ddba3f4aea1bfdd61d3f19bfea481fada Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:11:56 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E8=A1=A8=E8=A8=98=E6=8F=BA=E3=82=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/index.d.ts | 2 +- locales/ja-JP.yml | 2 +- packages/backend/src/server/api/endpoint-list.ts | 2 +- .../{reactions-stats.ts => reaction-stats.ts} | 0 packages/frontend/src/navbar.ts | 6 +++--- .../pages/{reactions-stats.vue => reaction-stats.vue} | 6 +++--- packages/frontend/src/router/definition.ts | 2 +- packages/misskey-js/etc/misskey-js.api.md | 8 ++++---- packages/misskey-js/src/autogen/apiClientJSDoc.ts | 2 +- packages/misskey-js/src/autogen/endpoint.ts | 6 +++--- packages/misskey-js/src/autogen/entities.ts | 4 ++-- packages/misskey-js/src/autogen/types.ts | 10 +++++----- 12 files changed, 25 insertions(+), 25 deletions(-) rename packages/backend/src/server/api/endpoints/{reactions-stats.ts => reaction-stats.ts} (100%) rename packages/frontend/src/pages/{reactions-stats.vue => reaction-stats.vue} (94%) diff --git a/locales/index.d.ts b/locales/index.d.ts index 69069de297..60ba3499ae 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -5261,7 +5261,7 @@ export interface Locale extends ILocale { /** * 最も使用された絵文字リアクション上位100件を表示します */ - "reactionsStatsDescription": string; + "reactionStatsDescription": string; "_accountSettings": { /** * コンテンツの表示にログインを必須にする diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 5495175ed1..45e28f2ba3 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1310,7 +1310,7 @@ acknowledgeNotesAndEnable: "注意事項を理解した上でオンにします federationSpecified: "このサーバーはホワイトリスト連合で運用されています。管理者が指定したサーバー以外とやり取りすることはできません。" federationDisabled: "このサーバーは連合が無効化されています。他のサーバーのユーザーとやり取りすることはできません。" reactionStats: "リアクション統計" -reactionsStatsDescription: "最も使用された絵文字リアクション上位100件を表示します" +reactionStatsDescription: "最も使用された絵文字リアクション上位100件を表示します" _accountSettings: requireSigninToViewContents: "コンテンツの表示にログインを必須にする" diff --git a/packages/backend/src/server/api/endpoint-list.ts b/packages/backend/src/server/api/endpoint-list.ts index aa4dfc0aa1..d997c5018c 100644 --- a/packages/backend/src/server/api/endpoint-list.ts +++ b/packages/backend/src/server/api/endpoint-list.ts @@ -339,7 +339,7 @@ export * as 'pages/update' from './endpoints/pages/update.js'; export * as 'ping' from './endpoints/ping.js'; export * as 'pinned-users' from './endpoints/pinned-users.js'; export * as 'promo/read' from './endpoints/promo/read.js'; -export * as 'reactions-stats' from './endpoints/reactions-stats.js'; +export * as 'reaction-stats' from './endpoints/reaction-stats.js'; export * as 'renote-mute/create' from './endpoints/renote-mute/create.js'; export * as 'renote-mute/delete' from './endpoints/renote-mute/delete.js'; export * as 'renote-mute/list' from './endpoints/renote-mute/list.js'; diff --git a/packages/backend/src/server/api/endpoints/reactions-stats.ts b/packages/backend/src/server/api/endpoints/reaction-stats.ts similarity index 100% rename from packages/backend/src/server/api/endpoints/reactions-stats.ts rename to packages/backend/src/server/api/endpoints/reaction-stats.ts diff --git a/packages/frontend/src/navbar.ts b/packages/frontend/src/navbar.ts index 768585bc9a..404618967e 100644 --- a/packages/frontend/src/navbar.ts +++ b/packages/frontend/src/navbar.ts @@ -176,10 +176,10 @@ export const navbarItemDef = reactive({ show: computed(() => $i != null), to: `/@${$i?.username}`, }, - reactionStat: { - title: i18n.ts.reactionsStat, + reactionStats: { + title: i18n.ts.reactionStats, icon: 'ti ti-chart-bar', - to: '/reactions-stat', + to: '/reaction-stats', }, cacheClear: { title: i18n.ts.clearCache, diff --git a/packages/frontend/src/pages/reactions-stats.vue b/packages/frontend/src/pages/reaction-stats.vue similarity index 94% rename from packages/frontend/src/pages/reactions-stats.vue rename to packages/frontend/src/pages/reaction-stats.vue index ead00c230b..0bfaa3df13 100644 --- a/packages/frontend/src/pages/reactions-stats.vue +++ b/packages/frontend/src/pages/reaction-stats.vue @@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only - {{ i18n.ts.reactionsStatsDescription }} + {{ i18n.ts.reactionStatsDescription }}
@@ -53,7 +53,7 @@ watch(tab, async () => { if (tab.value === 'site' && serverReactionsListMfm.value !== 'Loading...') { return; } if (tab.value !== 'site' && myReactionsListMfm.value !== 'Loading...') { return; } - const reactionsList = await misskeyApi('reactions-stats', { site: tab.value === 'site' }); + const reactionsList = await misskeyApi('reaction-stats', { site: tab.value === 'site' }); const res = reactionsList.map((x) => `${x.reaction} ${x.count}`).join('\n'); @@ -80,7 +80,7 @@ const headerTabs = computed(() => [{ }]); definePageMetadata(() => ({ - title: i18n.ts.reactionsStats, + title: i18n.ts.reactionStats, icon: 'ti ti-chart-bar', })); diff --git a/packages/frontend/src/router/definition.ts b/packages/frontend/src/router/definition.ts index 774d7071da..c9f568fc04 100644 --- a/packages/frontend/src/router/definition.ts +++ b/packages/frontend/src/router/definition.ts @@ -579,7 +579,7 @@ const routes: RouteDef[] = [{ component: page(() => import('@/pages/timeline.vue')), }, { path: '/reactions-stats', - component: page(() => import('@/pages/reactions-stats.vue')), + component: page(() => import('@/pages/reaction-stats.vue')), loginRequired: true, }, { name: 'index', diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index 176c3ca948..ac671947c1 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -1724,8 +1724,8 @@ declare namespace entities { PingResponse, PinnedUsersResponse, PromoReadRequest, - ReactionsStatsRequest, - ReactionsStatsResponse, + ReactionStatsRequest, + ReactionStatsResponse, RenoteMuteCreateRequest, RenoteMuteDeleteRequest, RenoteMuteListRequest, @@ -2940,10 +2940,10 @@ type QueueStats = { type QueueStatsLog = QueueStats[]; // @public (undocumented) -type ReactionsStatsRequest = operations['reactions-stats']['requestBody']['content']['application/json']; +type ReactionStatsRequest = operations['reaction-stats']['requestBody']['content']['application/json']; // @public (undocumented) -type ReactionsStatsResponse = operations['reactions-stats']['responses']['200']['content']['application/json']; +type ReactionStatsResponse = operations['reaction-stats']['responses']['200']['content']['application/json']; // @public (undocumented) type RenoteMuteCreateRequest = operations['renote-mute___create']['requestBody']['content']['application/json']; diff --git a/packages/misskey-js/src/autogen/apiClientJSDoc.ts b/packages/misskey-js/src/autogen/apiClientJSDoc.ts index 4f5ac5b157..506279a0b0 100644 --- a/packages/misskey-js/src/autogen/apiClientJSDoc.ts +++ b/packages/misskey-js/src/autogen/apiClientJSDoc.ts @@ -3676,7 +3676,7 @@ declare module '../api.js' { * * **Credential required**: *Yes* / **Permission**: *read:account* */ - request( + request( endpoint: E, params: P, credential?: string | null, diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts index 7634358b9c..ea4bde9797 100644 --- a/packages/misskey-js/src/autogen/endpoint.ts +++ b/packages/misskey-js/src/autogen/endpoint.ts @@ -489,8 +489,8 @@ import type { PingResponse, PinnedUsersResponse, PromoReadRequest, - ReactionsStatsRequest, - ReactionsStatsResponse, + ReactionStatsRequest, + ReactionStatsResponse, RenoteMuteCreateRequest, RenoteMuteDeleteRequest, RenoteMuteListRequest, @@ -917,7 +917,7 @@ export type Endpoints = { 'ping': { req: EmptyRequest; res: PingResponse }; 'pinned-users': { req: EmptyRequest; res: PinnedUsersResponse }; 'promo/read': { req: PromoReadRequest; res: EmptyResponse }; - 'reactions-stats': { req: ReactionsStatsRequest; res: ReactionsStatsResponse }; + 'reaction-stats': { req: ReactionStatsRequest; res: ReactionStatsResponse }; 'renote-mute/create': { req: RenoteMuteCreateRequest; res: EmptyResponse }; 'renote-mute/delete': { req: RenoteMuteDeleteRequest; res: EmptyResponse }; 'renote-mute/list': { req: RenoteMuteListRequest; res: RenoteMuteListResponse }; diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts index 01331cd75e..f1285dc49b 100644 --- a/packages/misskey-js/src/autogen/entities.ts +++ b/packages/misskey-js/src/autogen/entities.ts @@ -492,8 +492,8 @@ export type PagesUpdateRequest = operations['pages___update']['requestBody']['co export type PingResponse = operations['ping']['responses']['200']['content']['application/json']; export type PinnedUsersResponse = operations['pinned-users']['responses']['200']['content']['application/json']; export type PromoReadRequest = operations['promo___read']['requestBody']['content']['application/json']; -export type ReactionsStatsRequest = operations['reactions-stats']['requestBody']['content']['application/json']; -export type ReactionsStatsResponse = operations['reactions-stats']['responses']['200']['content']['application/json']; +export type ReactionStatsRequest = operations['reaction-stats']['requestBody']['content']['application/json']; +export type ReactionStatsResponse = operations['reaction-stats']['responses']['200']['content']['application/json']; export type RenoteMuteCreateRequest = operations['renote-mute___create']['requestBody']['content']['application/json']; export type RenoteMuteDeleteRequest = operations['renote-mute___delete']['requestBody']['content']['application/json']; export type RenoteMuteListRequest = operations['renote-mute___list']['requestBody']['content']['application/json']; diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index 55a082e786..a92bb183c4 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -3176,14 +3176,14 @@ export type paths = { */ post: operations['promo___read']; }; - '/reactions-stats': { + '/reaction-stats': { /** - * reactions-stats + * reaction-stats * @description No description provided. * * **Credential required**: *Yes* / **Permission**: *read:account* */ - post: operations['reactions-stats']; + post: operations['reaction-stats']; }; '/renote-mute/create': { /** @@ -24858,12 +24858,12 @@ export type operations = { }; }; /** - * reactions-stats + * reaction-stats * @description No description provided. * * **Credential required**: *Yes* / **Permission**: *read:account* */ - 'reactions-stats': { + 'reaction-stats': { requestBody: { content: { 'application/json': { From 0b47e8c74601860d1ce04429237b0b95e61b3bfb Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:34:14 +0900 Subject: [PATCH 5/5] :v: --- packages/frontend/src/pages/reaction-stats.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/pages/reaction-stats.vue b/packages/frontend/src/pages/reaction-stats.vue index 0bfaa3df13..9164a6dc44 100644 --- a/packages/frontend/src/pages/reaction-stats.vue +++ b/packages/frontend/src/pages/reaction-stats.vue @@ -37,10 +37,10 @@ import { computed, ref, watch } from 'vue'; import { misskeyApi } from '@/scripts/misskey-api'; import { i18n } from '@/i18n.js'; import { definePageMetadata } from '@/scripts/page-metadata.js'; -import { signinRequired } from '@/account'; +import { signinRequired } from '@/account.js'; import MkInfo from '@/components/MkInfo.vue'; import MkButton from '@/components/MkButton.vue'; -import { copyToClipboard } from '@/scripts/copy-to-clipboard'; +import { copyToClipboard } from '@/scripts/copy-to-clipboard.js'; const $i = signinRequired();