This commit is contained in:
syuilo 2017-12-22 06:56:37 +09:00
parent 26b40d8886
commit 34923888c7
6 changed files with 58 additions and 3 deletions

View file

@ -473,6 +473,11 @@ desktop:
mk-user:
last-used-at: "Last used at"
follows-you: "Follows you"
mute: "Mute"
muted: "Muting"
unmute: "Unmute"
photos:
title: "Photos"
loading: "Loading"

View file

@ -473,6 +473,11 @@ desktop:
mk-user:
last-used-at: "最終アクセス"
follows-you: "フォローされています"
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
photos:
title: "フォト"
loading: "読み込み中"

View file

@ -6,6 +6,7 @@ import deepcopy = require('deepcopy');
import { default as User, IUser } from '../models/user';
import serializePost from './post';
import Following from '../models/following';
import Mute from '../models/mute';
import getFriends from '../common/get-friends';
import config from '../../conf';
import rap from '@prezzemolo/rap';
@ -113,7 +114,7 @@ export default (
}
if (meId && !meId.equals(_user.id)) {
// If the user is following
// Whether the user is following
_user.is_following = (async () => {
const follow = await Following.findOne({
follower_id: meId,
@ -123,7 +124,7 @@ export default (
return follow !== null;
})();
// If the user is followed
// Whether the user is followed
_user.is_followed = (async () => {
const follow2 = await Following.findOne({
follower_id: _user.id,
@ -132,6 +133,16 @@ export default (
});
return follow2 !== null;
})();
// Whether the user is muted
_user.is_muted = (async () => {
const mute = await Mute.findOne({
muter_id: meId,
mutee_id: _user.id,
deleted_at: { $exists: false }
});
return mute !== null;
})();
}
if (opts.detail) {

View file

@ -226,7 +226,9 @@
<mk-user-profile>
<div class="friend-form" if={ SIGNIN && I.id != user.id }>
<mk-big-follow-button user={ user }/>
<p class="followed" if={ user.is_followed }>フォローされています</p>
<p class="followed" if={ user.is_followed }>%i18n:desktop.tags.mk-user.follows-you%</p>
<p if={ user.is_muted }>%i18n:desktop.tags.mk-user.muted% <a onclick={ unmute }>%i18n:desktop.tags.mk-user.unmute%</a></p>
<p if={ !user.is_muted }><a onclick={ mute }>%i18n:desktop.tags.mk-user.mute%</a></p>
</div>
<div class="description" if={ user.description }>{ user.description }</div>
<div class="birthday" if={ user.profile.birthday }>
@ -311,6 +313,7 @@
this.age = require('s-age');
this.mixin('i');
this.mixin('api');
this.user = this.opts.user;
@ -325,6 +328,28 @@
user: this.user
});
};
this.mute = () => {
this.api('mute/create', {
user_id: this.user.id
}).then(() => {
this.user.is_muted = true;
this.update();
}, e => {
alert('error');
});
};
this.unmute = () => {
this.api('mute/delete', {
user_id: this.user.id
}).then(() => {
this.user.is_muted = false;
this.update();
}, e => {
alert('error');
});
};
</script>
</mk-user-profile>

View file

@ -75,6 +75,12 @@ props:
optional: true
desc:
ja: "自分がこのユーザーにフォローされているか"
- name: "is_muted"
type: "boolean"
optional: true
desc:
ja: "自分がこのユーザーをミュートしているか"
en: "Whether you muted this user"
- name: "last_used_at"
type: "date"
optional: false

3
src/web/docs/mute.ja.pug Normal file
View file

@ -0,0 +1,3 @@
h1 ミュート
p ユーザーをミュートすると、タイムラインや検索結果に対象のユーザーの投稿(およびそれらの投稿に対する返信やRepost)が表示されなくなります。