mirror of
https://activitypub.software/TransFem-org/Sharkey.git
synced 2024-12-15 09:15:44 +01:00
wip
This commit is contained in:
parent
1acc30822d
commit
71065077f6
44 changed files with 132 additions and 126 deletions
|
@ -53,7 +53,6 @@ module.exports = (params) => new Promise(async (res, rej) => {
|
||||||
model: os.cpus()[0].model,
|
model: os.cpus()[0].model,
|
||||||
cores: os.cpus().length
|
cores: os.cpus().length
|
||||||
},
|
},
|
||||||
top_image: meta.top_image,
|
|
||||||
broadcasts: meta.broadcasts
|
broadcasts: meta.broadcasts
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,9 +3,9 @@ import OthelloGame, { pack } from '../../../models/othello-game';
|
||||||
import Othello from '../../../../common/othello/core';
|
import Othello from '../../../../common/othello/core';
|
||||||
|
|
||||||
module.exports = (params, user) => new Promise(async (res, rej) => {
|
module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
// Get 'game_id' parameter
|
// Get 'gameId' parameter
|
||||||
const [gameId, gameIdErr] = $(params.game_id).id().$;
|
const [gameId, gameIdErr] = $(params.gameId).id().$;
|
||||||
if (gameIdErr) return rej('invalid game_id param');
|
if (gameIdErr) return rej('invalid gameId param');
|
||||||
|
|
||||||
const game = await OthelloGame.findOne({ _id: gameId });
|
const game = await OthelloGame.findOne({ _id: gameId });
|
||||||
|
|
||||||
|
|
|
@ -211,12 +211,12 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||||
|
|
||||||
// 直近の投稿と重複してたらエラー
|
// 直近の投稿と重複してたらエラー
|
||||||
// TODO: 直近の投稿が一日前くらいなら重複とは見なさない
|
// TODO: 直近の投稿が一日前くらいなら重複とは見なさない
|
||||||
if (user.latest_post) {
|
if (user.latestPost) {
|
||||||
if (deepEqual({
|
if (deepEqual({
|
||||||
text: user.latest_post.text,
|
text: user.latestPost.text,
|
||||||
reply: user.latest_post.replyId ? user.latest_post.replyId.toString() : null,
|
reply: user.latestPost.replyId ? user.latestPost.replyId.toString() : null,
|
||||||
repost: user.latest_post.repostId ? user.latest_post.repostId.toString() : null,
|
repost: user.latestPost.repostId ? user.latestPost.repostId.toString() : null,
|
||||||
mediaIds: (user.latest_post.mediaIds || []).map(id => id.toString())
|
mediaIds: (user.latestPost.mediaIds || []).map(id => id.toString())
|
||||||
}, {
|
}, {
|
||||||
text: text,
|
text: text,
|
||||||
reply: reply ? reply._id.toString() : null,
|
reply: reply ? reply._id.toString() : null,
|
||||||
|
@ -277,7 +277,7 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||||
|
|
||||||
User.update({ _id: user._id }, {
|
User.update({ _id: user._id }, {
|
||||||
$set: {
|
$set: {
|
||||||
latest_post: post
|
latestPost: post
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -362,7 +362,7 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||||
// Increment replies count
|
// Increment replies count
|
||||||
Post.update({ _id: reply._id }, {
|
Post.update({ _id: reply._id }, {
|
||||||
$inc: {
|
$inc: {
|
||||||
replies_count: 1
|
repliesCount: 1
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -457,7 +457,7 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||||
// Update repostee status
|
// Update repostee status
|
||||||
Post.update({ _id: repost._id }, {
|
Post.update({ _id: repost._id }, {
|
||||||
$inc: {
|
$inc: {
|
||||||
repost_count: 1
|
repostCount: 1
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
res();
|
res();
|
||||||
|
|
||||||
const inc = {};
|
const inc = {};
|
||||||
inc[`reaction_counts.${reaction}`] = 1;
|
inc[`reactionCounts.${reaction}`] = 1;
|
||||||
|
|
||||||
// Increment reactions count
|
// Increment reactions count
|
||||||
await Post.update({ _id: post._id }, {
|
await Post.update({ _id: post._id }, {
|
||||||
|
|
|
@ -51,7 +51,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
res();
|
res();
|
||||||
|
|
||||||
const dec = {};
|
const dec = {};
|
||||||
dec[`reaction_counts.${exist.reaction}`] = -1;
|
dec[`reactionCounts.${exist.reaction}`] = -1;
|
||||||
|
|
||||||
// Decrement reactions count
|
// Decrement reactions count
|
||||||
Post.update({ _id: post._id }, {
|
Post.update({ _id: post._id }, {
|
||||||
|
|
|
@ -21,21 +21,21 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
|
||||||
const [text, textError] = $(params.text).optional.string().$;
|
const [text, textError] = $(params.text).optional.string().$;
|
||||||
if (textError) return rej('invalid text param');
|
if (textError) return rej('invalid text param');
|
||||||
|
|
||||||
// Get 'include_userIds' parameter
|
// Get 'includeUserIds' parameter
|
||||||
const [includeUserIds = [], includeUserIdsErr] = $(params.include_userIds).optional.array('id').$;
|
const [includeUserIds = [], includeUserIdsErr] = $(params.includeUserIds).optional.array('id').$;
|
||||||
if (includeUserIdsErr) return rej('invalid include_userIds param');
|
if (includeUserIdsErr) return rej('invalid includeUserIds param');
|
||||||
|
|
||||||
// Get 'exclude_userIds' parameter
|
// Get 'exclude_userIds' parameter
|
||||||
const [excludeUserIds = [], excludeUserIdsErr] = $(params.exclude_userIds).optional.array('id').$;
|
const [excludeUserIds = [], excludeUserIdsErr] = $(params.exclude_userIds).optional.array('id').$;
|
||||||
if (excludeUserIdsErr) return rej('invalid exclude_userIds param');
|
if (excludeUserIdsErr) return rej('invalid exclude_userIds param');
|
||||||
|
|
||||||
// Get 'include_user_usernames' parameter
|
// Get 'includeUserUsernames' parameter
|
||||||
const [includeUserUsernames = [], includeUserUsernamesErr] = $(params.include_user_usernames).optional.array('string').$;
|
const [includeUserUsernames = [], includeUserUsernamesErr] = $(params.includeUserUsernames).optional.array('string').$;
|
||||||
if (includeUserUsernamesErr) return rej('invalid include_user_usernames param');
|
if (includeUserUsernamesErr) return rej('invalid includeUserUsernames param');
|
||||||
|
|
||||||
// Get 'exclude_user_usernames' parameter
|
// Get 'exclude_userUsernames' parameter
|
||||||
const [excludeUserUsernames = [], excludeUserUsernamesErr] = $(params.exclude_user_usernames).optional.array('string').$;
|
const [excludeUserUsernames = [], excludeUserUsernamesErr] = $(params.exclude_userUsernames).optional.array('string').$;
|
||||||
if (excludeUserUsernamesErr) return rej('invalid exclude_user_usernames param');
|
if (excludeUserUsernamesErr) return rej('invalid exclude_userUsernames param');
|
||||||
|
|
||||||
// Get 'following' parameter
|
// Get 'following' parameter
|
||||||
const [following = null, followingErr] = $(params.following).optional.nullable.boolean().$;
|
const [following = null, followingErr] = $(params.following).optional.nullable.boolean().$;
|
||||||
|
|
|
@ -41,7 +41,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
createdAt: {
|
createdAt: {
|
||||||
$gte: new Date(Date.now() - ms('1days'))
|
$gte: new Date(Date.now() - ms('1days'))
|
||||||
},
|
},
|
||||||
repost_count: {
|
repostCount: {
|
||||||
$gt: 0
|
$gt: 0
|
||||||
}
|
}
|
||||||
} as any;
|
} as any;
|
||||||
|
@ -68,7 +68,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
limit: limit,
|
limit: limit,
|
||||||
skip: offset,
|
skip: offset,
|
||||||
sort: {
|
sort: {
|
||||||
repost_count: -1,
|
repostCount: -1,
|
||||||
_id: -1
|
_id: -1
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -18,7 +18,7 @@ import User from '../models/user';
|
||||||
* postsCount:
|
* postsCount:
|
||||||
* description: count of all posts of misskey
|
* description: count of all posts of misskey
|
||||||
* type: number
|
* type: number
|
||||||
* users_count:
|
* usersCount:
|
||||||
* description: count of all users of misskey
|
* description: count of all users of misskey
|
||||||
* type: number
|
* type: number
|
||||||
*
|
*
|
||||||
|
@ -43,6 +43,6 @@ module.exports = params => new Promise(async (res, rej) => {
|
||||||
|
|
||||||
res({
|
res({
|
||||||
postsCount: postsCount,
|
postsCount: postsCount,
|
||||||
users_count: usersCount
|
usersCount: usersCount
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -34,13 +34,13 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
|
||||||
return rej('userId or pair of username and host is required');
|
return rej('userId or pair of username and host is required');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get 'include_replies' parameter
|
// Get 'includeReplies' parameter
|
||||||
const [includeReplies = true, includeRepliesErr] = $(params.include_replies).optional.boolean().$;
|
const [includeReplies = true, includeRepliesErr] = $(params.includeReplies).optional.boolean().$;
|
||||||
if (includeRepliesErr) return rej('invalid include_replies param');
|
if (includeRepliesErr) return rej('invalid includeReplies param');
|
||||||
|
|
||||||
// Get 'with_media' parameter
|
// Get 'withMedia' parameter
|
||||||
const [withMedia = false, withMediaErr] = $(params.with_media).optional.boolean().$;
|
const [withMedia = false, withMediaErr] = $(params.withMedia).optional.boolean().$;
|
||||||
if (withMediaErr) return rej('invalid with_media param');
|
if (withMediaErr) return rej('invalid withMedia param');
|
||||||
|
|
||||||
// Get 'limit' parameter
|
// Get 'limit' parameter
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
|
|
|
@ -96,7 +96,7 @@ export const pack = (
|
||||||
limit: 1
|
limit: 1
|
||||||
});
|
});
|
||||||
|
|
||||||
_app.is_authorized = exist === 1;
|
_app.isAuthorized = exist === 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve(_app);
|
resolve(_app);
|
||||||
|
|
|
@ -67,7 +67,7 @@ export const pack = (
|
||||||
deletedAt: { $exists: false }
|
deletedAt: { $exists: false }
|
||||||
});
|
});
|
||||||
|
|
||||||
_channel.is_watching = watch !== null;
|
_channel.isWatching = watch !== null;
|
||||||
//#endregion
|
//#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,8 +62,8 @@ export const pack = (
|
||||||
'metadata.folderId': _folder.id
|
'metadata.folderId': _folder.id
|
||||||
});
|
});
|
||||||
|
|
||||||
_folder.folders_count = childFoldersCount;
|
_folder.foldersCount = childFoldersCount;
|
||||||
_folder.files_count = childFilesCount;
|
_folder.filesCount = childFilesCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts.detail && _folder.parentId) {
|
if (opts.detail && _folder.parentId) {
|
||||||
|
|
|
@ -30,6 +30,10 @@ export type IPost = {
|
||||||
userId: mongo.ObjectID;
|
userId: mongo.ObjectID;
|
||||||
appId: mongo.ObjectID;
|
appId: mongo.ObjectID;
|
||||||
viaMobile: boolean;
|
viaMobile: boolean;
|
||||||
|
repostCount: number;
|
||||||
|
repliesCount: number;
|
||||||
|
reactionCounts: any;
|
||||||
|
mentions: mongo.ObjectID[];
|
||||||
geo: {
|
geo: {
|
||||||
latitude: number;
|
latitude: number;
|
||||||
longitude: number;
|
longitude: number;
|
||||||
|
@ -184,7 +188,7 @@ export const pack = async (
|
||||||
const myChoice = poll.choices
|
const myChoice = poll.choices
|
||||||
.filter(c => c.id == vote.choice)[0];
|
.filter(c => c.id == vote.choice)[0];
|
||||||
|
|
||||||
myChoice.is_voted = true;
|
myChoice.isVoted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return poll;
|
return poll;
|
||||||
|
|
|
@ -88,7 +88,7 @@ export type IUser = {
|
||||||
bannerId: mongo.ObjectID;
|
bannerId: mongo.ObjectID;
|
||||||
data: any;
|
data: any;
|
||||||
description: string;
|
description: string;
|
||||||
latest_post: IPost;
|
latestPost: IPost;
|
||||||
pinnedPostId: mongo.ObjectID;
|
pinnedPostId: mongo.ObjectID;
|
||||||
isSuspended: boolean;
|
isSuspended: boolean;
|
||||||
keywords: string[];
|
keywords: string[];
|
||||||
|
@ -167,7 +167,7 @@ export const pack = (
|
||||||
delete _user._id;
|
delete _user._id;
|
||||||
|
|
||||||
// Remove needless properties
|
// Remove needless properties
|
||||||
delete _user.latest_post;
|
delete _user.latestPost;
|
||||||
|
|
||||||
if (!_user.host) {
|
if (!_user.host) {
|
||||||
// Remove private properties
|
// Remove private properties
|
||||||
|
@ -212,7 +212,7 @@ export const pack = (
|
||||||
|
|
||||||
if (meId && !meId.equals(_user.id)) {
|
if (meId && !meId.equals(_user.id)) {
|
||||||
// Whether the user is following
|
// Whether the user is following
|
||||||
_user.is_following = (async () => {
|
_user.isFollowing = (async () => {
|
||||||
const follow = await Following.findOne({
|
const follow = await Following.findOne({
|
||||||
followerId: meId,
|
followerId: meId,
|
||||||
followeeId: _user.id,
|
followeeId: _user.id,
|
||||||
|
@ -222,7 +222,7 @@ export const pack = (
|
||||||
})();
|
})();
|
||||||
|
|
||||||
// Whether the user is followed
|
// Whether the user is followed
|
||||||
_user.is_followed = (async () => {
|
_user.isFollowed = (async () => {
|
||||||
const follow2 = await Following.findOne({
|
const follow2 = await Following.findOne({
|
||||||
followerId: _user.id,
|
followerId: _user.id,
|
||||||
followeeId: meId,
|
followeeId: meId,
|
||||||
|
@ -232,7 +232,7 @@ export const pack = (
|
||||||
})();
|
})();
|
||||||
|
|
||||||
// Whether the user is muted
|
// Whether the user is muted
|
||||||
_user.is_muted = (async () => {
|
_user.isMuted = (async () => {
|
||||||
const mute = await Mute.findOne({
|
const mute = await Mute.findOne({
|
||||||
muterId: meId,
|
muterId: meId,
|
||||||
muteeId: _user.id,
|
muteeId: _user.id,
|
||||||
|
@ -254,14 +254,14 @@ export const pack = (
|
||||||
const myFollowingIds = await getFriends(meId);
|
const myFollowingIds = await getFriends(meId);
|
||||||
|
|
||||||
// Get following you know count
|
// Get following you know count
|
||||||
_user.following_you_know_count = Following.count({
|
_user.followingYouKnowCount = Following.count({
|
||||||
followeeId: { $in: myFollowingIds },
|
followeeId: { $in: myFollowingIds },
|
||||||
followerId: _user.id,
|
followerId: _user.id,
|
||||||
deletedAt: { $exists: false }
|
deletedAt: { $exists: false }
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get followers you know count
|
// Get followers you know count
|
||||||
_user.followers_you_know_count = Following.count({
|
_user.followersYouKnowCount = Following.count({
|
||||||
followeeId: _user.id,
|
followeeId: _user.id,
|
||||||
followerId: { $in: myFollowingIds },
|
followerId: { $in: myFollowingIds },
|
||||||
deletedAt: { $exists: false }
|
deletedAt: { $exists: false }
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<p>このアプリがあなたのアカウントにアクセスすることはありません。</p>
|
<p>このアプリがあなたのアカウントにアクセスすることはありません。</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="accepted" v-if="state == 'accepted'">
|
<div class="accepted" v-if="state == 'accepted'">
|
||||||
<h1>{{ session.app.is_authorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました'}}</h1>
|
<h1>{{ session.app.isAuthorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました' }}</h1>
|
||||||
<p v-if="session.app.callbackUrl">アプリケーションに戻っています<mk-ellipsis/></p>
|
<p v-if="session.app.callbackUrl">アプリケーションに戻っています<mk-ellipsis/></p>
|
||||||
<p v-if="!session.app.callbackUrl">アプリケーションに戻って、やっていってください。</p>
|
<p v-if="!session.app.callbackUrl">アプリケーションに戻って、やっていってください。</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -61,7 +61,7 @@ export default Vue.extend({
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
|
|
||||||
// 既に連携していた場合
|
// 既に連携していた場合
|
||||||
if (this.session.app.is_authorized) {
|
if (this.session.app.isAuthorized) {
|
||||||
this.$root.$data.os.api('auth/accept', {
|
this.$root.$data.os.api('auth/accept', {
|
||||||
token: this.session.token
|
token: this.session.token
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
<h1>{ channel.title }</h1>
|
<h1>{ channel.title }</h1>
|
||||||
|
|
||||||
<div v-if="$root.$data.os.isSignedIn">
|
<div v-if="$root.$data.os.isSignedIn">
|
||||||
<p v-if="channel.is_watching">このチャンネルをウォッチしています <a @click="unwatch">ウォッチ解除</a></p>
|
<p v-if="channel.isWatching">このチャンネルをウォッチしています <a @click="unwatch">ウォッチ解除</a></p>
|
||||||
<p v-if="!channel.is_watching"><a @click="watch">このチャンネルをウォッチする</a></p>
|
<p v-if="!channel.isWatching"><a @click="watch">このチャンネルをウォッチする</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="share">
|
<div class="share">
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
this.$root.$data.os.api('channels/watch', {
|
this.$root.$data.os.api('channels/watch', {
|
||||||
channelId: this.id
|
channelId: this.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.channel.is_watching = true;
|
this.channel.isWatching = true;
|
||||||
this.update();
|
this.update();
|
||||||
}, e => {
|
}, e => {
|
||||||
alert('error');
|
alert('error');
|
||||||
|
@ -153,7 +153,7 @@
|
||||||
this.$root.$data.os.api('channels/unwatch', {
|
this.$root.$data.os.api('channels/unwatch', {
|
||||||
channelId: this.id
|
channelId: this.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.channel.is_watching = false;
|
this.channel.isWatching = false;
|
||||||
this.update();
|
this.update();
|
||||||
}, e => {
|
}, e => {
|
||||||
alert('error');
|
alert('error');
|
||||||
|
|
|
@ -8,10 +8,10 @@ export default function(qs: string) {
|
||||||
const [key, value] = x.split(':');
|
const [key, value] = x.split(':');
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'user':
|
case 'user':
|
||||||
q['include_user_usernames'] = value.split(',');
|
q['includeUserUsernames'] = value.split(',');
|
||||||
break;
|
break;
|
||||||
case 'exclude_user':
|
case 'exclude_user':
|
||||||
q['exclude_user_usernames'] = value.split(',');
|
q['exclude_userUsernames'] = value.split(',');
|
||||||
break;
|
break;
|
||||||
case 'follow':
|
case 'follow':
|
||||||
q['following'] = value == 'null' ? null : value == 'true';
|
q['following'] = value == 'null' ? null : value == 'true';
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<button class="delete-button" v-if="isMe" title="%i18n:common.delete%">
|
<button class="delete-button" v-if="isMe" title="%i18n:common.delete%">
|
||||||
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
|
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
|
||||||
</button>
|
</button>
|
||||||
<div class="content" v-if="!message.is_deleted">
|
<div class="content" v-if="!message.isDeleted">
|
||||||
<mk-post-html class="text" v-if="message.ast" :ast="message.ast" :i="os.i"/>
|
<mk-post-html class="text" v-if="message.ast" :ast="message.ast" :i="os.i"/>
|
||||||
<div class="file" v-if="message.file">
|
<div class="file" v-if="message.file">
|
||||||
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content" v-if="message.is_deleted">
|
<div class="content" v-if="message.isDeleted">
|
||||||
<p class="is-deleted">%i18n:common.tags.mk-messaging-message.deleted%</p>
|
<p class="is-deleted">%i18n:common.tags.mk-messaging-message.deleted%</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -133,7 +133,7 @@ export default Vue.extend({
|
||||||
methods: {
|
methods: {
|
||||||
go(game) {
|
go(game) {
|
||||||
(this as any).api('othello/games/show', {
|
(this as any).api('othello/games/show', {
|
||||||
game_id: game.id
|
gameId: game.id
|
||||||
}).then(game => {
|
}).then(game => {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
this.game = game;
|
this.game = game;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<li v-for="choice in poll.choices" :key="choice.id" @click="vote(choice.id)" :class="{ voted: choice.voted }" :title="!isVoted ? '%i18n:common.tags.mk-poll.vote-to%'.replace('{}', choice.text) : ''">
|
<li v-for="choice in poll.choices" :key="choice.id" @click="vote(choice.id)" :class="{ voted: choice.voted }" :title="!isVoted ? '%i18n:common.tags.mk-poll.vote-to%'.replace('{}', choice.text) : ''">
|
||||||
<div class="backdrop" :style="{ 'width': (showResult ? (choice.votes / total * 100) : 0) + '%' }"></div>
|
<div class="backdrop" :style="{ 'width': (showResult ? (choice.votes / total * 100) : 0) + '%' }"></div>
|
||||||
<span>
|
<span>
|
||||||
<template v-if="choice.is_voted">%fa:check%</template>
|
<template v-if="choice.isVoted">%fa:check%</template>
|
||||||
<span>{{ choice.text }}</span>
|
<span>{{ choice.text }}</span>
|
||||||
<span class="votes" v-if="showResult">({{ '%i18n:common.tags.mk-poll.vote-count%'.replace('{}', choice.votes) }})</span>
|
<span class="votes" v-if="showResult">({{ '%i18n:common.tags.mk-poll.vote-count%'.replace('{}', choice.votes) }})</span>
|
||||||
</span>
|
</span>
|
||||||
|
@ -36,7 +36,7 @@ export default Vue.extend({
|
||||||
return this.poll.choices.reduce((a, b) => a + b.votes, 0);
|
return this.poll.choices.reduce((a, b) => a + b.votes, 0);
|
||||||
},
|
},
|
||||||
isVoted(): boolean {
|
isVoted(): boolean {
|
||||||
return this.poll.choices.some(c => c.is_voted);
|
return this.poll.choices.some(c => c.isVoted);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -47,7 +47,7 @@ export default Vue.extend({
|
||||||
this.showResult = !this.showResult;
|
this.showResult = !this.showResult;
|
||||||
},
|
},
|
||||||
vote(id) {
|
vote(id) {
|
||||||
if (this.poll.choices.some(c => c.is_voted)) return;
|
if (this.poll.choices.some(c => c.isVoted)) return;
|
||||||
(this as any).api('posts/polls/vote', {
|
(this as any).api('posts/polls/vote', {
|
||||||
postId: this.post.id,
|
postId: this.post.id,
|
||||||
choice: id
|
choice: id
|
||||||
|
@ -55,7 +55,7 @@ export default Vue.extend({
|
||||||
this.poll.choices.forEach(c => {
|
this.poll.choices.forEach(c => {
|
||||||
if (c.id == id) {
|
if (c.id == id) {
|
||||||
c.votes++;
|
c.votes++;
|
||||||
Vue.set(c, 'is_voted', true);
|
Vue.set(c, 'isVoted', true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.showResult = true;
|
this.showResult = true;
|
||||||
|
|
|
@ -20,7 +20,7 @@ export default Vue.extend({
|
||||||
props: ['post'],
|
props: ['post'],
|
||||||
computed: {
|
computed: {
|
||||||
reactions(): number {
|
reactions(): number {
|
||||||
return this.post.reaction_counts;
|
return this.post.reactionCounts;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<button class="mk-follow-button"
|
<button class="mk-follow-button"
|
||||||
:class="{ wait, follow: !user.is_following, unfollow: user.is_following, big: size == 'big' }"
|
:class="{ wait, follow: !user.isFollowing, unfollow: user.isFollowing, big: size == 'big' }"
|
||||||
@click="onClick"
|
@click="onClick"
|
||||||
:disabled="wait"
|
:disabled="wait"
|
||||||
:title="user.is_following ? 'フォロー解除' : 'フォローする'"
|
:title="user.isFollowing ? 'フォロー解除' : 'フォローする'"
|
||||||
>
|
>
|
||||||
<template v-if="!wait && user.is_following">
|
<template v-if="!wait && user.isFollowing">
|
||||||
<template v-if="size == 'compact'">%fa:minus%</template>
|
<template v-if="size == 'compact'">%fa:minus%</template>
|
||||||
<template v-if="size == 'big'">%fa:minus%フォロー解除</template>
|
<template v-if="size == 'big'">%fa:minus%フォロー解除</template>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="!wait && !user.is_following">
|
<template v-if="!wait && !user.isFollowing">
|
||||||
<template v-if="size == 'compact'">%fa:plus%</template>
|
<template v-if="size == 'compact'">%fa:plus%</template>
|
||||||
<template v-if="size == 'big'">%fa:plus%フォロー</template>
|
<template v-if="size == 'big'">%fa:plus%フォロー</template>
|
||||||
</template>
|
</template>
|
||||||
|
@ -53,23 +53,23 @@ export default Vue.extend({
|
||||||
|
|
||||||
onFollow(user) {
|
onFollow(user) {
|
||||||
if (user.id == this.user.id) {
|
if (user.id == this.user.id) {
|
||||||
this.user.is_following = user.is_following;
|
this.user.isFollowing = user.isFollowing;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onUnfollow(user) {
|
onUnfollow(user) {
|
||||||
if (user.id == this.user.id) {
|
if (user.id == this.user.id) {
|
||||||
this.user.is_following = user.is_following;
|
this.user.isFollowing = user.isFollowing;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onClick() {
|
onClick() {
|
||||||
this.wait = true;
|
this.wait = true;
|
||||||
if (this.user.is_following) {
|
if (this.user.isFollowing) {
|
||||||
(this as any).api('following/delete', {
|
(this as any).api('following/delete', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.user.is_following = false;
|
this.user.isFollowing = false;
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
@ -79,7 +79,7 @@ export default Vue.extend({
|
||||||
(this as any).api('following/create', {
|
(this as any).api('following/create', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.user.is_following = true;
|
this.user.isFollowing = true;
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<mk-users-list
|
<mk-users-list
|
||||||
:fetch="fetch"
|
:fetch="fetch"
|
||||||
:count="user.followersCount"
|
:count="user.followersCount"
|
||||||
:you-know-count="user.followers_you_know_count"
|
:you-know-count="user.followersYouKnowCount"
|
||||||
>
|
>
|
||||||
フォロワーはいないようです。
|
フォロワーはいないようです。
|
||||||
</mk-users-list>
|
</mk-users-list>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<mk-users-list
|
<mk-users-list
|
||||||
:fetch="fetch"
|
:fetch="fetch"
|
||||||
:count="user.followingCount"
|
:count="user.followingCount"
|
||||||
:you-know-count="user.following_you_know_count"
|
:you-know-count="user.followingYouKnowCount"
|
||||||
>
|
>
|
||||||
フォロー中のユーザーはいないようです。
|
フォロー中のユーザーはいないようです。
|
||||||
</mk-users-list>
|
</mk-users-list>
|
||||||
|
|
|
@ -56,10 +56,10 @@
|
||||||
<footer>
|
<footer>
|
||||||
<mk-reactions-viewer :post="p"/>
|
<mk-reactions-viewer :post="p"/>
|
||||||
<button @click="reply" title="返信">
|
<button @click="reply" title="返信">
|
||||||
%fa:reply%<p class="count" v-if="p.replies_count > 0">{{ p.replies_count }}</p>
|
%fa:reply%<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="repost" title="Repost">
|
<button @click="repost" title="Repost">
|
||||||
%fa:retweet%<p class="count" v-if="p.repost_count > 0">{{ p.repost_count }}</p>
|
%fa:retweet%<p class="count" v-if="p.repostCount > 0">{{ p.repostCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton" title="リアクション">
|
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton" title="リアクション">
|
||||||
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
||||||
|
@ -122,9 +122,9 @@ export default Vue.extend({
|
||||||
return this.isRepost ? this.post.repost : this.post;
|
return this.isRepost ? this.post.repost : this.post;
|
||||||
},
|
},
|
||||||
reactionsCount(): number {
|
reactionsCount(): number {
|
||||||
return this.p.reaction_counts
|
return this.p.reactionCounts
|
||||||
? Object.keys(this.p.reaction_counts)
|
? Object.keys(this.p.reactionCounts)
|
||||||
.map(key => this.p.reaction_counts[key])
|
.map(key => this.p.reactionCounts[key])
|
||||||
.reduce((a, b) => a + b)
|
.reduce((a, b) => a + b)
|
||||||
: 0;
|
: 0;
|
||||||
},
|
},
|
||||||
|
|
|
@ -58,10 +58,10 @@
|
||||||
<footer>
|
<footer>
|
||||||
<mk-reactions-viewer :post="p" ref="reactionsViewer"/>
|
<mk-reactions-viewer :post="p" ref="reactionsViewer"/>
|
||||||
<button @click="reply" title="%i18n:desktop.tags.mk-timeline-post.reply%">
|
<button @click="reply" title="%i18n:desktop.tags.mk-timeline-post.reply%">
|
||||||
%fa:reply%<p class="count" v-if="p.replies_count > 0">{{ p.replies_count }}</p>
|
%fa:reply%<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="repost" title="%i18n:desktop.tags.mk-timeline-post.repost%">
|
<button @click="repost" title="%i18n:desktop.tags.mk-timeline-post.repost%">
|
||||||
%fa:retweet%<p class="count" v-if="p.repost_count > 0">{{ p.repost_count }}</p>
|
%fa:retweet%<p class="count" v-if="p.repostCount > 0">{{ p.repostCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton" title="%i18n:desktop.tags.mk-timeline-post.add-reaction%">
|
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton" title="%i18n:desktop.tags.mk-timeline-post.add-reaction%">
|
||||||
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
||||||
|
@ -129,9 +129,9 @@ export default Vue.extend({
|
||||||
return this.isRepost ? this.post.repost : this.post;
|
return this.isRepost ? this.post.repost : this.post;
|
||||||
},
|
},
|
||||||
reactionsCount(): number {
|
reactionsCount(): number {
|
||||||
return this.p.reaction_counts
|
return this.p.reactionCounts
|
||||||
? Object.keys(this.p.reaction_counts)
|
? Object.keys(this.p.reactionCounts)
|
||||||
.map(key => this.p.reaction_counts[key])
|
.map(key => this.p.reactionCounts[key])
|
||||||
.reduce((a, b) => a + b)
|
.reduce((a, b) => a + b)
|
||||||
: 0;
|
: 0;
|
||||||
},
|
},
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<span class="username">@{{ acct }}</span>
|
<span class="username">@{{ acct }}</span>
|
||||||
</header>
|
</header>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<p class="followed" v-if="user.is_followed">フォローされています</p>
|
<p class="followed" v-if="user.isFollowed">フォローされています</p>
|
||||||
<div class="description">{{ user.description }}</div>
|
<div class="description">{{ user.description }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -34,7 +34,7 @@ export default Vue.extend({
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
|
|
||||||
(this as any).api('othello/games/show', {
|
(this as any).api('othello/games/show', {
|
||||||
game_id: this.$route.params.game
|
gameId: this.$route.params.game
|
||||||
}).then(game => {
|
}).then(game => {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
|
|
|
@ -24,7 +24,7 @@ export default Vue.extend({
|
||||||
mounted() {
|
mounted() {
|
||||||
(this as any).api('users/posts', {
|
(this as any).api('users/posts', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
with_media: true,
|
withMedia: true,
|
||||||
limit: 9
|
limit: 9
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
posts.forEach(post => {
|
posts.forEach(post => {
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<div class="friend-form" v-if="os.isSignedIn && os.i.id != user.id">
|
<div class="friend-form" v-if="os.isSignedIn && os.i.id != user.id">
|
||||||
<mk-follow-button :user="user" size="big"/>
|
<mk-follow-button :user="user" size="big"/>
|
||||||
<p class="followed" v-if="user.is_followed">%i18n:desktop.tags.mk-user.follows-you%</p>
|
<p class="followed" v-if="user.isFollowed">%i18n:desktop.tags.mk-user.follows-you%</p>
|
||||||
<p v-if="user.is_muted">%i18n:desktop.tags.mk-user.muted% <a @click="unmute">%i18n:desktop.tags.mk-user.unmute%</a></p>
|
<p v-if="user.isMuted">%i18n:desktop.tags.mk-user.muted% <a @click="unmute">%i18n:desktop.tags.mk-user.unmute%</a></p>
|
||||||
<p v-if="!user.is_muted"><a @click="mute">%i18n:desktop.tags.mk-user.mute%</a></p>
|
<p v-if="!user.isMuted"><a @click="mute">%i18n:desktop.tags.mk-user.mute%</a></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="description" v-if="user.description">{{ user.description }}</div>
|
<div class="description" v-if="user.description">{{ user.description }}</div>
|
||||||
<div class="birthday" v-if="user.host === null && user.account.profile.birthday">
|
<div class="birthday" v-if="user.host === null && user.account.profile.birthday">
|
||||||
|
@ -51,7 +51,7 @@ export default Vue.extend({
|
||||||
(this as any).api('mute/create', {
|
(this as any).api('mute/create', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.user.is_muted = true;
|
this.user.isMuted = true;
|
||||||
}, () => {
|
}, () => {
|
||||||
alert('error');
|
alert('error');
|
||||||
});
|
});
|
||||||
|
@ -61,7 +61,7 @@ export default Vue.extend({
|
||||||
(this as any).api('mute/delete', {
|
(this as any).api('mute/delete', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.user.is_muted = false;
|
this.user.isMuted = false;
|
||||||
}, () => {
|
}, () => {
|
||||||
alert('error');
|
alert('error');
|
||||||
});
|
});
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
<div class="browser" :class="{ fetching }" v-if="file == null">
|
<div class="browser" :class="{ fetching }" v-if="file == null">
|
||||||
<div class="info" v-if="info">
|
<div class="info" v-if="info">
|
||||||
<p v-if="folder == null">{{ (info.usage / info.capacity * 100).toFixed(1) }}% %i18n:mobile.tags.mk-drive.used%</p>
|
<p v-if="folder == null">{{ (info.usage / info.capacity * 100).toFixed(1) }}% %i18n:mobile.tags.mk-drive.used%</p>
|
||||||
<p v-if="folder != null && (folder.folders_count > 0 || folder.files_count > 0)">
|
<p v-if="folder != null && (folder.foldersCount > 0 || folder.filesCount > 0)">
|
||||||
<template v-if="folder.folders_count > 0">{{ folder.folders_count }} %i18n:mobile.tags.mk-drive.folder-count%</template>
|
<template v-if="folder.foldersCount > 0">{{ folder.foldersCount }} %i18n:mobile.tags.mk-drive.folder-count%</template>
|
||||||
<template v-if="folder.folders_count > 0 && folder.files_count > 0">%i18n:mobile.tags.mk-drive.count-separator%</template>
|
<template v-if="folder.foldersCount > 0 && folder.filesCount > 0">%i18n:mobile.tags.mk-drive.count-separator%</template>
|
||||||
<template v-if="folder.files_count > 0">{{ folder.files_count }} %i18n:mobile.tags.mk-drive.file-count%</template>
|
<template v-if="folder.filesCount > 0">{{ folder.filesCount }} %i18n:mobile.tags.mk-drive.file-count%</template>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="folders" v-if="folders.length > 0">
|
<div class="folders" v-if="folders.length > 0">
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<button class="mk-follow-button"
|
<button class="mk-follow-button"
|
||||||
:class="{ wait: wait, follow: !user.is_following, unfollow: user.is_following }"
|
:class="{ wait: wait, follow: !user.isFollowing, unfollow: user.isFollowing }"
|
||||||
@click="onClick"
|
@click="onClick"
|
||||||
:disabled="wait"
|
:disabled="wait"
|
||||||
>
|
>
|
||||||
<template v-if="!wait && user.is_following">%fa:minus%</template>
|
<template v-if="!wait && user.isFollowing">%fa:minus%</template>
|
||||||
<template v-if="!wait && !user.is_following">%fa:plus%</template>
|
<template v-if="!wait && !user.isFollowing">%fa:plus%</template>
|
||||||
<template v-if="wait">%fa:spinner .pulse .fw%</template>
|
<template v-if="wait">%fa:spinner .pulse .fw%</template>
|
||||||
{{ user.is_following ? '%i18n:mobile.tags.mk-follow-button.unfollow%' : '%i18n:mobile.tags.mk-follow-button.follow%' }}
|
{{ user.isFollowing ? '%i18n:mobile.tags.mk-follow-button.unfollow%' : '%i18n:mobile.tags.mk-follow-button.follow%' }}
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -43,23 +43,23 @@ export default Vue.extend({
|
||||||
|
|
||||||
onFollow(user) {
|
onFollow(user) {
|
||||||
if (user.id == this.user.id) {
|
if (user.id == this.user.id) {
|
||||||
this.user.is_following = user.is_following;
|
this.user.isFollowing = user.isFollowing;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onUnfollow(user) {
|
onUnfollow(user) {
|
||||||
if (user.id == this.user.id) {
|
if (user.id == this.user.id) {
|
||||||
this.user.is_following = user.is_following;
|
this.user.isFollowing = user.isFollowing;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onClick() {
|
onClick() {
|
||||||
this.wait = true;
|
this.wait = true;
|
||||||
if (this.user.is_following) {
|
if (this.user.isFollowing) {
|
||||||
(this as any).api('following/delete', {
|
(this as any).api('following/delete', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.user.is_following = false;
|
this.user.isFollowing = false;
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
@ -69,7 +69,7 @@ export default Vue.extend({
|
||||||
(this as any).api('following/create', {
|
(this as any).api('following/create', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.user.is_following = true;
|
this.user.isFollowing = true;
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
|
@ -59,10 +59,10 @@
|
||||||
<footer>
|
<footer>
|
||||||
<mk-reactions-viewer :post="p"/>
|
<mk-reactions-viewer :post="p"/>
|
||||||
<button @click="reply" title="%i18n:mobile.tags.mk-post-detail.reply%">
|
<button @click="reply" title="%i18n:mobile.tags.mk-post-detail.reply%">
|
||||||
%fa:reply%<p class="count" v-if="p.replies_count > 0">{{ p.replies_count }}</p>
|
%fa:reply%<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="repost" title="Repost">
|
<button @click="repost" title="Repost">
|
||||||
%fa:retweet%<p class="count" v-if="p.repost_count > 0">{{ p.repost_count }}</p>
|
%fa:retweet%<p class="count" v-if="p.repostCount > 0">{{ p.repostCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton" title="%i18n:mobile.tags.mk-post-detail.reaction%">
|
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton" title="%i18n:mobile.tags.mk-post-detail.reaction%">
|
||||||
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
||||||
|
@ -122,9 +122,9 @@ export default Vue.extend({
|
||||||
return this.isRepost ? this.post.repost : this.post;
|
return this.isRepost ? this.post.repost : this.post;
|
||||||
},
|
},
|
||||||
reactionsCount(): number {
|
reactionsCount(): number {
|
||||||
return this.p.reaction_counts
|
return this.p.reactionCounts
|
||||||
? Object.keys(this.p.reaction_counts)
|
? Object.keys(this.p.reactionCounts)
|
||||||
.map(key => this.p.reaction_counts[key])
|
.map(key => this.p.reactionCounts[key])
|
||||||
.reduce((a, b) => a + b)
|
.reduce((a, b) => a + b)
|
||||||
: 0;
|
: 0;
|
||||||
},
|
},
|
||||||
|
|
|
@ -58,10 +58,10 @@
|
||||||
<footer>
|
<footer>
|
||||||
<mk-reactions-viewer :post="p" ref="reactionsViewer"/>
|
<mk-reactions-viewer :post="p" ref="reactionsViewer"/>
|
||||||
<button @click="reply">
|
<button @click="reply">
|
||||||
%fa:reply%<p class="count" v-if="p.replies_count > 0">{{ p.replies_count }}</p>
|
%fa:reply%<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="repost" title="Repost">
|
<button @click="repost" title="Repost">
|
||||||
%fa:retweet%<p class="count" v-if="p.repost_count > 0">{{ p.repost_count }}</p>
|
%fa:retweet%<p class="count" v-if="p.repostCount > 0">{{ p.repostCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton">
|
<button :class="{ reacted: p.my_reaction != null }" @click="react" ref="reactButton">
|
||||||
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
||||||
|
@ -110,9 +110,9 @@ export default Vue.extend({
|
||||||
return this.isRepost ? this.post.repost : this.post;
|
return this.isRepost ? this.post.repost : this.post;
|
||||||
},
|
},
|
||||||
reactionsCount(): number {
|
reactionsCount(): number {
|
||||||
return this.p.reaction_counts
|
return this.p.reactionCounts
|
||||||
? Object.keys(this.p.reaction_counts)
|
? Object.keys(this.p.reactionCounts)
|
||||||
.map(key => this.p.reaction_counts[key])
|
.map(key => this.p.reactionCounts[key])
|
||||||
.reduce((a, b) => a + b)
|
.reduce((a, b) => a + b)
|
||||||
: 0;
|
: 0;
|
||||||
},
|
},
|
||||||
|
|
|
@ -34,7 +34,7 @@ export default Vue.extend({
|
||||||
mounted() {
|
mounted() {
|
||||||
(this as any).api('users/posts', {
|
(this as any).api('users/posts', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
with_media: this.withMedia,
|
withMedia: this.withMedia,
|
||||||
limit: limit + 1
|
limit: limit + 1
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
if (posts.length == limit + 1) {
|
if (posts.length == limit + 1) {
|
||||||
|
@ -51,7 +51,7 @@ export default Vue.extend({
|
||||||
this.moreFetching = true;
|
this.moreFetching = true;
|
||||||
(this as any).api('users/posts', {
|
(this as any).api('users/posts', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
with_media: this.withMedia,
|
withMedia: this.withMedia,
|
||||||
limit: limit + 1,
|
limit: limit + 1,
|
||||||
untilId: this.posts[this.posts.length - 1].id
|
untilId: this.posts[this.posts.length - 1].id
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
v-if="!fetching"
|
v-if="!fetching"
|
||||||
:fetch="fetchUsers"
|
:fetch="fetchUsers"
|
||||||
:count="user.followersCount"
|
:count="user.followersCount"
|
||||||
:you-know-count="user.followers_you_know_count"
|
:you-know-count="user.followersYouKnowCount"
|
||||||
@loaded="onLoaded"
|
@loaded="onLoaded"
|
||||||
>
|
>
|
||||||
%i18n:mobile.tags.mk-user-followers.no-users%
|
%i18n:mobile.tags.mk-user-followers.no-users%
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
v-if="!fetching"
|
v-if="!fetching"
|
||||||
:fetch="fetchUsers"
|
:fetch="fetchUsers"
|
||||||
:count="user.followingCount"
|
:count="user.followingCount"
|
||||||
:you-know-count="user.following_you_know_count"
|
:you-know-count="user.followingYouKnowCount"
|
||||||
@loaded="onLoaded"
|
@loaded="onLoaded"
|
||||||
>
|
>
|
||||||
%i18n:mobile.tags.mk-user-following.no-users%
|
%i18n:mobile.tags.mk-user-following.no-users%
|
||||||
|
|
|
@ -34,7 +34,7 @@ export default Vue.extend({
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
|
|
||||||
(this as any).api('othello/games/show', {
|
(this as any).api('othello/games/show', {
|
||||||
game_id: this.$route.params.game
|
gameId: this.$route.params.game
|
||||||
}).then(game => {
|
}).then(game => {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h1>{{ user.name }}</h1>
|
<h1>{{ user.name }}</h1>
|
||||||
<span class="username">@{{ acct }}</span>
|
<span class="username">@{{ acct }}</span>
|
||||||
<span class="followed" v-if="user.is_followed">%i18n:mobile.tags.mk-user.follows-you%</span>
|
<span class="followed" v-if="user.isFollowed">%i18n:mobile.tags.mk-user.follows-you%</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="description">{{ user.description }}</div>
|
<div class="description">{{ user.description }}</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
|
|
|
@ -30,7 +30,7 @@ export default Vue.extend({
|
||||||
mounted() {
|
mounted() {
|
||||||
(this as any).api('users/posts', {
|
(this as any).api('users/posts', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
with_media: true,
|
withMedia: true,
|
||||||
limit: 6
|
limit: 6
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
posts.forEach(post => {
|
posts.forEach(post => {
|
||||||
|
|
|
@ -83,7 +83,7 @@
|
||||||
</mk-posts>
|
</mk-posts>
|
||||||
|
|
||||||
<mk-users>
|
<mk-users>
|
||||||
<h2>%i18n:stats.users-count% <b>{ stats.users_count }</b></h2>
|
<h2>%i18n:stats.users-count% <b>{ stats.usersCount }</b></h2>
|
||||||
<mk-users-chart v-if="!initializing" data={ data }/>
|
<mk-users-chart v-if="!initializing" data={ data }/>
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
:scope
|
:scope
|
||||||
|
|
|
@ -59,7 +59,7 @@ props:
|
||||||
desc:
|
desc:
|
||||||
ja: "この投稿に対する自分の<a href='/docs/api/reactions'>リアクション</a>"
|
ja: "この投稿に対する自分の<a href='/docs/api/reactions'>リアクション</a>"
|
||||||
en: "The your <a href='/docs/api/reactions'>reaction</a> of this post"
|
en: "The your <a href='/docs/api/reactions'>reaction</a> of this post"
|
||||||
- name: "reaction_counts"
|
- name: "reactionCounts"
|
||||||
type: "object"
|
type: "object"
|
||||||
optional: false
|
optional: false
|
||||||
desc:
|
desc:
|
||||||
|
@ -110,7 +110,7 @@ props:
|
||||||
desc:
|
desc:
|
||||||
ja: "選択肢ID"
|
ja: "選択肢ID"
|
||||||
en: "The ID of this choice"
|
en: "The ID of this choice"
|
||||||
- name: "is_voted"
|
- name: "isVoted"
|
||||||
type: "boolean"
|
type: "boolean"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
|
|
|
@ -65,17 +65,17 @@ props:
|
||||||
desc:
|
desc:
|
||||||
ja: "フォローしているユーザーの数"
|
ja: "フォローしているユーザーの数"
|
||||||
en: "The number of the following users for this user"
|
en: "The number of the following users for this user"
|
||||||
- name: "is_following"
|
- name: "isFollowing"
|
||||||
type: "boolean"
|
type: "boolean"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
ja: "自分がこのユーザーをフォローしているか"
|
ja: "自分がこのユーザーをフォローしているか"
|
||||||
- name: "is_followed"
|
- name: "isFollowed"
|
||||||
type: "boolean"
|
type: "boolean"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
ja: "自分がこのユーザーにフォローされているか"
|
ja: "自分がこのユーザーにフォローされているか"
|
||||||
- name: "is_muted"
|
- name: "isMuted"
|
||||||
type: "boolean"
|
type: "boolean"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
|
|
|
@ -176,6 +176,9 @@ db.posts.update({}, {
|
||||||
reply_id: 'replyId',
|
reply_id: 'replyId',
|
||||||
repost_id: 'repostId',
|
repost_id: 'repostId',
|
||||||
via_mobile: 'viaMobile',
|
via_mobile: 'viaMobile',
|
||||||
|
reaction_counts: 'reactionCounts',
|
||||||
|
replies_count: 'repliesCount',
|
||||||
|
repost_count: 'repostCount',
|
||||||
'_reply.user_id': '_reply.userId',
|
'_reply.user_id': '_reply.userId',
|
||||||
'_repost.user_id': '_repost.userId',
|
'_repost.user_id': '_repost.userId',
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue