Skip to content

Commit

Permalink
refactor(ApPersonService.ts): 返り値のvoid統一と条件式の調整
Browse files Browse the repository at this point in the history
この返り値を参照しているコードは見当たらなかった。
また、普通に意味がない値であるように見受けられた。
  • Loading branch information
okayurisotto committed Jul 3, 2023
1 parent ff57dc0 commit 662d2b1
Showing 1 changed file with 25 additions and 29 deletions.
54 changes: 25 additions & 29 deletions packages/backend/src/core/activitypub/models/ApPersonService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -311,8 +311,8 @@ export class ApPersonService implements OnModuleInit {
const u = await this.usersRepository.findOneBy({ uri: person.id });
if (u == null) throw new Error('already registered');

user = u as RemoteUser;
} else {
user = u as RemoteUser;
} else {
this.logger.error(e instanceof Error ? e : new Error(e as string));
throw e;
}
Expand Down Expand Up @@ -625,46 +625,42 @@ export class ApPersonService implements OnModuleInit {
* @param movePreventUris ここに列挙されたURIにsrc.movedToUriが含まれる場合、移行処理はしない(無限ループ防止)
*/
@bindThis
private async processRemoteMove(src: RemoteUser, movePreventUris: string[] = []): Promise<string> {
if (!src.movedToUri) return 'skip: no movedToUri';
if (src.uri === src.movedToUri) return 'skip: movedTo itself (src)'; // ???
if (movePreventUris.length > 10) return 'skip: too many moves';
private async processRemoteMove(src: RemoteUser, movePreventUris: string[] = []): Promise<void> {
if (src.movedToUri === null) return; // skip: no movedToUri
if (src.uri === src.movedToUri) return; // skip: movedTo itself (src) // ???
if (movePreventUris.length > 10) return; // skip: too many moves

// まずサーバー内で検索して様子見
let dst = await this.fetchPerson(src.movedToUri);

if (dst && this.userEntityService.isLocalUser(dst)) {
// targetがローカルユーザーだった場合データベースから引っ張ってくる
dst = await this.usersRepository.findOneByOrFail({ uri: src.movedToUri }) as LocalUser;
} else if (dst) {
if (movePreventUris.includes(src.movedToUri)) return 'skip: circular move';
if (dst) {
if (this.userEntityService.isLocalUser(dst)) {
// targetがローカルユーザーだった場合データベースから引っ張ってくる
dst = await this.usersRepository.findOneByOrFail({ uri: src.movedToUri }) as LocalUser;
} else {
if (movePreventUris.includes(src.movedToUri)) return; // skip: circular move

// targetを見つけたことがあるならtargetをupdatePersonする
await this.updatePerson(src.movedToUri, undefined, undefined, [...movePreventUris, src.uri]);
dst = await this.fetchPerson(src.movedToUri) ?? dst;
} else {
if (src.movedToUri.startsWith(`${this.config.url}/`)) {
// ローカルユーザーっぽいのにfetchPersonで見つからないということはmovedToUriが間違っている
return 'failed: movedTo is local but not found';
// targetを見つけたことがあるならtargetをupdatePersonする
await this.updatePerson(src.movedToUri, undefined, undefined, [...movePreventUris, src.uri]);
dst = await this.fetchPerson(src.movedToUri) ?? dst;
}
} else {
// ローカルユーザーっぽいのにfetchPersonで見つからないということはmovedToUriが間違っている
// failed: movedTo is local but not found
if (src.movedToUri.startsWith(`${this.config.url}/`)) return;

// targetが知らない人だったらresolvePerson
// (uriが存在しなかったり応答がなかったりする場合resolvePersonはthrow Errorする)
dst = await this.resolvePerson(src.movedToUri);
}

if (dst.movedToUri === dst.uri) return 'skip: movedTo itself (dst)'; // ???
if (src.movedToUri !== dst.uri) return 'skip: missmatch uri'; // ???
if (dst.movedToUri === src.uri) return 'skip: dst.movedToUri === src.uri';
if (!dst.alsoKnownAs || dst.alsoKnownAs.length === 0) {
return 'skip: dst.alsoKnownAs is empty';
}
if (!dst.alsoKnownAs.includes(src.uri)) {
return 'skip: alsoKnownAs does not include from.uri';
}
if (dst.movedToUri === dst.uri) return; // skip: movedTo itself (dst) // ???
if (src.movedToUri !== dst.uri) return; // skip: missmatch uri // ???
if (dst.movedToUri === src.uri) return; // skip: dst.movedToUri === src.uri
if (dst.alsoKnownAs === null) return; // skip: dst.alsoKnownAs is null
if (dst.alsoKnownAs.length === 0) return; // skip: dst.alsoKnownAs is empty
if (!dst.alsoKnownAs.includes(src.uri)) return; // skip: alsoKnownAs does not include src.uri

await this.accountMoveService.postMoveProcess(src, dst);

return 'ok';
}
}

0 comments on commit 662d2b1

Please sign in to comment.