Merge pull request #375
* fix(backend): Troubleshoot Messaging Not Working * cleanup imports
This commit is contained in:
parent
75948695cc
commit
4c298f3706
|
@ -9,13 +9,13 @@ import { DI } from '@/di-symbols.js';
|
|||
import type { Config } from '@/config.js';
|
||||
import type { MiDriveFile } from '@/models/DriveFile.js';
|
||||
import type { MiMessagingMessage } from '@/models/MessagingMessage.js';
|
||||
import type { MiNote } from '@/models/Note.js';
|
||||
import type { MiNote, IMentionedRemoteUsers } from '@/models/Note.js';
|
||||
import type { MiUser, MiRemoteUser } from '@/models/User.js';
|
||||
import type { MiUserGroup } from '@/models/UserGroup.js';
|
||||
import { QueueService } from '@/core/QueueService.js';
|
||||
import { toArray } from '@/misc/prelude/array.js';
|
||||
import { IdentifiableError } from '@/misc/identifiable-error.js';
|
||||
import type { MessagingMessagesRepository, MutingsRepository, UserGroupJoiningsRepository, UsersRepository } from '@/models/_.js';
|
||||
import type { MessagingMessagesRepository, MutingsRepository, UserGroupJoiningsRepository, UsersRepository, UserProfilesRepository } from '@/models/_.js';
|
||||
import { IdService } from '@/core/IdService.js';
|
||||
import { GlobalEventService } from '@/core/GlobalEventService.js';
|
||||
import { UserEntityService } from '@/core/entities/UserEntityService.js';
|
||||
|
@ -33,6 +33,9 @@ export class MessagingService {
|
|||
@Inject(DI.usersRepository)
|
||||
private usersRepository: UsersRepository,
|
||||
|
||||
@Inject(DI.userProfilesRepository)
|
||||
private userProfilesRepository: UserProfilesRepository,
|
||||
|
||||
@Inject(DI.messagingMessagesRepository)
|
||||
private messagingMessagesRepository: MessagingMessagesRepository,
|
||||
|
||||
|
@ -41,7 +44,6 @@ export class MessagingService {
|
|||
|
||||
@Inject(DI.mutingsRepository)
|
||||
private mutingsRepository: MutingsRepository,
|
||||
|
||||
private userEntityService: UserEntityService,
|
||||
private messagingMessageEntityService: MessagingMessageEntityService,
|
||||
private idService: IdService,
|
||||
|
@ -53,10 +55,12 @@ export class MessagingService {
|
|||
}
|
||||
|
||||
@bindThis
|
||||
public async createMessage(user: { id: MiUser['id']; host: MiUser['host']; }, recipientUser: MiUser | undefined, recipientGroup: MiUserGroup | undefined, text: string | null | undefined, file: MiDriveFile | null, uri?: string) {
|
||||
public async createMessage(user: { id: MiUser['id']; host: MiUser['host']; }, recipientUser: MiUser | null, recipientGroup: MiUserGroup | null, text: string | null | undefined, file: MiDriveFile | null, uri?: string) {
|
||||
const data = new Date();
|
||||
|
||||
const message = {
|
||||
id: this.idService.genId(),
|
||||
createdAt: new Date(),
|
||||
id: this.idService.genId(data),
|
||||
createdAt: data,
|
||||
fileId: file ? file.id : null,
|
||||
recipientId: recipientUser ? recipientUser.id : null,
|
||||
groupId: recipientGroup ? recipientGroup.id : null,
|
||||
|
@ -125,6 +129,10 @@ export class MessagingService {
|
|||
}, 2000);
|
||||
|
||||
if (recipientUser && this.userEntityService.isLocalUser(user) && this.userEntityService.isRemoteUser(recipientUser)) {
|
||||
const profiles = await this.userProfilesRepository.findBy({ userId: In([recipientUser.id]) });
|
||||
const profile = profiles.find(p => p.userId === recipientUser.id);
|
||||
const url = profile != null ? profile.url : null;
|
||||
|
||||
const note = {
|
||||
id: message.id,
|
||||
createdAt: message.createdAt,
|
||||
|
@ -132,12 +140,15 @@ export class MessagingService {
|
|||
text: message.text,
|
||||
userId: message.userId,
|
||||
visibility: 'specified',
|
||||
emojis: [{}],
|
||||
mentions: [recipientUser].map(u => u.id),
|
||||
mentionedRemoteUsers: JSON.stringify([recipientUser].map(u => ({
|
||||
uri: u.uri,
|
||||
url: url,
|
||||
username: u.username,
|
||||
host: u.host,
|
||||
}))),
|
||||
} as IMentionedRemoteUsers[0]
|
||||
))),
|
||||
} as MiNote;
|
||||
|
||||
const activity = this.apRendererService.addContext(this.apRendererService.renderCreate(await this.apRendererService.renderNote(note, false, true), note));
|
||||
|
|
|
@ -659,7 +659,7 @@ export class NoteCreateService implements OnApplicationShutdown {
|
|||
|
||||
//#region AP deliver
|
||||
if (this.userEntityService.isLocalUser(user)) {
|
||||
(async () => {
|
||||
await (async () => {
|
||||
const noteActivity = await this.renderNoteOrRenoteActivity(data, note);
|
||||
const dm = this.apDeliverManagerService.createDeliverManager(user, noteActivity);
|
||||
|
||||
|
@ -670,13 +670,13 @@ export class NoteCreateService implements OnApplicationShutdown {
|
|||
|
||||
// 投稿がリプライかつ投稿者がローカルユーザーかつリプライ先の投稿の投稿者がリモートユーザーなら配送
|
||||
if (data.reply && data.reply.userHost !== null) {
|
||||
const u = await this.usersRepository.findOneBy({ id: data.reply.userId });
|
||||
const u = await this.usersRepository.findOneBy({id: data.reply.userId});
|
||||
if (u && this.userEntityService.isRemoteUser(u)) dm.addDirectRecipe(u);
|
||||
}
|
||||
|
||||
// 投稿がRenoteかつ投稿者がローカルユーザーかつRenote元の投稿の投稿者がリモートユーザーなら配送
|
||||
if (data.renote && data.renote.userHost !== null) {
|
||||
const u = await this.usersRepository.findOneBy({ id: data.renote.userId });
|
||||
const u = await this.usersRepository.findOneBy({id: data.renote.userId});
|
||||
if (u && this.userEntityService.isRemoteUser(u)) dm.addDirectRecipe(u);
|
||||
}
|
||||
|
||||
|
|
|
@ -727,7 +727,7 @@ export class ApRendererService {
|
|||
* @param orderedItems attached objects (optional)
|
||||
*/
|
||||
@bindThis
|
||||
public renderOrderedCollection(id: string, totalItems: number, first?: string, last?: string, orderedItems?: IObject[]) {
|
||||
public renderOrderedCollection(id: string | null, totalItems: number, first?: string, last?: string, orderedItems?: IObject[]) {
|
||||
const page: any = {
|
||||
id,
|
||||
type: 'OrderedCollection',
|
||||
|
|
|
@ -294,7 +294,7 @@ export class ApNoteService {
|
|||
|
||||
if (isMessaging) {
|
||||
for (const recipient of visibleUsers) {
|
||||
await this.messagingService.createMessage(actor, recipient, undefined, text ?? undefined, (files && files.length > 0) ? files[0] : null, object.id);
|
||||
await this.messagingService.createMessage(actor, recipient, null, text ?? undefined, (files && files.length > 0) ? files[0] : null, object.id);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -110,8 +110,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
|||
private messagingService: MessagingService,
|
||||
) {
|
||||
super(meta, paramDef, async (ps, me) => {
|
||||
let recipientUser: MiUser | null;
|
||||
let recipientGroup: MiUserGroup | null;
|
||||
let recipientUser: MiUser | null = null;
|
||||
let recipientGroup: MiUserGroup | null = null;
|
||||
|
||||
if (ps.userId != null) {
|
||||
// Myself
|
||||
|
|
Loading…
Reference in a new issue