wip
This commit is contained in:
20
locales/index.d.ts
vendored
20
locales/index.d.ts
vendored
@@ -5384,6 +5384,26 @@ export interface Locale extends ILocale {
|
|||||||
* チャットが使えない状態になっているか、相手がチャットを開放していません。
|
* チャットが使えない状態になっているか、相手がチャットを開放していません。
|
||||||
*/
|
*/
|
||||||
"cannotChatWithTheUser_description": string;
|
"cannotChatWithTheUser_description": string;
|
||||||
|
/**
|
||||||
|
* チャットする
|
||||||
|
*/
|
||||||
|
"chatWithThisUser": string;
|
||||||
|
/**
|
||||||
|
* このユーザーはフォロワーからのみチャットを受け付けています。
|
||||||
|
*/
|
||||||
|
"thisUserAllowsChatOnlyFromFollowers": string;
|
||||||
|
/**
|
||||||
|
* このユーザーはフォローしているユーザーからのみチャットを受け付けています。
|
||||||
|
*/
|
||||||
|
"thisUserAllowsChatOnlyFromFollowing": string;
|
||||||
|
/**
|
||||||
|
* このユーザーは相互フォローのユーザーからのみチャットを受け付けています。
|
||||||
|
*/
|
||||||
|
"thisUserAllowsChatOnlyFromMutualFollowing": string;
|
||||||
|
/**
|
||||||
|
* このユーザーは誰からもチャットを受け付けていません。
|
||||||
|
*/
|
||||||
|
"thisUserNotAllowedChatAnyone": string;
|
||||||
/**
|
/**
|
||||||
* チャットを許可する相手
|
* チャットを許可する相手
|
||||||
*/
|
*/
|
||||||
|
@@ -1343,7 +1343,11 @@ _chat:
|
|||||||
roomChat_description: "複数人でのチャットができます。\nまた、個人チャットを許可していないユーザーとでも、相手が受け入れればチャットができます。"
|
roomChat_description: "複数人でのチャットができます。\nまた、個人チャットを許可していないユーザーとでも、相手が受け入れればチャットができます。"
|
||||||
cannotChatWithTheUser: "このユーザーとのチャットを開始できません"
|
cannotChatWithTheUser: "このユーザーとのチャットを開始できません"
|
||||||
cannotChatWithTheUser_description: "チャットが使えない状態になっているか、相手がチャットを開放していません。"
|
cannotChatWithTheUser_description: "チャットが使えない状態になっているか、相手がチャットを開放していません。"
|
||||||
|
chatWithThisUser: "チャットする"
|
||||||
|
thisUserAllowsChatOnlyFromFollowers: "このユーザーはフォロワーからのみチャットを受け付けています。"
|
||||||
|
thisUserAllowsChatOnlyFromFollowing: "このユーザーはフォローしているユーザーからのみチャットを受け付けています。"
|
||||||
|
thisUserAllowsChatOnlyFromMutualFollowing: "このユーザーは相互フォローのユーザーからのみチャットを受け付けています。"
|
||||||
|
thisUserNotAllowedChatAnyone: "このユーザーは誰からもチャットを受け付けていません。"
|
||||||
chatAllowedUsers: "チャットを許可する相手"
|
chatAllowedUsers: "チャットを許可する相手"
|
||||||
chatAllowedUsers_note: "自分からチャットメッセージを送った相手とはこの設定に関わらずチャットが可能です。"
|
chatAllowedUsers_note: "自分からチャットメッセージを送った相手とはこの設定に関わらずチャットが可能です。"
|
||||||
_chatAllowedUsers:
|
_chatAllowedUsers:
|
||||||
|
@@ -4,52 +4,46 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div style="height: 100%; overflow:auto; display:flex; flex-direction:column-reverse;">
|
<PageWithHeader reversed>
|
||||||
<MkStickyContainer>
|
<div ref="rootEl" :class="$style.root">
|
||||||
<template #header>
|
<MkSpacer :contentMax="700">
|
||||||
<MkPageHeader/>
|
<MkPagination v-if="pagination" ref="pagingComponent" :key="userId || roomId" :pagination="pagination" :disableAutoLoad="true" :scrollReversed="true">
|
||||||
</template>
|
<template #empty>
|
||||||
|
<div class="_fullinfo">
|
||||||
|
<div>{{ i18n.ts.noMessagesYet }}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #default="{ items: messages }">
|
||||||
|
<TransitionGroup
|
||||||
|
:enterActiveClass="prefer.s.animation ? $style.transition_x_enterActive : ''"
|
||||||
|
:leaveActiveClass="prefer.s.animation ? $style.transition_x_leaveActive : ''"
|
||||||
|
:enterFromClass="prefer.s.animation ? $style.transition_x_enterFrom : ''"
|
||||||
|
:leaveToClass="prefer.s.animation ? $style.transition_x_leaveTo : ''"
|
||||||
|
:moveClass="prefer.s.animation ? $style.transition_x_move : ''"
|
||||||
|
tag="div" class="_gaps"
|
||||||
|
>
|
||||||
|
<XMessage v-for="message in messages.toReversed()" :key="message.id" :message="message" :user="message.fromUserId === $i.id ? $i : user" :isRoom="room != null"/>
|
||||||
|
</TransitionGroup>
|
||||||
|
</template>
|
||||||
|
</MkPagination>
|
||||||
|
</MkSpacer>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ref="rootEl" :class="$style.root">
|
<template #footer>
|
||||||
<MkSpacer :contentMax="700">
|
<div :class="$style.footer">
|
||||||
<MkPagination v-if="pagination" ref="pagingComponent" :key="userId || roomId" :pagination="pagination" :disableAutoLoad="true" :scrollReversed="true">
|
<div class="_gaps">
|
||||||
<template #empty>
|
<Transition name="fade">
|
||||||
<div class="_fullinfo">
|
<div v-show="showIndicator" :class="$style.new">
|
||||||
<div>{{ i18n.ts.noMessagesYet }}</div>
|
<button class="_buttonPrimary" :class="$style.newButton" @click="onIndicatorClick">
|
||||||
</div>
|
<i class="fas ti-fw fa-arrow-circle-down" :class="$style.newIcon"></i>{{ i18n.ts.newMessageExists }}
|
||||||
</template>
|
</button>
|
||||||
<template #default="{ items: messages }">
|
</div>
|
||||||
<TransitionGroup
|
</Transition>
|
||||||
:enterActiveClass="prefer.s.animation ? $style.transition_x_enterActive : ''"
|
<XForm v-if="!fetching" :user="user" :room="room" :class="$style.form"/>
|
||||||
:leaveActiveClass="prefer.s.animation ? $style.transition_x_leaveActive : ''"
|
|
||||||
:enterFromClass="prefer.s.animation ? $style.transition_x_enterFrom : ''"
|
|
||||||
:leaveToClass="prefer.s.animation ? $style.transition_x_leaveTo : ''"
|
|
||||||
:moveClass="prefer.s.animation ? $style.transition_x_move : ''"
|
|
||||||
tag="div" class="_gaps"
|
|
||||||
>
|
|
||||||
<XMessage v-for="message in messages.toReversed()" :key="message.id" :message="message" :user="message.fromUserId === $i.id ? $i : user" :isRoom="room != null"/>
|
|
||||||
</TransitionGroup>
|
|
||||||
</template>
|
|
||||||
</MkPagination>
|
|
||||||
</MkSpacer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<template #footer>
|
|
||||||
<div :class="$style.footer">
|
|
||||||
<div class="_gaps">
|
|
||||||
<Transition name="fade">
|
|
||||||
<div v-show="showIndicator" :class="$style.new">
|
|
||||||
<button class="_buttonPrimary" :class="$style.newButton" @click="onIndicatorClick">
|
|
||||||
<i class="fas ti-fw fa-arrow-circle-down" :class="$style.newIcon"></i>{{ i18n.ts.newMessageExists }}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</Transition>
|
|
||||||
<XForm v-if="!fetching" :user="user" :room="room" :class="$style.form"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</div>
|
||||||
</MkStickyContainer>
|
</template>
|
||||||
</div>
|
</PageWithHeader>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
@@ -232,7 +226,6 @@ definePage(computed(() => !fetching.value ? user.value ? {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.root {
|
.root {
|
||||||
min-height: 100cqh;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.more {
|
.more {
|
||||||
|
@@ -220,13 +220,18 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
|
|||||||
});
|
});
|
||||||
|
|
||||||
if ($i) {
|
if ($i) {
|
||||||
menuItems.push({
|
menuItems.push({ type: 'divider' }, {
|
||||||
icon: 'ti ti-mail',
|
icon: 'ti ti-mail',
|
||||||
text: i18n.ts.sendMessage,
|
text: i18n.ts.sendMessage,
|
||||||
action: () => {
|
action: () => {
|
||||||
const canonical = user.host === null ? `@${user.username}` : `@${user.username}@${user.host}`;
|
const canonical = user.host === null ? `@${user.username}` : `@${user.username}@${user.host}`;
|
||||||
os.post({ specified: user, initialText: `${canonical} ` });
|
os.post({ specified: user, initialText: `${canonical} ` });
|
||||||
},
|
},
|
||||||
|
}, {
|
||||||
|
type: 'link',
|
||||||
|
icon: 'ti ti-messages',
|
||||||
|
text: i18n.ts._chat.chatWithThisUser,
|
||||||
|
to: `/chat/user/${user.id}`,
|
||||||
}, { type: 'divider' }, {
|
}, { type: 'divider' }, {
|
||||||
icon: 'ti ti-pencil',
|
icon: 'ti ti-pencil',
|
||||||
text: i18n.ts.editMemo,
|
text: i18n.ts.editMemo,
|
||||||
|
Reference in New Issue
Block a user