fix: ensure that specified users does not get duplicates (#8233)
* ensure that specified users does not get duplicates * Update packages/client/src/components/post-form.vue Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
parent
522877b8dd
commit
bfc95ccf73
1 changed files with 14 additions and 5 deletions
|
@ -135,7 +135,10 @@ let showPreview = $ref(false);
|
||||||
let cw = $ref<string | null>(null);
|
let cw = $ref<string | null>(null);
|
||||||
let localOnly = $ref<boolean>(props.initialLocalOnly ?? defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly);
|
let localOnly = $ref<boolean>(props.initialLocalOnly ?? defaultStore.state.rememberNoteVisibility ? defaultStore.state.localOnly : defaultStore.state.defaultNoteLocalOnly);
|
||||||
let visibility = $ref(props.initialVisibility ?? (defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility) as typeof misskey.noteVisibilities[number]);
|
let visibility = $ref(props.initialVisibility ?? (defaultStore.state.rememberNoteVisibility ? defaultStore.state.visibility : defaultStore.state.defaultNoteVisibility) as typeof misskey.noteVisibilities[number]);
|
||||||
let visibleUsers = $ref(props.initialVisibleUsers ?? []);
|
let visibleUsers = $ref([]);
|
||||||
|
if (props.initialVisibleUsers) {
|
||||||
|
props.initialVisibleUsers.forEach(pushVisibleUser);
|
||||||
|
}
|
||||||
let autocomplete = $ref(null);
|
let autocomplete = $ref(null);
|
||||||
let draghover = $ref(false);
|
let draghover = $ref(false);
|
||||||
let quoteId = $ref(null);
|
let quoteId = $ref(null);
|
||||||
|
@ -262,12 +265,12 @@ if (props.reply && ['home', 'followers', 'specified'].includes(props.reply.visib
|
||||||
os.api('users/show', {
|
os.api('users/show', {
|
||||||
userIds: props.reply.visibleUserIds.filter(uid => uid !== $i.id && uid !== props.reply.userId)
|
userIds: props.reply.visibleUserIds.filter(uid => uid !== $i.id && uid !== props.reply.userId)
|
||||||
}).then(users => {
|
}).then(users => {
|
||||||
visibleUsers.push(...users);
|
users.forEach(pushVisibleUser);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (props.reply.userId !== $i.id) {
|
if (props.reply.userId !== $i.id) {
|
||||||
os.api('users/show', { userId: props.reply.userId }).then(user => {
|
os.api('users/show', { userId: props.reply.userId }).then(user => {
|
||||||
visibleUsers.push(user);
|
pushVisibleUser(user);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -275,7 +278,7 @@ if (props.reply && ['home', 'followers', 'specified'].includes(props.reply.visib
|
||||||
|
|
||||||
if (props.specified) {
|
if (props.specified) {
|
||||||
visibility = 'specified';
|
visibility = 'specified';
|
||||||
visibleUsers.push(props.specified);
|
pushVisibleUser(props.specified);
|
||||||
}
|
}
|
||||||
|
|
||||||
// keep cw when reply
|
// keep cw when reply
|
||||||
|
@ -397,9 +400,15 @@ function setVisibility() {
|
||||||
}, 'closed');
|
}, 'closed');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function pushVisibleUser(user) {
|
||||||
|
if (!visibleUsers.some(u => u.username === user.username && u.host === user.host)) {
|
||||||
|
visibleUsers.push(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function addVisibleUser() {
|
function addVisibleUser() {
|
||||||
os.selectUser().then(user => {
|
os.selectUser().then(user => {
|
||||||
visibleUsers.push(user);
|
pushVisibleUser(user);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue