summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-05-06 18:04:37 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-05-06 18:04:37 +0900
commit3f2a7a561ee7e008422d4cac3b269beb6006072a (patch)
treee3ba00363cf0bdef063b392b7e400c689d15ba98 /src
parentFix (diff)
downloadsharkey-3f2a7a561ee7e008422d4cac3b269beb6006072a.tar.gz
sharkey-3f2a7a561ee7e008422d4cac3b269beb6006072a.tar.bz2
sharkey-3f2a7a561ee7e008422d4cac3b269beb6006072a.zip
アイコンのレンダリングを改善
Diffstat (limited to 'src')
-rw-r--r--src/client/app/common/views/components/avatar.vue28
-rw-r--r--src/client/app/mobile/views/pages/user.vue2
-rw-r--r--src/server/api/endpoints/i/update.ts23
3 files changed, 39 insertions, 14 deletions
diff --git a/src/client/app/common/views/components/avatar.vue b/src/client/app/common/views/components/avatar.vue
index 460c6e23be..60ee06b482 100644
--- a/src/client/app/common/views/components/avatar.vue
+++ b/src/client/app/common/views/components/avatar.vue
@@ -1,8 +1,6 @@
<template>
- <router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="{ borderRadius: clientSettings.circleIcons ? '100%' : null }">
- <img v-if="disablePreview" :src="`${user.avatarUrl}?thumbnail&size=128`" alt=""/>
- <img v-else :src="`${user.avatarUrl}?thumbnail&size=128`" alt="" v-user-preview="user.id"/>
- </router-link>
+ <router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-if="disablePreview"></router-link>
+ <router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-else v-user-preview="user.id"></router-link>
</template>
<script lang="ts">
@@ -10,6 +8,7 @@ import Vue from 'vue';
export default Vue.extend({
props: {
user: {
+ type: Object,
required: true
},
target: {
@@ -20,6 +19,15 @@ export default Vue.extend({
required: false,
default: false
}
+ },
+ computed: {
+ style(): any {
+ return {
+ backgroundColor: this.user.avatarColor ? `rgb(${ this.user.avatarColor.join(',') })` : null,
+ backgroundImage: `url(${ this.user.avatarUrl }?thumbnail)`,
+ borderRadius: (this as any).clientSettings.circleIcons ? '100%' : null
+ };
+ }
}
});
</script>
@@ -27,13 +35,7 @@ export default Vue.extend({
<style lang="stylus" scoped>
.mk-avatar
display inline-block
-
- > img
- display inline-block
- width 100%
- height 100%
- margin 0
- border-radius inherit
- vertical-align bottom
- transition border-radius 1s ease
+ background-size cover
+ background-position center center
+ transition border-radius 1s ease
</style>
diff --git a/src/client/app/mobile/views/pages/user.vue b/src/client/app/mobile/views/pages/user.vue
index c602a26388..12874421d1 100644
--- a/src/client/app/mobile/views/pages/user.vue
+++ b/src/client/app/mobile/views/pages/user.vue
@@ -9,7 +9,7 @@
<div class="body">
<div class="top">
<a class="avatar">
- <img :src="`${user.avatarUrl}?thumbnail&size=200`" alt="avatar"/>
+ <img :src="user.avatarUrl" alt="avatar"/>
</a>
<mk-follow-button v-if="os.isSignedIn && os.i.id != user.id" :user="user"/>
</div>
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 6ba4729951..b7b25d0f65 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -4,6 +4,7 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import User, { isValidName, isValidDescription, isValidLocation, isValidBirthday, pack } from '../../../../models/user';
import event from '../../../../publishers/stream';
+import DriveFile from '../../../../models/drive-file';
/**
* Update myself
@@ -51,12 +52,34 @@ module.exports = async (params, user, app) => new Promise(async (res, rej) => {
if (autoWatchErr) return rej('invalid autoWatch param');
if (autoWatch != null) user.settings.autoWatch = autoWatch;
+ if (avatarId) {
+ const avatar = await DriveFile.findOne({
+ _id: avatarId
+ });
+
+ if (avatar != null && avatar.metadata.properties.avgColor) {
+ user.avatarColor = avatar.metadata.properties.avgColor;
+ }
+ }
+
+ if (bannerId) {
+ const banner = await DriveFile.findOne({
+ _id: bannerId
+ });
+
+ if (banner != null && banner.metadata.properties.avgColor) {
+ user.bannerColor = banner.metadata.properties.avgColor;
+ }
+ }
+
await User.update(user._id, {
$set: {
name: user.name,
description: user.description,
avatarId: user.avatarId,
+ avatarColor: user.avatarColor,
bannerId: user.bannerId,
+ bannerColor: user.bannerColor,
profile: user.profile,
isBot: user.isBot,
settings: user.settings