diff --git a/locales/index.d.ts b/locales/index.d.ts index c25ce18701..cad675a45b 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -1978,14 +1978,6 @@ export interface Locale extends ILocale { * クリップボードのテキストが長いです。テキストファイルとして添付しますか? */ "attachAsFileQuestion": string; - /** - * まだチャットはありません - */ - "noMessagesYet": string; - /** - * 新しいメッセージがあります - */ - "newMessageExists": string; /** * メッセージに添付できるファイルはひとつです */ @@ -5359,6 +5351,14 @@ export interface Locale extends ILocale { */ "chat": string; "_chat": { + /** + * まだメッセージはありません + */ + "noMessagesYet": string; + /** + * 新しいメッセージ + */ + "newMessage": string; /** * 個人チャット */ diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 2d358fcfac..d25efe198b 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -490,8 +490,6 @@ noteOf: "{user}のノート" quoteAttached: "引用付き" quoteQuestion: "引用として添付しますか?" attachAsFileQuestion: "クリップボードのテキストが長いです。テキストファイルとして添付しますか?" -noMessagesYet: "まだチャットはありません" -newMessageExists: "新しいメッセージがあります" onlyOneFileCanBeAttached: "メッセージに添付できるファイルはひとつです" signinRequired: "続行する前に、登録またはログインが必要です" signinOrContinueOnRemote: "続行するには、お使いのサーバーに移動するか、このサーバーに登録・ログインする必要があります" @@ -1337,6 +1335,8 @@ information: "情報" chat: "チャット" _chat: + noMessagesYet: "まだメッセージはありません" + newMessage: "新しいメッセージ" individualChat: "個人チャット" individualChat_description: "特定ユーザーとの一対一のチャットができます。" roomChat: "ルームチャット" diff --git a/packages/backend/src/core/ChatService.ts b/packages/backend/src/core/ChatService.ts index dde7c77787..c34d1f0aec 100644 --- a/packages/backend/src/core/ChatService.ts +++ b/packages/backend/src/core/ChatService.ts @@ -90,27 +90,27 @@ export class ChatService { if (!otherApprovedMe) { if (toUser.chatScope === 'none') { - throw new Error('recipient is cannot chat'); + throw new Error('recipient is cannot chat (none)'); } else if (toUser.chatScope === 'followers') { const isFollower = await this.userFollowingService.isFollowing(fromUser.id, toUser.id); if (!isFollower) { - throw new Error('recipient is cannot chat'); + throw new Error('recipient is cannot chat (followers)'); } } else if (toUser.chatScope === 'following') { const isFollowing = await this.userFollowingService.isFollowing(toUser.id, fromUser.id); if (!isFollowing) { - throw new Error('recipient is cannot chat'); + throw new Error('recipient is cannot chat (following)'); } } else if (toUser.chatScope === 'mutual') { const isMutual = await this.userFollowingService.isMutual(fromUser.id, toUser.id); if (!isMutual) { - throw new Error('recipient is cannot chat'); + throw new Error('recipient is cannot chat (mutual)'); } } } - if ((await this.roleService.getUserPolicies(toUser.id)).canChat) { - throw new Error('recipient is cannot chat'); + if (!(await this.roleService.getUserPolicies(toUser.id)).canChat) { + throw new Error('recipient is cannot chat (policy)'); } const blocked = await this.userBlockingService.checkBlocked(toUser.id, fromUser.id); diff --git a/packages/backend/src/models/RepositoryModule.ts b/packages/backend/src/models/RepositoryModule.ts index 584c9eb0d2..e2ac21c500 100644 --- a/packages/backend/src/models/RepositoryModule.ts +++ b/packages/backend/src/models/RepositoryModule.ts @@ -292,7 +292,7 @@ const $swSubscriptionsRepository: Provider = { const $systemAccountsRepository: Provider = { provide: DI.systemAccountsRepository, - useFactory: (db: DataSource) => db.getRepository(MiSystemAccount), + useFactory: (db: DataSource) => db.getRepository(MiSystemAccount).extend(miRepository as MiRepository), inject: [DI.db], }; @@ -310,7 +310,7 @@ const $abuseUserReportsRepository: Provider = { const $abuseReportNotificationRecipientRepository: Provider = { provide: DI.abuseReportNotificationRecipientRepository, - useFactory: (db: DataSource) => db.getRepository(MiAbuseReportNotificationRecipient), + useFactory: (db: DataSource) => db.getRepository(MiAbuseReportNotificationRecipient).extend(miRepository as MiRepository), inject: [DI.db], }; @@ -442,7 +442,7 @@ const $webhooksRepository: Provider = { const $systemWebhooksRepository: Provider = { provide: DI.systemWebhooksRepository, - useFactory: (db: DataSource) => db.getRepository(MiSystemWebhook), + useFactory: (db: DataSource) => db.getRepository(MiSystemWebhook).extend(miRepository as MiRepository), inject: [DI.db], }; @@ -514,7 +514,7 @@ const $chatRoomMembershipsRepository: Provider = { const $chatApprovalsRepository: Provider = { provide: DI.chatApprovalsRepository, - useFactory: (db: DataSource) => db.getRepository(MiChatApproval), + useFactory: (db: DataSource) => db.getRepository(MiChatApproval).extend(miRepository as MiRepository), inject: [DI.db], }; diff --git a/packages/backend/src/server/api/endpoints/chat/messages/create.ts b/packages/backend/src/server/api/endpoints/chat/messages/create.ts index 6ad100c116..c95da79a1b 100644 --- a/packages/backend/src/server/api/endpoints/chat/messages/create.ts +++ b/packages/backend/src/server/api/endpoints/chat/messages/create.ts @@ -125,9 +125,7 @@ export default class extends Endpoint { // eslint- throw err; }); - return await this.chatService.createMessage({ - fromUser: me, - toUser, + return await this.chatService.createMessage(me, toUser, { text: ps.text, file: file, }); diff --git a/packages/frontend/src/pages/chat/room.vue b/packages/frontend/src/pages/chat/room.vue index ab6ffabe06..d311a0e0bf 100644 --- a/packages/frontend/src/pages/chat/room.vue +++ b/packages/frontend/src/pages/chat/room.vue @@ -9,8 +9,14 @@ SPDX-License-Identifier: AGPL-3.0-only