enhance(frontend): 노트 상세 페이지의 노트 작성 폼에서 노트를 게시했을 때 작성 폼을 다시 닫도록 변경함

This commit is contained in:
NoriDev 2023-12-24 14:19:08 +09:00
parent fbd91e4c95
commit da7a083a06
2 changed files with 10 additions and 40 deletions

View file

@ -59,6 +59,7 @@ Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2023xx](CHANGE
- 리노트 시 공개 범위를 설정할 수 있음
- Enhance: 사용자 팝업 개선
- 자신의 프로필인 경우, 팔로우 버튼을 프로필 편집 버튼으로 표시함
- Enhance: 노트 상세 페이지의 노트 작성 폼에서 노트를 게시했을 때 작성 폼을 다시 닫도록 변경함
- Fix: '모달 배경색 제거' 옵션이 이모지 피커에 반영되지 않음
- Fix: 열람 주의로 설정된 노트의 리액션이 '더 보기'를 눌러야 표시됨
- Fix: 채널 이름이 긴 경우 게시 양식 표시가 깨지는 문제 (misskey-dev/misskey#12524)

View file

@ -13,9 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<Transition
:enterActiveClass="defaultStore.state.animation ? $style.transition_header_enterActive : ''"
:leaveActiveClass="defaultStore.state.animation ? $style.transition_header_leaveActive : ''"
:enterFromClass="defaultStore.state.animation ? $style.transition_header_enterFrom : ''"
:leaveToClass="defaultStore.state.animation ? $style.transition_header_leaveTo : ''"
>
<header v-if="showForm" :class="$style.header">
<div :class="$style.headerLeft">
@ -94,9 +92,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<Transition
:enterActiveClass="defaultStore.state.animation ? $style.transition_footer_enterActive : ''"
:leaveActiveClass="defaultStore.state.animation ? $style.transition_footer_leaveActive : ''"
:enterFromClass="defaultStore.state.animation ? $style.transition_footer_enterFrom : ''"
:leaveToClass="defaultStore.state.animation ? $style.transition_footer_leaveTo : ''"
>
<footer v-if="showForm" :class="$style.footer">
<div :class="$style.footerLeft">
@ -324,30 +320,6 @@ watch(visibleUsers, () => {
deep: true,
});
if (props.mention) {
text.value = props.mention.host ? `@${props.mention.username}@${toASCII(props.mention.host)}` : `@${props.mention.username}`;
text.value += ' ';
}
if (props.reply && props.reply.text != null) {
const ast = mfm.parse(props.reply.text);
const otherHost = props.reply.user.host;
for (const x of extractMentions(ast)) {
const mention = x.host ?
`@${x.username}@${toASCII(x.host)}` :
(otherHost == null || otherHost === host) ?
`@${x.username}` :
`@${x.username}@${toASCII(otherHost)}`;
//
if ($i.username === x.username && (x.host == null || x.host === host)) continue;
//
if (text.value.includes(`${mention} `)) continue;
}
}
if ($i?.isSilenced && visibility.value === 'public') {
visibility.value = 'home';
}
@ -921,6 +893,7 @@ async function post(ev?: MouseEvent) {
});
});
textareaEl.value.style.height = '35px';
showForm.value = false;
if (props.updateMode) sound.play('noteEdited');
vibrate(defaultStore.state.vibrateSystem ? [10, 20, 10, 20, 10, 20, 60] : []);
}
@ -991,6 +964,10 @@ function openAccountMenu(ev: MouseEvent) {
function formClick() {
if ($i) showForm.value = true;
if (props.reply && (props.reply.user.username !== $i.username || (props.reply.user.host != null && props.reply.user.host !== host))) {
text.value = `@${props.reply.user.username}${props.reply.user.host != null ? '@' + toASCII(props.reply.user.host) : ''} `;
}
if (props.reply && props.reply.text != null) {
const ast = mfm.parse(props.reply.text);
const otherHost = props.reply.user.host;
@ -1110,25 +1087,17 @@ defineExpose({
<style lang="scss" module>
.transition_header_enterActive,
.transition_header_leaveActive {
.transition_footer_enterActive {
opacity: 1;
transform: translateY(0);
transition: transform 850ms cubic-bezier(0.23, 1, 0.32, 1), opacity 850ms cubic-bezier(0.23, 1, 0.32, 1);
}
.transition_header_enterFrom,
.transition_header_leaveTo {
.transition_header_enterFrom {
opacity: 0;
transform: translateY(20px);
}
.transition_footer_enterActive,
.transition_footer_leaveActive {
opacity: 1;
transform: translateY(0);
transition: transform 850ms cubic-bezier(0.23, 1, 0.32, 1), opacity 850ms cubic-bezier(0.23, 1, 0.32, 1);
}
.transition_footer_enterFrom,
.transition_footer_leaveTo {
.transition_footer_enterFrom {
opacity: 0;
transform: translateY(-20px);
}