フォロー中のユーザーに関する"TLに他の人への返信を含める"の設定が分かりづらい問題を修正 (#13895)

* chore: improve withReplies toggle for user following

* chore: improve withReplies toggle for list

* docs(changelog): フォロー中のユーザーに関する"TLに他の人への返信を含める"の設定が分かりづらい問題を修正

* Fix CHANGELOG.md

* docs(changelog): update insertion position

---------

Co-authored-by: Sayamame-beans <61457993+Sayamame-beans@users.noreply.github.com>
This commit is contained in:
anatawa12 2024-07-30 19:55:18 +09:00 committed by GitHub
parent c7354c5e30
commit 0bb5ac0fca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 33 additions and 27 deletions

View File

@ -66,6 +66,7 @@
- Fix: 照会に `#` から始まる文字列を入力してそのハッシュタグのページを表示する際、入力が `#` のみの場合に「指定されたURLに該当するページはありませんでした。」が表示されてしまう問題を修正 - Fix: 照会に `#` から始まる文字列を入力してそのハッシュタグのページを表示する際、入力が `#` のみの場合に「指定されたURLに該当するページはありませんでした。」が表示されてしまう問題を修正
- Fix: 照会に `@` から始まる文字列を入力してユーザーを照会する際、入力が `@` のみの場合に「問題が発生しました」が表示されてしまう問題を修正 - Fix: 照会に `@` から始まる文字列を入力してユーザーを照会する際、入力が `@` のみの場合に「問題が発生しました」が表示されてしまう問題を修正
- Fix: 投稿フォームにートのURLを貼り付けて"引用として添付"した場合、投稿文を空にすることによるRenote化が出来なかった問題を修正 - Fix: 投稿フォームにートのURLを貼り付けて"引用として添付"した場合、投稿文を空にすることによるRenote化が出来なかった問題を修正
- Fix: フォロー中のユーザーに関する"TLに他の人への返信を含める"の設定が分かりづらい問題を修正
### Server ### Server
- Feat: レートリミット制限に引っかかったときに`Retry-After`ヘッダーを返すように (#13949) - Feat: レートリミット制限に引っかかったときに`Retry-After`ヘッダーを返すように (#13949)

View File

@ -133,22 +133,25 @@ async function removeUser(item, ev) {
} }
async function showMembershipMenu(item, ev) { async function showMembershipMenu(item, ev) {
const withRepliesRef = ref(item.withReplies);
os.popupMenu([{ os.popupMenu([{
text: item.withReplies ? i18n.ts.hideRepliesToOthersInTimeline : i18n.ts.showRepliesToOthersInTimeline, type: 'switch',
icon: item.withReplies ? 'ti ti-messages-off' : 'ti ti-messages', text: i18n.ts.showRepliesToOthersInTimeline,
action: async () => { icon: 'ti ti-messages',
ref: withRepliesRef,
}], ev.currentTarget ?? ev.target);
watch(withRepliesRef, withReplies => {
misskeyApi('users/lists/update-membership', { misskeyApi('users/lists/update-membership', {
listId: list.value.id, listId: list.value!.id,
userId: item.userId, userId: item.userId,
withReplies: !item.withReplies, withReplies,
}).then(() => { }).then(() => {
paginationEl.value.updateItem(item.id, (old) => ({ paginationEl.value!.updateItem(item.id, (old) => ({
...old, ...old,
withReplies: !item.withReplies, withReplies,
})); }));
}); });
}, });
}], ev.currentTarget ?? ev.target);
} }
async function deleteList() { async function deleteList() {

View File

@ -17,6 +17,7 @@ import { notesSearchAvailable, canSearchNonLocalNotes } from '@/scripts/check-pe
import { IRouter } from '@/nirax.js'; import { IRouter } from '@/nirax.js';
import { antennasCache, rolesCache, userListsCache } from '@/cache.js'; import { antennasCache, rolesCache, userListsCache } from '@/cache.js';
import { mainRouter } from '@/router/main.js'; import { mainRouter } from '@/router/main.js';
import { MenuItem } from '@/types/menu.js';
export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter = mainRouter) { export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter = mainRouter) {
const meId = $i ? $i.id : null; const meId = $i ? $i.id : null;
@ -82,15 +83,6 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
}); });
} }
async function toggleWithReplies() {
os.apiWithDialog('following/update', {
userId: user.id,
withReplies: !user.withReplies,
}).then(() => {
user.withReplies = !user.withReplies;
});
}
async function toggleNotify() { async function toggleNotify() {
os.apiWithDialog('following/update', { os.apiWithDialog('following/update', {
userId: user.id, userId: user.id,
@ -155,7 +147,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
}); });
} }
let menu = [{ let menu: MenuItem[] = [{
icon: 'ti ti-at', icon: 'ti ti-at',
text: i18n.ts.copyUsername, text: i18n.ts.copyUsername,
action: () => { action: () => {
@ -314,15 +306,25 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
// フォローしたとしても user.isFollowing はリアルタイム更新されないので不便なため // フォローしたとしても user.isFollowing はリアルタイム更新されないので不便なため
//if (user.isFollowing) { //if (user.isFollowing) {
const withRepliesRef = ref(user.withReplies);
menu = menu.concat([{ menu = menu.concat([{
icon: user.withReplies ? 'ti ti-messages-off' : 'ti ti-messages', type: 'switch',
text: user.withReplies ? i18n.ts.hideRepliesToOthersInTimeline : i18n.ts.showRepliesToOthersInTimeline, icon: 'ti ti-messages',
action: toggleWithReplies, text: i18n.ts.showRepliesToOthersInTimeline,
ref: withRepliesRef,
}, { }, {
icon: user.notify === 'none' ? 'ti ti-bell' : 'ti ti-bell-off', icon: user.notify === 'none' ? 'ti ti-bell' : 'ti ti-bell-off',
text: user.notify === 'none' ? i18n.ts.notifyNotes : i18n.ts.unnotifyNotes, text: user.notify === 'none' ? i18n.ts.notifyNotes : i18n.ts.unnotifyNotes,
action: toggleNotify, action: toggleNotify,
}]); }]);
watch(withRepliesRef, (withReplies) => {
misskeyApi('following/update', {
userId: user.id,
withReplies,
}).then(() => {
user.withReplies = withReplies;
});
});
//} //}
menu = menu.concat([{ type: 'divider' }, { menu = menu.concat([{ type: 'divider' }, {