aboutsummaryrefslogtreecommitdiff
path: root/src/components/chat_avatar
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/chat_avatar')
-rw-r--r--src/components/chat_avatar/chat_avatar.js23
-rw-r--r--src/components/chat_avatar/chat_avatar.vue53
2 files changed, 76 insertions, 0 deletions
diff --git a/src/components/chat_avatar/chat_avatar.js b/src/components/chat_avatar/chat_avatar.js
new file mode 100644
index 00000000..7b26e07c
--- /dev/null
+++ b/src/components/chat_avatar/chat_avatar.js
@@ -0,0 +1,23 @@
+import StillImage from '../still-image/still-image.vue'
+import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
+import { mapState } from 'vuex'
+
+const ChatAvatar = {
+ props: ['user', 'width', 'height'],
+ components: {
+ StillImage
+ },
+ methods: {
+ getUserProfileLink (user) {
+ if (!user) { return }
+ return generateProfileLink(user.id, user.screen_name)
+ }
+ },
+ computed: {
+ ...mapState({
+ betterShadow: state => state.interface.browserSupport.cssFilter
+ })
+ }
+}
+
+export default ChatAvatar
diff --git a/src/components/chat_avatar/chat_avatar.vue b/src/components/chat_avatar/chat_avatar.vue
new file mode 100644
index 00000000..f54a7151
--- /dev/null
+++ b/src/components/chat_avatar/chat_avatar.vue
@@ -0,0 +1,53 @@
+<template>
+ <router-link
+ :to="getUserProfileLink(user) || ''"
+ >
+ <StillImage
+ v-if="user"
+ :style="{ 'width': width, 'height': height }"
+ class="avatar chat-avatar single-user"
+ :alt="user.screen_name"
+ :title="user.screen_name"
+ :src="user.profile_image_url_original"
+ error-src="/images/avi.png"
+ :class="{ 'better-shadow': betterShadow }"
+ />
+ <div
+ v-else
+ class="avatar chat-avatar single-user"
+ :style="{ 'width': width, 'height': height }"
+ />
+ </router-link>
+</template>
+
+<script src="./chat_avatar.js"></script>
+<style lang="scss">
+@import '../../_variables.scss';
+
+.chat-avatar {
+ display: inline-block;
+ vertical-align: middle;
+
+ &.single-user {
+ border-radius: $fallback--avatarAltRadius;
+ border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);
+ }
+
+ .avatar.still-image {
+ width: 48px;
+ height: 48px;
+
+ box-shadow: var(--avatarStatusShadow);
+ border-radius: 0;
+
+ &.better-shadow {
+ box-shadow: var(--avatarStatusShadowInset);
+ filter: var(--avatarStatusShadowFilter)
+ }
+
+ &.animated::before {
+ display: none;
+ }
+ }
+}
+</style>