mirror of
https://github.com/kokonect-link/cherrypick
synced 2025-01-23 02:04:33 +09:00
enhance(frontend): 사용자 페이지와 사용자 팝업 개선
- 사용자 페이지와 사용자 팝업에 `새 노트 알림 켜기` 버튼이 추가됨 - 사용자 페이지에 `사용자 노트 검색` 버튼이 추가됨
This commit is contained in:
parent
3dffe5fdf3
commit
63991e06c5
@ -53,6 +53,9 @@ Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2024xx](CHANGE
|
||||
- Enhance: 로그인 시 표시되는 환영 메시지의 표시 유무를 선택할 수 있음
|
||||
- Ehhance: `텍스트 소스 보기`를 사용하면 자동으로 내용을 펼침
|
||||
- Enhance: 사용자 메뉴에서 서버 정보 페이지로 갈 수 있는 바로 가기를 추가함
|
||||
- Enhance: 사용자 페이지와 사용자 팝업 개선
|
||||
- 사용자 페이지와 사용자 팝업에 `새 노트 알림 켜기` 버튼이 추가됨
|
||||
- 사용자 페이지에 `사용자 노트 검색` 버튼이 추가됨
|
||||
- Fix: 임베디드 코드에서 CherryPick의 색상 설정이 반영되지 않음
|
||||
- Fix: 임베디드 코드에 `fade`와 `Temml(KaTex)`가 반영되지 않음
|
||||
- Fix: 노트의 QR 코드를 생성했을 때 `링크 복사` 버튼을 누르면 잘못된 토스트 알림이 표시됨
|
||||
|
@ -45,6 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</div>
|
||||
</div>
|
||||
<button class="_button" :class="$style.menu" @click="showMenu"><i class="ti ti-dots"></i></button>
|
||||
<button v-tooltip="user.notify === 'none' ? i18n.ts.notifyNotes : i18n.ts.unnotifyNotes" class="_button" :class="$style.notify" @click="toggleNotify"><i :class="user.notify === 'none' ? 'ti ti-bell-plus' : 'ti ti-bell-minus'"></i></button>
|
||||
<MkFollowButton v-model:user="user" :class="$style.follow" mini/>
|
||||
</div>
|
||||
<div v-else>
|
||||
@ -92,6 +93,15 @@ function showMenu(ev: MouseEvent) {
|
||||
os.popupMenu(menu, ev.currentTarget ?? ev.target).finally(cleanup);
|
||||
}
|
||||
|
||||
async function toggleNotify() {
|
||||
os.apiWithDialog('following/update', {
|
||||
userId: user.value.id,
|
||||
notify: user.value.notify === 'normal' ? 'none' : 'normal',
|
||||
}).then(() => {
|
||||
user.value.notify = user.value.notify === 'normal' ? 'none' : 'normal';
|
||||
});
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
if (typeof props.q === 'object') {
|
||||
user.value = props.q;
|
||||
@ -240,15 +250,20 @@ onMounted(() => {
|
||||
color: var(--fgTransparentWeak);
|
||||
}
|
||||
|
||||
.menu {
|
||||
.menu,
|
||||
.notify {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
right: 44px;
|
||||
right: 80px;
|
||||
padding: 6px;
|
||||
background: var(--panel);
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
.notify {
|
||||
right: 44px;
|
||||
}
|
||||
|
||||
.follow {
|
||||
position: absolute !important;
|
||||
top: 8px;
|
||||
|
@ -36,6 +36,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
<span v-if="$i && $i.id != user.id && user.isFollowed" class="followed">{{ i18n.ts.followsYou }}</span>
|
||||
<div class="actions">
|
||||
<button class="menu _button" @click="menu"><i class="ti ti-dots"></i></button>
|
||||
<button v-if="notesSearchAvailable && (user.host == null || canSearchNonLocalNotes)" v-tooltip="i18n.ts.searchThisUsersNotes" class="menu _button" @click="router.push(`/search?username=${encodeURIComponent(user.username)}${user.host != null ? '&host=' + encodeURIComponent(user.host) : ''}`);"><i class="ti ti-search"></i></button>
|
||||
<button v-tooltip="user.notify === 'none' ? i18n.ts.notifyNotes : i18n.ts.unnotifyNotes" class="menu _button" @click="toggleNotify"><i :class="user.notify === 'none' ? 'ti ti-bell-plus' : 'ti ti-bell-minus'"></i></button>
|
||||
<MkFollowButton v-if="$i?.id != user.id" v-model:user="user" :inline="true" :transparent="false" :full="true" class="koudoku"/>
|
||||
</div>
|
||||
</div>
|
||||
@ -204,6 +206,7 @@ import { editNickname } from '@/scripts/edit-nickname.js';
|
||||
import { vibrate } from '@/scripts/vibrate.js';
|
||||
import detectLanguage from '@/scripts/detect-language.js';
|
||||
import { globalEvents } from '@/events.js';
|
||||
import { notesSearchAvailable, canSearchNonLocalNotes } from '@/scripts/check-permissions.js';
|
||||
|
||||
function calcAge(birthdate: string): number {
|
||||
const date = new Date(birthdate);
|
||||
@ -346,6 +349,15 @@ function resetTimer() {
|
||||
playAnimationTimer = setTimeout(() => playAnimation.value = false, 5000);
|
||||
}
|
||||
|
||||
async function toggleNotify() {
|
||||
os.apiWithDialog('following/update', {
|
||||
userId: props.user.id,
|
||||
notify: props.user.notify === 'normal' ? 'none' : 'normal',
|
||||
}).then(() => {
|
||||
user.value.notify = user.value.notify === 'normal' ? 'none' : 'normal';
|
||||
});
|
||||
}
|
||||
|
||||
watch([props.user], () => {
|
||||
memoDraft.value = props.user.memo;
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user