skip adding to the list if it already has
This commit is contained in:
parent
9292cde76a
commit
2c35acbd2e
|
@ -186,6 +186,12 @@ export class AccountMoveService {
|
|||
});
|
||||
if (oldJoinings.length === 0) return;
|
||||
|
||||
const existingUserListIds = await this.userListJoiningsRepository.find({
|
||||
where: {
|
||||
userId: dst.id,
|
||||
},
|
||||
}).then(joinings => joinings.map(joining => joining.userListId));
|
||||
|
||||
const newJoinings: Map<string, { createdAt: Date; userId: string; userListId: string; }> = new Map();
|
||||
|
||||
// 重複しないようにIDを生成
|
||||
|
@ -197,6 +203,7 @@ export class AccountMoveService {
|
|||
return id;
|
||||
};
|
||||
for (const joining of oldJoinings) {
|
||||
if (existingUserListIds.includes(joining.userListId)) continue; // skip if dst exists in this user's list
|
||||
newJoinings.set(genId(), {
|
||||
createdAt: new Date(),
|
||||
userId: dst.id,
|
||||
|
|
|
@ -148,11 +148,11 @@ describe('Account Move', () => {
|
|||
await api('/i/update', {
|
||||
alsoKnownAs: [`@alice@${url.hostname}`],
|
||||
}, root);
|
||||
const list = await api('/users/lists/create', {
|
||||
const listRoot = await api('/users/lists/create', {
|
||||
name: rndstr('0-9a-z', 8),
|
||||
}, root);
|
||||
await api('/users/lists/push', {
|
||||
listId: list.body.id,
|
||||
listId: listRoot.body.id,
|
||||
userId: alice.id,
|
||||
}, root);
|
||||
|
||||
|
@ -196,6 +196,13 @@ describe('Account Move', () => {
|
|||
await api('/following/create', {
|
||||
userId: dave.id,
|
||||
}, eve);
|
||||
const listEve = await api('/users/lists/create', {
|
||||
name: rndstr('0-9a-z', 8),
|
||||
}, eve);
|
||||
await api('/users/lists/push', {
|
||||
listId: listEve.body.id,
|
||||
userId: bob.id,
|
||||
}, eve);
|
||||
|
||||
await api('/i/update', {
|
||||
isLocked: true,
|
||||
|
@ -266,11 +273,16 @@ describe('Account Move', () => {
|
|||
assert.strictEqual(mutings.body.length, 1);
|
||||
assert.strictEqual(mutings.body[0].muteeId, bob.id);
|
||||
|
||||
const lists = await api('/users/lists/list', {}, root);
|
||||
assert.strictEqual(lists.status, 200);
|
||||
assert.strictEqual(lists.body[0].userIds.length, 2);
|
||||
assert.ok(lists.body[0].userIds.find((id: string) => id === bob.id));
|
||||
assert.ok(lists.body[0].userIds.find((id: string) => id === alice.id));
|
||||
const rootLists = await api('/users/lists/list', {}, root);
|
||||
assert.strictEqual(rootLists.status, 200);
|
||||
assert.strictEqual(rootLists.body[0].userIds.length, 2);
|
||||
assert.ok(rootLists.body[0].userIds.find((id: string) => id === bob.id));
|
||||
assert.ok(rootLists.body[0].userIds.find((id: string) => id === alice.id));
|
||||
|
||||
const eveLists = await api('/users/lists/list', {}, eve);
|
||||
assert.strictEqual(eveLists.status, 200);
|
||||
assert.strictEqual(eveLists.body[0].userIds.length, 1);
|
||||
assert.ok(eveLists.body[0].userIds.find((id: string) => id === bob.id));
|
||||
});
|
||||
|
||||
test('Unable to move if the destination account has already moved.', async () => {
|
||||
|
|
Loading…
Reference in a new issue