Profile picture display has been standardized across the board.
This commit is contained in:
@@ -329,7 +329,7 @@ onMounted(() => {
|
||||
ایجاد شده توسط
|
||||
</dt>
|
||||
<dd class="person">
|
||||
<UserAvatar v-if="activity.createdBy" :name="activity.createdBy.fullName" :size="28" />
|
||||
<UserAvatar v-if="activity.createdBy" :name="activity.createdBy.fullName" :user-id="activity.createdBy.id" :size="28" />
|
||||
{{ activity.createdBy?.fullName || '—' }}
|
||||
</dd>
|
||||
</div>
|
||||
|
||||
@@ -623,6 +623,8 @@ watch([id, isNew], () => void load(), { immediate: true });
|
||||
v-for="user in selectedAssignees.slice(0, 3)"
|
||||
:key="user.id"
|
||||
:name="user.fullName"
|
||||
:user-id="user.id"
|
||||
:has-avatar="user.hasAvatar"
|
||||
:size="28"
|
||||
/>
|
||||
<UserAvatar
|
||||
@@ -647,7 +649,7 @@ watch([id, isNew], () => void load(), { immediate: true });
|
||||
<span class="check" :class="{ on: assigneeIds.includes(user.id) }">
|
||||
<UiIcon v-if="assigneeIds.includes(user.id)" name="check-plain" :size="12" />
|
||||
</span>
|
||||
<UserAvatar :name="user.fullName" :size="28" />
|
||||
<UserAvatar :name="user.fullName" :user-id="user.id" :has-avatar="user.hasAvatar" :size="28" />
|
||||
{{ user.fullName }}
|
||||
</button>
|
||||
</li>
|
||||
|
||||
@@ -296,6 +296,12 @@ function roomTitle(room: ConversationRoomDto) {
|
||||
return peer?.fullName ?? room.name;
|
||||
}
|
||||
|
||||
function roomAvatarProps(room: ConversationRoomDto) {
|
||||
if (room.kind !== 'dm') return { src: '' };
|
||||
const peer = peers.value.find((p) => p.id === room.peerUserId);
|
||||
return { userId: room.peerUserId, hasAvatar: peer?.hasAvatar };
|
||||
}
|
||||
|
||||
function roomKindLabel(kind: ConversationRoomDto['kind']) {
|
||||
if (kind === 'channel') return 'کانال';
|
||||
if (kind === 'group') return 'گروه';
|
||||
@@ -1912,7 +1918,7 @@ onUnmounted(() => {
|
||||
@click="openRoom(room)"
|
||||
>
|
||||
<span class="avatar-ring">
|
||||
<UserAvatar :name="roomTitle(room)" :size="40" />
|
||||
<UserAvatar v-bind="roomAvatarProps(room)" :name="roomTitle(room)" :size="40" />
|
||||
</span>
|
||||
<span class="room-meta">
|
||||
<strong>
|
||||
@@ -2019,7 +2025,7 @@ onUnmounted(() => {
|
||||
<UiIcon name="arrow-right" :size="20" />
|
||||
</button>
|
||||
<span class="stage-avatar">
|
||||
<UserAvatar :name="roomTitle(activeRoom)" :size="36" />
|
||||
<UserAvatar v-bind="roomAvatarProps(activeRoom)" :name="roomTitle(activeRoom)" :size="36" />
|
||||
</span>
|
||||
<div class="stage-titles">
|
||||
<h2>{{ roomTitle(activeRoom) }}</h2>
|
||||
@@ -2274,7 +2280,7 @@ onUnmounted(() => {
|
||||
:class="{ active: idx === mentionIndex }"
|
||||
@click="insertMention(peer)"
|
||||
>
|
||||
<UserAvatar :name="peer.fullName" :size="28" />
|
||||
<UserAvatar :name="peer.fullName" :user-id="peer.id" :has-avatar="peer.hasAvatar" :size="28" />
|
||||
<span>{{ peer.fullName }}</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -2521,7 +2527,7 @@ onUnmounted(() => {
|
||||
:class="{ on: dmPeerId === p.id }"
|
||||
@click="dmPeerId = p.id"
|
||||
>
|
||||
<UserAvatar :name="p.fullName" :size="40" />
|
||||
<UserAvatar :name="p.fullName" :user-id="p.id" :has-avatar="p.hasAvatar" :size="40" />
|
||||
<span class="peer-row-meta">
|
||||
<strong>{{ p.fullName }}</strong>
|
||||
<small>گفتگوی خصوصی</small>
|
||||
@@ -2563,7 +2569,7 @@ onUnmounted(() => {
|
||||
:title="`حذف ${p.fullName}`"
|
||||
@click="toggleGroupMember(p.id)"
|
||||
>
|
||||
<UserAvatar :name="p.fullName" :size="22" />
|
||||
<UserAvatar :name="p.fullName" :user-id="p.id" :has-avatar="p.hasAvatar" :size="22" />
|
||||
<span>{{ p.fullName }}</span>
|
||||
<UiIcon name="x" :size="12" />
|
||||
</button>
|
||||
@@ -2586,7 +2592,7 @@ onUnmounted(() => {
|
||||
:class="{ on: groupMemberIds.includes(p.id) }"
|
||||
@click="toggleGroupMember(p.id)"
|
||||
>
|
||||
<UserAvatar :name="p.fullName" :size="40" />
|
||||
<UserAvatar :name="p.fullName" :user-id="p.id" :has-avatar="p.hasAvatar" :size="40" />
|
||||
<span class="peer-row-meta">
|
||||
<strong>{{ p.fullName }}</strong>
|
||||
<small>{{ groupMemberIds.includes(p.id) ? 'انتخابشده' : 'برای افزودن بزنید' }}</small>
|
||||
@@ -2638,7 +2644,7 @@ onUnmounted(() => {
|
||||
:title="`حذف ${p.fullName}`"
|
||||
@click="toggleChannelMember(p.id)"
|
||||
>
|
||||
<UserAvatar :name="p.fullName" :size="22" />
|
||||
<UserAvatar :name="p.fullName" :user-id="p.id" :has-avatar="p.hasAvatar" :size="22" />
|
||||
<span>{{ p.fullName }}</span>
|
||||
<UiIcon name="x" :size="12" />
|
||||
</button>
|
||||
@@ -2661,7 +2667,7 @@ onUnmounted(() => {
|
||||
:class="{ on: channelMemberIds.includes(p.id) }"
|
||||
@click="toggleChannelMember(p.id)"
|
||||
>
|
||||
<UserAvatar :name="p.fullName" :size="40" />
|
||||
<UserAvatar :name="p.fullName" :user-id="p.id" :has-avatar="p.hasAvatar" :size="40" />
|
||||
<span class="peer-row-meta">
|
||||
<strong>{{ p.fullName }}</strong>
|
||||
<small>{{ channelMemberIds.includes(p.id) ? 'انتخابشده' : 'برای افزودن بزنید' }}</small>
|
||||
@@ -2853,7 +2859,7 @@ onUnmounted(() => {
|
||||
<div v-if="membersBusy && !roomMembers.length" class="muted center pad">در حال بارگذاری…</div>
|
||||
<div v-else class="peer-list members-list">
|
||||
<div v-for="m in roomMembers" :key="m.userId" class="peer-row member-static">
|
||||
<UserAvatar :name="m.fullName" :size="40" />
|
||||
<UserAvatar :name="m.fullName" :user-id="m.userId" :has-avatar="m.hasAvatar" :size="40" />
|
||||
<span class="peer-row-meta">
|
||||
<strong>{{ m.fullName }}{{ m.isMe ? ' (شما)' : '' }}</strong>
|
||||
<small>{{ m.role === 'admin' ? 'ادمین' : 'عضو' }}</small>
|
||||
@@ -2904,7 +2910,7 @@ onUnmounted(() => {
|
||||
:disabled="forwardBusy"
|
||||
@click="confirmForward(room.externalRoomId)"
|
||||
>
|
||||
<UserAvatar :name="roomTitle(room)" :size="36" />
|
||||
<UserAvatar v-bind="roomAvatarProps(room)" :name="roomTitle(room)" :size="36" />
|
||||
<span>{{ roomTitle(room) }}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -613,7 +613,7 @@ onMounted(load);
|
||||
<div class="field owner-field">
|
||||
<label>مسئول انجام این معامله <i>*</i></label>
|
||||
<button class="picker" type="button" @click.stop="toggleMenu('owner')">
|
||||
<UserAvatar :name="selectedOwner?.fullName || 'مسئول'" :size="32" />
|
||||
<UserAvatar :name="selectedOwner?.fullName || 'مسئول'" :user-id="selectedOwner?.id" :size="32" />
|
||||
<span :class="{ ghost: !selectedOwner }">
|
||||
{{ selectedOwner?.fullName || 'انتخاب کنید' }}
|
||||
</span>
|
||||
@@ -622,7 +622,7 @@ onMounted(load);
|
||||
<ul v-if="openMenu === 'owner'" class="menu">
|
||||
<li v-for="user in users" :key="user.id">
|
||||
<button type="button" @click="ownerId = user.id; openMenu = ''">
|
||||
<UserAvatar :name="user.fullName" :size="28" />
|
||||
<UserAvatar :name="user.fullName" :user-id="user.id" :has-avatar="user.hasAvatar" :size="28" />
|
||||
{{ user.fullName }}
|
||||
</button>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user