wip
This commit is contained in:
parent
3d5cdb8d2d
commit
1acc30822d
90 changed files with 286 additions and 286 deletions
|
@ -297,7 +297,7 @@ class TlContext extends Context {
|
||||||
private async getTl() {
|
private async getTl() {
|
||||||
const tl = await require('../endpoints/posts/timeline')({
|
const tl = await require('../endpoints/posts/timeline')({
|
||||||
limit: 5,
|
limit: 5,
|
||||||
until_id: this.next ? this.next : undefined
|
untilId: this.next ? this.next : undefined
|
||||||
}, this.bot.user);
|
}, this.bot.user);
|
||||||
|
|
||||||
if (tl.length > 0) {
|
if (tl.length > 0) {
|
||||||
|
@ -349,7 +349,7 @@ class NotificationsContext extends Context {
|
||||||
private async getNotifications() {
|
private async getNotifications() {
|
||||||
const notifications = await require('../endpoints/i/notifications')({
|
const notifications = await require('../endpoints/i/notifications')({
|
||||||
limit: 5,
|
limit: 5,
|
||||||
until_id: this.next ? this.next : undefined
|
untilId: this.next ? this.next : undefined
|
||||||
}, this.bot.user);
|
}, this.bot.user);
|
||||||
|
|
||||||
if (notifications.length > 0) {
|
if (notifications.length > 0) {
|
||||||
|
|
|
@ -130,7 +130,7 @@ class LineBot extends BotCore {
|
||||||
altText: await super.showUserCommand(q),
|
altText: await super.showUserCommand(q),
|
||||||
template: {
|
template: {
|
||||||
type: 'buttons',
|
type: 'buttons',
|
||||||
thumbnailImageUrl: `${user.avatar_url}?thumbnail&size=1024`,
|
thumbnailImageUrl: `${user.avatarUrl}?thumbnail&size=1024`,
|
||||||
title: `${user.name} (@${acct})`,
|
title: `${user.name} (@${acct})`,
|
||||||
text: user.description || '(no description)',
|
text: user.description || '(no description)',
|
||||||
actions: actions
|
actions: actions
|
||||||
|
|
|
@ -289,7 +289,7 @@ const endpoints: Endpoint[] = [
|
||||||
kind: 'notification-write'
|
kind: 'notification-write'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'notifications/mark_as_read_all',
|
name: 'notifications/markAsRead_all',
|
||||||
withCredential: true,
|
withCredential: true,
|
||||||
kind: 'notification-write'
|
kind: 'notification-write'
|
||||||
},
|
},
|
||||||
|
|
|
@ -40,7 +40,7 @@ import App, { isValidNameId, pack } from '../../models/app';
|
||||||
* type: string
|
* type: string
|
||||||
* collectionFormat: csv
|
* collectionFormat: csv
|
||||||
* -
|
* -
|
||||||
* name: callback_url
|
* name: callbackUrl
|
||||||
* description: URL called back after authentication
|
* description: URL called back after authentication
|
||||||
* in: formData
|
* in: formData
|
||||||
* required: false
|
* required: false
|
||||||
|
@ -82,10 +82,10 @@ module.exports = async (params, user) => new Promise(async (res, rej) => {
|
||||||
const [permission, permissionErr] = $(params.permission).array('string').unique().$;
|
const [permission, permissionErr] = $(params.permission).array('string').unique().$;
|
||||||
if (permissionErr) return rej('invalid permission param');
|
if (permissionErr) return rej('invalid permission param');
|
||||||
|
|
||||||
// Get 'callback_url' parameter
|
// Get 'callbackUrl' parameter
|
||||||
// TODO: Check it is valid url
|
// TODO: Check it is valid url
|
||||||
const [callbackUrl = null, callbackUrlErr] = $(params.callback_url).optional.nullable.string().$;
|
const [callbackUrl = null, callbackUrlErr] = $(params.callbackUrl).optional.nullable.string().$;
|
||||||
if (callbackUrlErr) return rej('invalid callback_url param');
|
if (callbackUrlErr) return rej('invalid callbackUrl param');
|
||||||
|
|
||||||
// Generate secret
|
// Generate secret
|
||||||
const secret = rndstr('a-zA-Z0-9', 32);
|
const secret = rndstr('a-zA-Z0-9', 32);
|
||||||
|
@ -99,7 +99,7 @@ module.exports = async (params, user) => new Promise(async (res, rej) => {
|
||||||
nameIdLower: nameId.toLowerCase(),
|
nameIdLower: nameId.toLowerCase(),
|
||||||
description: description,
|
description: description,
|
||||||
permission: permission,
|
permission: permission,
|
||||||
callback_url: callbackUrl,
|
callbackUrl: callbackUrl,
|
||||||
secret: secret
|
secret: secret
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ import config from '../../../../conf';
|
||||||
* summary: Generate a session
|
* summary: Generate a session
|
||||||
* parameters:
|
* parameters:
|
||||||
* -
|
* -
|
||||||
* name: app_secret
|
* name: appSecret
|
||||||
* description: App Secret
|
* description: App Secret
|
||||||
* in: formData
|
* in: formData
|
||||||
* required: true
|
* required: true
|
||||||
|
@ -45,9 +45,9 @@ import config from '../../../../conf';
|
||||||
* @return {Promise<any>}
|
* @return {Promise<any>}
|
||||||
*/
|
*/
|
||||||
module.exports = (params) => new Promise(async (res, rej) => {
|
module.exports = (params) => new Promise(async (res, rej) => {
|
||||||
// Get 'app_secret' parameter
|
// Get 'appSecret' parameter
|
||||||
const [appSecret, appSecretErr] = $(params.app_secret).string().$;
|
const [appSecret, appSecretErr] = $(params.appSecret).string().$;
|
||||||
if (appSecretErr) return rej('invalid app_secret param');
|
if (appSecretErr) return rej('invalid appSecret param');
|
||||||
|
|
||||||
// Lookup app
|
// Lookup app
|
||||||
const app = await App.findOne({
|
const app = await App.findOne({
|
||||||
|
|
|
@ -14,7 +14,7 @@ import { pack } from '../../../models/user';
|
||||||
* summary: Get an access token(userkey)
|
* summary: Get an access token(userkey)
|
||||||
* parameters:
|
* parameters:
|
||||||
* -
|
* -
|
||||||
* name: app_secret
|
* name: appSecret
|
||||||
* description: App Secret
|
* description: App Secret
|
||||||
* in: formData
|
* in: formData
|
||||||
* required: true
|
* required: true
|
||||||
|
@ -50,9 +50,9 @@ import { pack } from '../../../models/user';
|
||||||
* @return {Promise<any>}
|
* @return {Promise<any>}
|
||||||
*/
|
*/
|
||||||
module.exports = (params) => new Promise(async (res, rej) => {
|
module.exports = (params) => new Promise(async (res, rej) => {
|
||||||
// Get 'app_secret' parameter
|
// Get 'appSecret' parameter
|
||||||
const [appSecret, appSecretErr] = $(params.app_secret).string().$;
|
const [appSecret, appSecretErr] = $(params.appSecret).string().$;
|
||||||
if (appSecretErr) return rej('invalid app_secret param');
|
if (appSecretErr) return rej('invalid appSecret param');
|
||||||
|
|
||||||
// Lookup app
|
// Lookup app
|
||||||
const app = await App.findOne({
|
const app = await App.findOne({
|
||||||
|
|
|
@ -16,17 +16,17 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construct query
|
// Construct query
|
||||||
|
|
|
@ -17,17 +17,17 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const [limit = 1000, limitErr] = $(params.limit).optional.number().range(1, 1000).$;
|
const [limit = 1000, limitErr] = $(params.limit).optional.number().range(1, 1000).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get 'channelId' parameter
|
// Get 'channelId' parameter
|
||||||
|
|
|
@ -17,17 +17,17 @@ module.exports = async (params, user, app) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) throw 'invalid limit param';
|
if (limitErr) throw 'invalid limit param';
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) throw 'invalid since_id param';
|
if (sinceIdErr) throw 'invalid sinceId param';
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) throw 'invalid until_id param';
|
if (untilIdErr) throw 'invalid untilId param';
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
throw 'cannot set since_id and until_id';
|
throw 'cannot set sinceId and untilId';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get 'folderId' parameter
|
// Get 'folderId' parameter
|
||||||
|
|
|
@ -17,17 +17,17 @@ module.exports = (params, user, app) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get 'folderId' parameter
|
// Get 'folderId' parameter
|
||||||
|
|
|
@ -16,17 +16,17 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get 'type' parameter
|
// Get 'type' parameter
|
||||||
|
|
|
@ -13,13 +13,13 @@ import User from '../../models/user';
|
||||||
* @return {Promise<any>}
|
* @return {Promise<any>}
|
||||||
*/
|
*/
|
||||||
module.exports = async (params, user) => new Promise(async (res, rej) => {
|
module.exports = async (params, user) => new Promise(async (res, rej) => {
|
||||||
// Get 'current_password' parameter
|
// Get 'currentPasword' parameter
|
||||||
const [currentPassword, currentPasswordErr] = $(params.current_password).string().$;
|
const [currentPassword, currentPasswordErr] = $(params.currentPasword).string().$;
|
||||||
if (currentPasswordErr) return rej('invalid current_password param');
|
if (currentPasswordErr) return rej('invalid currentPasword param');
|
||||||
|
|
||||||
// Get 'new_password' parameter
|
// Get 'newPassword' parameter
|
||||||
const [newPassword, newPasswordErr] = $(params.new_password).string().$;
|
const [newPassword, newPasswordErr] = $(params.newPassword).string().$;
|
||||||
if (newPasswordErr) return rej('invalid new_password param');
|
if (newPasswordErr) return rej('invalid newPassword param');
|
||||||
|
|
||||||
// Compare password
|
// Compare password
|
||||||
const same = await bcrypt.compare(currentPassword, user.account.password);
|
const same = await bcrypt.compare(currentPassword, user.account.password);
|
||||||
|
|
|
@ -21,9 +21,9 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
$(params.following).optional.boolean().$;
|
$(params.following).optional.boolean().$;
|
||||||
if (followingError) return rej('invalid following param');
|
if (followingError) return rej('invalid following param');
|
||||||
|
|
||||||
// Get 'mark_as_read' parameter
|
// Get 'markAsRead' parameter
|
||||||
const [markAsRead = true, markAsReadErr] = $(params.mark_as_read).optional.boolean().$;
|
const [markAsRead = true, markAsReadErr] = $(params.markAsRead).optional.boolean().$;
|
||||||
if (markAsReadErr) return rej('invalid mark_as_read param');
|
if (markAsReadErr) return rej('invalid markAsRead param');
|
||||||
|
|
||||||
// Get 'type' parameter
|
// Get 'type' parameter
|
||||||
const [type, typeErr] = $(params.type).optional.array('string').unique().$;
|
const [type, typeErr] = $(params.type).optional.array('string').unique().$;
|
||||||
|
@ -33,17 +33,17 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
const mute = await Mute.find({
|
const mute = await Mute.find({
|
||||||
|
|
|
@ -16,17 +16,17 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
const query = {
|
const query = {
|
||||||
|
|
|
@ -51,10 +51,10 @@ module.exports = async (params, user, _, isSecure) => new Promise(async (res, re
|
||||||
if (isBotErr) return rej('invalid isBot param');
|
if (isBotErr) return rej('invalid isBot param');
|
||||||
if (isBot != null) user.account.isBot = isBot;
|
if (isBot != null) user.account.isBot = isBot;
|
||||||
|
|
||||||
// Get 'auto_watch' parameter
|
// Get 'autoWatch' parameter
|
||||||
const [autoWatch, autoWatchErr] = $(params.auto_watch).optional.boolean().$;
|
const [autoWatch, autoWatchErr] = $(params.autoWatch).optional.boolean().$;
|
||||||
if (autoWatchErr) return rej('invalid auto_watch param');
|
if (autoWatchErr) return rej('invalid autoWatch param');
|
||||||
if (autoWatch != null) user.account.settings.auto_watch = autoWatch;
|
if (autoWatch != null) user.account.settings.autoWatch = autoWatch;
|
||||||
|
|
||||||
await User.update(user._id, {
|
await User.update(user._id, {
|
||||||
$set: {
|
$set: {
|
||||||
|
|
|
@ -32,25 +32,25 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
return rej('user not found');
|
return rej('user not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get 'mark_as_read' parameter
|
// Get 'markAsRead' parameter
|
||||||
const [markAsRead = true, markAsReadErr] = $(params.mark_as_read).optional.boolean().$;
|
const [markAsRead = true, markAsReadErr] = $(params.markAsRead).optional.boolean().$;
|
||||||
if (markAsReadErr) return rej('invalid mark_as_read param');
|
if (markAsReadErr) return rej('invalid markAsRead 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).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
const query = {
|
const query = {
|
||||||
|
|
|
@ -10,17 +10,17 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
const q: any = my ? {
|
const q: any = my ? {
|
||||||
|
|
|
@ -35,17 +35,17 @@ module.exports = (params) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construct query
|
// Construct query
|
||||||
|
|
|
@ -392,7 +392,7 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// この投稿をWatchする
|
// この投稿をWatchする
|
||||||
if ((user.account as ILocalAccount).settings.auto_watch !== false) {
|
if ((user.account as ILocalAccount).settings.autoWatch !== false) {
|
||||||
watch(user._id, reply);
|
watch(user._id, reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,17 +23,17 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construct query
|
// Construct query
|
||||||
|
|
|
@ -100,7 +100,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// この投稿をWatchする
|
// この投稿をWatchする
|
||||||
if (user.account.settings.auto_watch !== false) {
|
if (user.account.settings.autoWatch !== false) {
|
||||||
watch(user._id, post);
|
watch(user._id, post);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -116,7 +116,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// この投稿をWatchする
|
// この投稿をWatchする
|
||||||
if (user.account.settings.auto_watch !== false) {
|
if (user.account.settings.autoWatch !== false) {
|
||||||
watch(user._id, post);
|
watch(user._id, post);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -20,17 +20,17 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Check if both of since_id and until_id is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (sinceId && untilId) {
|
if (sinceId && untilId) {
|
||||||
return rej('cannot set since_id and until_id');
|
return rej('cannot set sinceId and untilId');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lookup post
|
// Lookup post
|
||||||
|
|
|
@ -61,13 +61,13 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
|
||||||
const [poll = null, pollErr] = $(params.poll).optional.nullable.boolean().$;
|
const [poll = null, pollErr] = $(params.poll).optional.nullable.boolean().$;
|
||||||
if (pollErr) return rej('invalid poll param');
|
if (pollErr) return rej('invalid poll param');
|
||||||
|
|
||||||
// Get 'since_date' parameter
|
// Get 'sinceDate' parameter
|
||||||
const [sinceDate, sinceDateErr] = $(params.since_date).optional.number().$;
|
const [sinceDate, sinceDateErr] = $(params.sinceDate).optional.number().$;
|
||||||
if (sinceDateErr) throw 'invalid since_date param';
|
if (sinceDateErr) throw 'invalid sinceDate param';
|
||||||
|
|
||||||
// Get 'until_date' parameter
|
// Get 'untilDate' parameter
|
||||||
const [untilDate, untilDateErr] = $(params.until_date).optional.number().$;
|
const [untilDate, untilDateErr] = $(params.untilDate).optional.number().$;
|
||||||
if (untilDateErr) throw 'invalid until_date param';
|
if (untilDateErr) throw 'invalid untilDate param';
|
||||||
|
|
||||||
// Get 'offset' parameter
|
// Get 'offset' parameter
|
||||||
const [offset = 0, offsetErr] = $(params.offset).optional.number().min(0).$;
|
const [offset = 0, offsetErr] = $(params.offset).optional.number().min(0).$;
|
||||||
|
|
|
@ -22,25 +22,25 @@ module.exports = async (params, user, app) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) throw 'invalid limit param';
|
if (limitErr) throw 'invalid limit param';
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) throw 'invalid since_id param';
|
if (sinceIdErr) throw 'invalid sinceId param';
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) throw 'invalid until_id param';
|
if (untilIdErr) throw 'invalid untilId param';
|
||||||
|
|
||||||
// Get 'since_date' parameter
|
// Get 'sinceDate' parameter
|
||||||
const [sinceDate, sinceDateErr] = $(params.since_date).optional.number().$;
|
const [sinceDate, sinceDateErr] = $(params.sinceDate).optional.number().$;
|
||||||
if (sinceDateErr) throw 'invalid since_date param';
|
if (sinceDateErr) throw 'invalid sinceDate param';
|
||||||
|
|
||||||
// Get 'until_date' parameter
|
// Get 'untilDate' parameter
|
||||||
const [untilDate, untilDateErr] = $(params.until_date).optional.number().$;
|
const [untilDate, untilDateErr] = $(params.untilDate).optional.number().$;
|
||||||
if (untilDateErr) throw 'invalid until_date param';
|
if (untilDateErr) throw 'invalid untilDate param';
|
||||||
|
|
||||||
// Check if only one of since_id, until_id, since_date, until_date specified
|
// Check if only one of sinceId, untilId, sinceDate, untilDate specified
|
||||||
if ([sinceId, untilId, sinceDate, untilDate].filter(x => x != null).length > 1) {
|
if ([sinceId, untilId, sinceDate, untilDate].filter(x => x != null).length > 1) {
|
||||||
throw 'only one of since_id, until_id, since_date, until_date can be specified';
|
throw 'only one of sinceId, untilId, sinceDate, untilDate can be specified';
|
||||||
}
|
}
|
||||||
|
|
||||||
const { followingIds, watchingChannelIds, mutedUserIds } = await rap({
|
const { followingIds, watchingChannelIds, mutedUserIds } = await rap({
|
||||||
|
|
|
@ -46,25 +46,25 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
|
||||||
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$;
|
||||||
if (limitErr) return rej('invalid limit param');
|
if (limitErr) return rej('invalid limit param');
|
||||||
|
|
||||||
// Get 'since_id' parameter
|
// Get 'sinceId' parameter
|
||||||
const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$;
|
const [sinceId, sinceIdErr] = $(params.sinceId).optional.id().$;
|
||||||
if (sinceIdErr) return rej('invalid since_id param');
|
if (sinceIdErr) return rej('invalid sinceId param');
|
||||||
|
|
||||||
// Get 'until_id' parameter
|
// Get 'untilId' parameter
|
||||||
const [untilId, untilIdErr] = $(params.until_id).optional.id().$;
|
const [untilId, untilIdErr] = $(params.untilId).optional.id().$;
|
||||||
if (untilIdErr) return rej('invalid until_id param');
|
if (untilIdErr) return rej('invalid untilId param');
|
||||||
|
|
||||||
// Get 'since_date' parameter
|
// Get 'sinceDate' parameter
|
||||||
const [sinceDate, sinceDateErr] = $(params.since_date).optional.number().$;
|
const [sinceDate, sinceDateErr] = $(params.sinceDate).optional.number().$;
|
||||||
if (sinceDateErr) throw 'invalid since_date param';
|
if (sinceDateErr) throw 'invalid sinceDate param';
|
||||||
|
|
||||||
// Get 'until_date' parameter
|
// Get 'untilDate' parameter
|
||||||
const [untilDate, untilDateErr] = $(params.until_date).optional.number().$;
|
const [untilDate, untilDateErr] = $(params.untilDate).optional.number().$;
|
||||||
if (untilDateErr) throw 'invalid until_date param';
|
if (untilDateErr) throw 'invalid untilDate param';
|
||||||
|
|
||||||
// Check if only one of since_id, until_id, since_date, until_date specified
|
// Check if only one of sinceId, untilId, sinceDate, untilDate specified
|
||||||
if ([sinceId, untilId, sinceDate, untilDate].filter(x => x != null).length > 1) {
|
if ([sinceId, untilId, sinceDate, untilDate].filter(x => x != null).length > 1) {
|
||||||
throw 'only one of since_id, until_id, since_date, until_date can be specified';
|
throw 'only one of sinceId, untilId, sinceDate, untilDate can be specified';
|
||||||
}
|
}
|
||||||
|
|
||||||
const q = userId !== undefined
|
const q = userId !== undefined
|
||||||
|
|
|
@ -195,11 +195,11 @@ export const pack = (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_user.avatar_url = _user.avatarId != null
|
_user.avatarUrl = _user.avatarId != null
|
||||||
? `${config.drive_url}/${_user.avatarId}`
|
? `${config.drive_url}/${_user.avatarId}`
|
||||||
: `${config.drive_url}/default-avatar.jpg`;
|
: `${config.drive_url}/default-avatar.jpg`;
|
||||||
|
|
||||||
_user.banner_url = _user.bannerId != null
|
_user.bannerUrl = _user.bannerId != null
|
||||||
? `${config.drive_url}/${_user.bannerId}`
|
? `${config.drive_url}/${_user.bannerId}`
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
|
|
|
@ -137,7 +137,7 @@ export default async (req: express.Request, res: express.Response) => {
|
||||||
weight: null
|
weight: null
|
||||||
},
|
},
|
||||||
settings: {
|
settings: {
|
||||||
auto_watch: true
|
autoWatch: true
|
||||||
},
|
},
|
||||||
clientSettings: {
|
clientSettings: {
|
||||||
home: homeData
|
home: homeData
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
</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.is_authorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました'}}</h1>
|
||||||
<p v-if="session.app.callback_url">アプリケーションに戻っています<mk-ellipsis/></p>
|
<p v-if="session.app.callbackUrl">アプリケーションに戻っています<mk-ellipsis/></p>
|
||||||
<p v-if="!session.app.callback_url">アプリケーションに戻って、やっていってください。</p>
|
<p v-if="!session.app.callbackUrl">アプリケーションに戻って、やっていってください。</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="error" v-if="state == 'fetch-session-error'">
|
<div class="error" v-if="state == 'fetch-session-error'">
|
||||||
<p>セッションが存在しません。</p>
|
<p>セッションが存在しません。</p>
|
||||||
|
@ -77,8 +77,8 @@ export default Vue.extend({
|
||||||
methods: {
|
methods: {
|
||||||
accepted() {
|
accepted() {
|
||||||
this.state = 'accepted';
|
this.state = 'accepted';
|
||||||
if (this.session.app.callback_url) {
|
if (this.session.app.callbackUrl) {
|
||||||
location.href = this.session.app.callback_url + '?token=' + this.session.token;
|
location.href = this.session.app.callbackUrl + '?token=' + this.session.token;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,42 +23,42 @@ export default function(type, data): Notification {
|
||||||
return {
|
return {
|
||||||
title: `${data.user.name}さんから:`,
|
title: `${data.user.name}さんから:`,
|
||||||
body: getPostSummary(data),
|
body: getPostSummary(data),
|
||||||
icon: data.user.avatar_url + '?thumbnail&size=64'
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'reply':
|
case 'reply':
|
||||||
return {
|
return {
|
||||||
title: `${data.user.name}さんから返信:`,
|
title: `${data.user.name}さんから返信:`,
|
||||||
body: getPostSummary(data),
|
body: getPostSummary(data),
|
||||||
icon: data.user.avatar_url + '?thumbnail&size=64'
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'quote':
|
case 'quote':
|
||||||
return {
|
return {
|
||||||
title: `${data.user.name}さんが引用:`,
|
title: `${data.user.name}さんが引用:`,
|
||||||
body: getPostSummary(data),
|
body: getPostSummary(data),
|
||||||
icon: data.user.avatar_url + '?thumbnail&size=64'
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'reaction':
|
case 'reaction':
|
||||||
return {
|
return {
|
||||||
title: `${data.user.name}: ${getReactionEmoji(data.reaction)}:`,
|
title: `${data.user.name}: ${getReactionEmoji(data.reaction)}:`,
|
||||||
body: getPostSummary(data.post),
|
body: getPostSummary(data.post),
|
||||||
icon: data.user.avatar_url + '?thumbnail&size=64'
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'unread_messaging_message':
|
case 'unread_messaging_message':
|
||||||
return {
|
return {
|
||||||
title: `${data.user.name}さんからメッセージ:`,
|
title: `${data.user.name}さんからメッセージ:`,
|
||||||
body: data.text, // TODO: getMessagingMessageSummary(data),
|
body: data.text, // TODO: getMessagingMessageSummary(data),
|
||||||
icon: data.user.avatar_url + '?thumbnail&size=64'
|
icon: data.user.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'othello_invited':
|
case 'othello_invited':
|
||||||
return {
|
return {
|
||||||
title: '対局への招待があります',
|
title: '対局への招待があります',
|
||||||
body: `${data.parent.name}さんから`,
|
body: `${data.parent.name}さんから`,
|
||||||
icon: data.parent.avatar_url + '?thumbnail&size=64'
|
icon: data.parent.avatarUrl + '?thumbnail&size=64'
|
||||||
};
|
};
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="mk-autocomplete" @contextmenu.prevent="() => {}">
|
<div class="mk-autocomplete" @contextmenu.prevent="() => {}">
|
||||||
<ol class="users" ref="suggests" v-if="users.length > 0">
|
<ol class="users" ref="suggests" v-if="users.length > 0">
|
||||||
<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1">
|
<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1">
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=32`" alt=""/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=32`" alt=""/>
|
||||||
<span class="name">{{ user.name }}</span>
|
<span class="name">{{ user.name }}</span>
|
||||||
<span class="username">@{{ getAcct(user) }}</span>
|
<span class="username">@{{ getAcct(user) }}</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="message" :data-is-me="isMe">
|
<div class="message" :data-is-me="isMe">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`" :title="acct" target="_blank">
|
<router-link class="avatar-anchor" :to="`/@${acct}`" :title="acct" target="_blank">
|
||||||
<img class="avatar" :src="`${message.user.avatar_url}?thumbnail&size=80`" alt=""/>
|
<img class="avatar" :src="`${message.user.avatarUrl}?thumbnail&size=80`" alt=""/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="balloon" :data-no-text="message.text == null">
|
<div class="balloon" :data-no-text="message.text == null">
|
||||||
|
|
|
@ -125,7 +125,7 @@ export default Vue.extend({
|
||||||
(this as any).api('messaging/messages', {
|
(this as any).api('messaging/messages', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
limit: max + 1,
|
limit: max + 1,
|
||||||
until_id: this.existMoreMessages ? this.messages[0].id : undefined
|
untilId: this.existMoreMessages ? this.messages[0].id : undefined
|
||||||
}).then(messages => {
|
}).then(messages => {
|
||||||
if (messages.length == max + 1) {
|
if (messages.length == max + 1) {
|
||||||
this.existMoreMessages = true;
|
this.existMoreMessages = true;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
@click="navigate(user)"
|
@click="navigate(user)"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
>
|
>
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=32`" alt=""/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=32`" alt=""/>
|
||||||
<span class="name">{{ user.name }}</span>
|
<span class="name">{{ user.name }}</span>
|
||||||
<span class="username">@{{ getAcct(user) }}</span>
|
<span class="username">@{{ getAcct(user) }}</span>
|
||||||
</li>
|
</li>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
:key="message.id"
|
:key="message.id"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<img class="avatar" :src="`${isMe(message) ? message.recipient.avatar_url : message.user.avatar_url}?thumbnail&size=64`" alt=""/>
|
<img class="avatar" :src="`${isMe(message) ? message.recipient.avatarUrl : message.user.avatarUrl}?thumbnail&size=64`" alt=""/>
|
||||||
<header>
|
<header>
|
||||||
<span class="name">{{ isMe(message) ? message.recipient.name : message.user.name }}</span>
|
<span class="name">{{ isMe(message) ? message.recipient.name : message.user.name }}</span>
|
||||||
<span class="username">@{{ getAcct(isMe(message) ? message.recipient : message.user) }}</span>
|
<span class="username">@{{ getAcct(isMe(message) ? message.recipient : message.user) }}</span>
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
@click="set(i)"
|
@click="set(i)"
|
||||||
:title="'[' + (o.transformPosToXy(i)[0] + 1) + ', ' + (o.transformPosToXy(i)[1] + 1) + '] (' + i + ')'"
|
:title="'[' + (o.transformPosToXy(i)[0] + 1) + ', ' + (o.transformPosToXy(i)[1] + 1) + '] (' + i + ')'"
|
||||||
>
|
>
|
||||||
<img v-if="stone === true" :src="`${blackUser.avatar_url}?thumbnail&size=128`" alt="">
|
<img v-if="stone === true" :src="`${blackUser.avatarUrl}?thumbnail&size=128`" alt="">
|
||||||
<img v-if="stone === false" :src="`${whiteUser.avatar_url}?thumbnail&size=128`" alt="">
|
<img v-if="stone === false" :src="`${whiteUser.avatarUrl}?thumbnail&size=128`" alt="">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<section v-if="invitations.length > 0">
|
<section v-if="invitations.length > 0">
|
||||||
<h2>対局の招待があります!:</h2>
|
<h2>対局の招待があります!:</h2>
|
||||||
<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
|
<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
|
||||||
<img :src="`${i.parent.avatar_url}?thumbnail&size=32`" alt="">
|
<img :src="`${i.parent.avatarUrl}?thumbnail&size=32`" alt="">
|
||||||
<span class="name"><b>{{ i.parent.name }}</b></span>
|
<span class="name"><b>{{ i.parent.name }}</b></span>
|
||||||
<span class="username">@{{ i.parent.username }}</span>
|
<span class="username">@{{ i.parent.username }}</span>
|
||||||
<mk-time :time="i.createdAt"/>
|
<mk-time :time="i.createdAt"/>
|
||||||
|
@ -40,8 +40,8 @@
|
||||||
<section v-if="myGames.length > 0">
|
<section v-if="myGames.length > 0">
|
||||||
<h2>自分の対局</h2>
|
<h2>自分の対局</h2>
|
||||||
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`">
|
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`">
|
||||||
<img :src="`${g.user1.avatar_url}?thumbnail&size=32`" alt="">
|
<img :src="`${g.user1.avatarUrl}?thumbnail&size=32`" alt="">
|
||||||
<img :src="`${g.user2.avatar_url}?thumbnail&size=32`" alt="">
|
<img :src="`${g.user2.avatarUrl}?thumbnail&size=32`" alt="">
|
||||||
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
||||||
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -49,8 +49,8 @@
|
||||||
<section v-if="games.length > 0">
|
<section v-if="games.length > 0">
|
||||||
<h2>みんなの対局</h2>
|
<h2>みんなの対局</h2>
|
||||||
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`">
|
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`">
|
||||||
<img :src="`${g.user1.avatar_url}?thumbnail&size=32`" alt="">
|
<img :src="`${g.user1.avatarUrl}?thumbnail&size=32`" alt="">
|
||||||
<img :src="`${g.user2.avatar_url}?thumbnail&size=32`" alt="">
|
<img :src="`${g.user2.avatarUrl}?thumbnail&size=32`" alt="">
|
||||||
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
||||||
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="mk-welcome-timeline">
|
<div class="mk-welcome-timeline">
|
||||||
<div v-for="post in posts">
|
<div v-for="post in posts">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(post.user)}`" v-user-preview="post.user.id">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(post.user)}`" v-user-preview="post.user.id">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=96`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=96`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -71,7 +71,7 @@ export default (os: OS) => (cb, file = null) => {
|
||||||
avatarId: file.id
|
avatarId: file.id
|
||||||
}).then(i => {
|
}).then(i => {
|
||||||
os.i.avatarId = i.avatarId;
|
os.i.avatarId = i.avatarId;
|
||||||
os.i.avatar_url = i.avatar_url;
|
os.i.avatarUrl = i.avatarUrl;
|
||||||
|
|
||||||
os.apis.dialog({
|
os.apis.dialog({
|
||||||
title: '%fa:info-circle%アバターを更新しました',
|
title: '%fa:info-circle%アバターを更新しました',
|
||||||
|
|
|
@ -71,7 +71,7 @@ export default (os: OS) => (cb, file = null) => {
|
||||||
bannerId: file.id
|
bannerId: file.id
|
||||||
}).then(i => {
|
}).then(i => {
|
||||||
os.i.bannerId = i.bannerId;
|
os.i.bannerId = i.bannerId;
|
||||||
os.i.banner_url = i.banner_url;
|
os.i.bannerUrl = i.bannerUrl;
|
||||||
|
|
||||||
os.apis.dialog({
|
os.apis.dialog({
|
||||||
title: '%fa:info-circle%バナーを更新しました',
|
title: '%fa:info-circle%バナーを更新しました',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">
|
<span slot="header" :class="$style.header">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=64`" alt=""/>{{ user.name }}のフォロワー
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ user.name }}のフォロワー
|
||||||
</span>
|
</span>
|
||||||
<mk-followers :user="user"/>
|
<mk-followers :user="user"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||||
<span slot="header" :class="$style.header">
|
<span slot="header" :class="$style.header">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=64`" alt=""/>{{ user.name }}のフォロー
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ user.name }}のフォロー
|
||||||
</span>
|
</span>
|
||||||
<mk-following :user="user"/>
|
<mk-following :user="user"/>
|
||||||
</mk-window>
|
</mk-window>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="users" v-if="!fetching && users.length > 0">
|
<div class="users" v-if="!fetching && users.length > 0">
|
||||||
<div class="user" v-for="user in users" :key="user.id">
|
<div class="user" v-for="user in users" :key="user.id">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(user)}`">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(user)}`">
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=42`" alt="" v-user-preview="user.id"/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=42`" alt="" v-user-preview="user.id"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<router-link class="name" :to="`/@${getAcct(user)}`" v-user-preview="user.id">{{ user.name }}</router-link>
|
<router-link class="name" :to="`/@${getAcct(user)}`" v-user-preview="user.id">{{ user.name }}</router-link>
|
||||||
|
|
|
@ -70,7 +70,7 @@ export default Vue.extend({
|
||||||
this.moreFetching = true;
|
this.moreFetching = true;
|
||||||
(this as any).api('posts/mentions', {
|
(this as any).api('posts/mentions', {
|
||||||
following: this.mode == 'following',
|
following: this.mode == 'following',
|
||||||
until_id: this.posts[this.posts.length - 1].id
|
untilId: this.posts[this.posts.length - 1].id
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
this.posts = this.posts.concat(posts);
|
this.posts = this.posts.concat(posts);
|
||||||
this.moreFetching = false;
|
this.moreFetching = false;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<mk-time :time="notification.createdAt"/>
|
<mk-time :time="notification.createdAt"/>
|
||||||
<template v-if="notification.type == 'reaction'">
|
<template v-if="notification.type == 'reaction'">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=48`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=48`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="notification.type == 'repost'">
|
<template v-if="notification.type == 'repost'">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=48`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=48`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:retweet%
|
<p>%fa:retweet%
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="notification.type == 'quote'">
|
<template v-if="notification.type == 'quote'">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=48`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=48`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:quote-left%
|
<p>%fa:quote-left%
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="notification.type == 'follow'">
|
<template v-if="notification.type == 'follow'">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=48`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=48`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:user-plus%
|
<p>%fa:user-plus%
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="notification.type == 'reply'">
|
<template v-if="notification.type == 'reply'">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=48`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=48`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:reply%
|
<p>%fa:reply%
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="notification.type == 'mention'">
|
<template v-if="notification.type == 'mention'">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.post.user)}`" v-user-preview="notification.post.userId">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=48`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=48`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:at%
|
<p>%fa:at%
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="notification.type == 'poll_vote'">
|
<template v-if="notification.type == 'poll_vote'">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=48`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=48`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:chart-pie%<a :href="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">{{ notification.user.name }}</a></p>
|
<p>%fa:chart-pie%<a :href="`/@${getAcct(notification.user)}`" v-user-preview="notification.user.id">{{ notification.user.name }}</a></p>
|
||||||
|
@ -161,7 +161,7 @@ export default Vue.extend({
|
||||||
|
|
||||||
(this as any).api('i/notifications', {
|
(this as any).api('i/notifications', {
|
||||||
limit: max + 1,
|
limit: max + 1,
|
||||||
until_id: this.notifications[this.notifications.length - 1].id
|
untilId: this.notifications[this.notifications.length - 1].id
|
||||||
}).then(notifications => {
|
}).then(notifications => {
|
||||||
if (notifications.length == max + 1) {
|
if (notifications.length == max + 1) {
|
||||||
this.moreNotifications = true;
|
this.moreNotifications = true;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="sub" :title="title">
|
<div class="sub" :title="title">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=64`" alt="avatar" v-user-preview="post.userId"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=64`" alt="avatar" v-user-preview="post.userId"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<div class="repost" v-if="isRepost">
|
<div class="repost" v-if="isRepost">
|
||||||
<p>
|
<p>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`" v-user-preview="post.userId">
|
<router-link class="avatar-anchor" :to="`/@${acct}`" v-user-preview="post.userId">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=32`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=32`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
%fa:retweet%
|
%fa:retweet%
|
||||||
<router-link class="name" :href="`/@${acct}`">{{ post.user.name }}</router-link>
|
<router-link class="name" :href="`/@${acct}`">{{ post.user.name }}</router-link>
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
</div>
|
</div>
|
||||||
<article>
|
<article>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${p.user.avatar_url}?thumbnail&size=64`" alt="avatar" v-user-preview="p.user.id"/>
|
<img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=64`" alt="avatar" v-user-preview="p.user.id"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<header>
|
<header>
|
||||||
<router-link class="name" :to="`/@${acct}`" v-user-preview="p.user.id">{{ p.user.name }}</router-link>
|
<router-link class="name" :to="`/@${acct}`" v-user-preview="p.user.id">{{ p.user.name }}</router-link>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mk-post-preview" :title="title">
|
<div class="mk-post-preview" :title="title">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=64`" alt="avatar" v-user-preview="post.userId"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=64`" alt="avatar" v-user-preview="post.userId"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="sub" :title="title">
|
<div class="sub" :title="title">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=64`" alt="avatar" v-user-preview="post.userId"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=64`" alt="avatar" v-user-preview="post.userId"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="repost" v-if="isRepost">
|
<div class="repost" v-if="isRepost">
|
||||||
<p>
|
<p>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`" v-user-preview="post.userId">
|
<router-link class="avatar-anchor" :to="`/@${acct}`" v-user-preview="post.userId">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=32`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=32`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
%fa:retweet%
|
%fa:retweet%
|
||||||
<span>{{ '%i18n:desktop.tags.mk-timeline-post.reposted-by%'.substr(0, '%i18n:desktop.tags.mk-timeline-post.reposted-by%'.indexOf('{')) }}</span>
|
<span>{{ '%i18n:desktop.tags.mk-timeline-post.reposted-by%'.substr(0, '%i18n:desktop.tags.mk-timeline-post.reposted-by%'.indexOf('{')) }}</span>
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
</div>
|
</div>
|
||||||
<article>
|
<article>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${p.user.avatar_url}?thumbnail&size=64`" alt="avatar" v-user-preview="p.user.id"/>
|
<img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=64`" alt="avatar" v-user-preview="p.user.id"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -33,8 +33,8 @@ export default Vue.extend({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
(this as any).api('i/change_password', {
|
(this as any).api('i/change_password', {
|
||||||
current_password: currentPassword,
|
currentPasword: currentPassword,
|
||||||
new_password: newPassword
|
newPassword: newPassword
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
(this as any).apis.notify('%i18n:desktop.tags.mk-password-setting.changed%');
|
(this as any).apis.notify('%i18n:desktop.tags.mk-password-setting.changed%');
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<label class="avatar ui from group">
|
<label class="avatar ui from group">
|
||||||
<p>%i18n:desktop.tags.mk-profile-setting.avatar%</p>
|
<p>%i18n:desktop.tags.mk-profile-setting.avatar%</p>
|
||||||
<img class="avatar" :src="`${os.i.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${os.i.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<button class="ui" @click="updateAvatar">%i18n:desktop.tags.mk-profile-setting.choice-avatar%</button>
|
<button class="ui" @click="updateAvatar">%i18n:desktop.tags.mk-profile-setting.choice-avatar%</button>
|
||||||
</label>
|
</label>
|
||||||
<label class="ui from group">
|
<label class="ui from group">
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
|
|
||||||
<section class="notification" v-show="page == 'notification'">
|
<section class="notification" v-show="page == 'notification'">
|
||||||
<h1>通知</h1>
|
<h1>通知</h1>
|
||||||
<mk-switch v-model="os.i.account.settings.auto_watch" @change="onChangeAutoWatch" text="投稿の自動ウォッチ">
|
<mk-switch v-model="os.i.account.settings.autoWatch" @change="onChangeAutoWatch" text="投稿の自動ウォッチ">
|
||||||
<span>リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。</span>
|
<span>リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。</span>
|
||||||
</mk-switch>
|
</mk-switch>
|
||||||
</section>
|
</section>
|
||||||
|
@ -283,7 +283,7 @@ export default Vue.extend({
|
||||||
},
|
},
|
||||||
onChangeAutoWatch(v) {
|
onChangeAutoWatch(v) {
|
||||||
(this as any).api('i/update', {
|
(this as any).api('i/update', {
|
||||||
auto_watch: v
|
autoWatch: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
onChangeShowPostFormOnTopOfTl(v) {
|
onChangeShowPostFormOnTopOfTl(v) {
|
||||||
|
|
|
@ -65,7 +65,7 @@ export default Vue.extend({
|
||||||
|
|
||||||
(this as any).api('posts/timeline', {
|
(this as any).api('posts/timeline', {
|
||||||
limit: 11,
|
limit: 11,
|
||||||
until_date: this.date ? this.date.getTime() : undefined
|
untilDate: this.date ? this.date.getTime() : undefined
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
if (posts.length == 11) {
|
if (posts.length == 11) {
|
||||||
posts.pop();
|
posts.pop();
|
||||||
|
@ -82,7 +82,7 @@ export default Vue.extend({
|
||||||
this.moreFetching = true;
|
this.moreFetching = true;
|
||||||
(this as any).api('posts/timeline', {
|
(this as any).api('posts/timeline', {
|
||||||
limit: 11,
|
limit: 11,
|
||||||
until_id: this.posts[this.posts.length - 1].id
|
untilId: this.posts[this.posts.length - 1].id
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
if (posts.length == 11) {
|
if (posts.length == 11) {
|
||||||
posts.pop();
|
posts.pop();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="account">
|
<div class="account">
|
||||||
<button class="header" :data-active="isOpen" @click="toggle">
|
<button class="header" :data-active="isOpen" @click="toggle">
|
||||||
<span class="username">{{ os.i.username }}<template v-if="!isOpen">%fa:angle-down%</template><template v-if="isOpen">%fa:angle-up%</template></span>
|
<span class="username">{{ os.i.username }}<template v-if="!isOpen">%fa:angle-down%</template><template v-if="isOpen">%fa:angle-up%</template></span>
|
||||||
<img class="avatar" :src="`${ os.i.avatar_url }?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${ os.i.avatarUrl }?thumbnail&size=64`" alt="avatar"/>
|
||||||
</button>
|
</button>
|
||||||
<transition name="zoom-in-top">
|
<transition name="zoom-in-top">
|
||||||
<div class="menu" v-if="isOpen">
|
<div class="menu" v-if="isOpen">
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mk-user-preview">
|
<div class="mk-user-preview">
|
||||||
<template v-if="u != null">
|
<template v-if="u != null">
|
||||||
<div class="banner" :style="u.banner_url ? `background-image: url(${u.banner_url}?thumbnail&size=512)` : ''"></div>
|
<div class="banner" :style="u.bannerUrl ? `background-image: url(${u.bannerUrl}?thumbnail&size=512)` : ''"></div>
|
||||||
<router-link class="avatar" :to="`/@${acct}`">
|
<router-link class="avatar" :to="`/@${acct}`">
|
||||||
<img :src="`${u.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img :src="`${u.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<router-link class="name" :to="`/@${acct}`">{{ u.name }}</router-link>
|
<router-link class="name" :to="`/@${acct}`">{{ u.name }}</router-link>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="root item">
|
<div class="root item">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`" v-user-preview="user.id">
|
<router-link class="avatar-anchor" :to="`/@${acct}`" v-user-preview="user.id">
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<p class="initializing" v-if="fetching">%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.followers-you-know.loading%<mk-ellipsis/></p>
|
<p class="initializing" v-if="fetching">%fa:spinner .pulse .fw%%i18n:desktop.tags.mk-user.followers-you-know.loading%<mk-ellipsis/></p>
|
||||||
<div v-if="!fetching && users.length > 0">
|
<div v-if="!fetching && users.length > 0">
|
||||||
<router-link v-for="user in users" :to="`/@${getAcct(user)}`" :key="user.id">
|
<router-link v-for="user in users" :to="`/@${getAcct(user)}`" :key="user.id">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=64`" :alt="user.name" v-user-preview="user.id"/>
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" :alt="user.name" v-user-preview="user.id"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
<p class="empty" v-if="!fetching && users.length == 0">%i18n:desktop.tags.mk-user.followers-you-know.no-users%</p>
|
<p class="empty" v-if="!fetching && users.length == 0">%i18n:desktop.tags.mk-user.followers-you-know.no-users%</p>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<template v-if="!fetching && users.length != 0">
|
<template v-if="!fetching && users.length != 0">
|
||||||
<div class="user" v-for="friend in users">
|
<div class="user" v-for="friend in users">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(friend)}`">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(friend)}`">
|
||||||
<img class="avatar" :src="`${friend.avatar_url}?thumbnail&size=42`" alt="" v-user-preview="friend.id"/>
|
<img class="avatar" :src="`${friend.avatarUrl}?thumbnail&size=42`" alt="" v-user-preview="friend.id"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<router-link class="name" :to="`/@${getAcct(friend)}`" v-user-preview="friend.id">{{ friend.name }}</router-link>
|
<router-link class="name" :to="`/@${getAcct(friend)}`" v-user-preview="friend.id">{{ friend.name }}</router-link>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="header" :data-is-dark-background="user.banner_url != null">
|
<div class="header" :data-is-dark-background="user.bannerUrl != null">
|
||||||
<div class="banner-container" :style="user.banner_url ? `background-image: url(${user.banner_url}?thumbnail&size=2048)` : ''">
|
<div class="banner-container" :style="user.bannerUrl ? `background-image: url(${user.bannerUrl}?thumbnail&size=2048)` : ''">
|
||||||
<div class="banner" ref="banner" :style="user.banner_url ? `background-image: url(${user.banner_url}?thumbnail&size=2048)` : ''" @click="onBannerClick"></div>
|
<div class="banner" ref="banner" :style="user.bannerUrl ? `background-image: url(${user.bannerUrl}?thumbnail&size=2048)` : ''" @click="onBannerClick"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="fade"></div>
|
<div class="fade"></div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=150`" alt="avatar"/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=150`" alt="avatar"/>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<p class="name">{{ user.name }}</p>
|
<p class="name">{{ user.name }}</p>
|
||||||
<p class="username">@{{ acct }}</p>
|
<p class="username">@{{ acct }}</p>
|
||||||
|
@ -59,7 +59,7 @@ export default Vue.extend({
|
||||||
if (!(this as any).os.isSignedIn || (this as any).os.i.id != this.user.id) return;
|
if (!(this as any).os.isSignedIn || (this as any).os.i.id != this.user.id) return;
|
||||||
|
|
||||||
(this as any).apis.updateBanner((this as any).os.i, i => {
|
(this as any).apis.updateBanner((this as any).os.i, i => {
|
||||||
this.user.banner_url = i.banner_url;
|
this.user.bannerUrl = i.bannerUrl;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ export default Vue.extend({
|
||||||
fetch(cb?) {
|
fetch(cb?) {
|
||||||
(this as any).api('users/posts', {
|
(this as any).api('users/posts', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
until_date: this.date ? this.date.getTime() : undefined,
|
untilDate: this.date ? this.date.getTime() : undefined,
|
||||||
with_replies: this.mode == 'with-replies'
|
with_replies: this.mode == 'with-replies'
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
this.posts = posts;
|
this.posts = posts;
|
||||||
|
@ -76,7 +76,7 @@ export default Vue.extend({
|
||||||
(this as any).api('users/posts', {
|
(this as any).api('users/posts', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
with_replies: this.mode == 'with-replies',
|
with_replies: this.mode == 'with-replies',
|
||||||
until_id: this.posts[this.posts.length - 1].id
|
untilId: this.posts[this.posts.length - 1].id
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
this.moreFetching = false;
|
this.moreFetching = false;
|
||||||
this.posts = this.posts.concat(posts);
|
this.posts = this.posts.concat(posts);
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<p><button class="signup" @click="signup">はじめる</button><button class="signin" @click="signin">ログイン</button></p>
|
<p><button class="signup" @click="signup">はじめる</button><button class="signin" @click="signin">ログイン</button></p>
|
||||||
<div class="users">
|
<div class="users">
|
||||||
<router-link v-for="user in users" :key="user.id" class="avatar-anchor" :to="`/@${getAcct(user)}`" v-user-preview="user.id">
|
<router-link v-for="user in users" :key="user.id" class="avatar-anchor" :to="`/@${getAcct(user)}`" v-user-preview="user.id">
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
:data-melt="props.design == 2"
|
:data-melt="props.design == 2"
|
||||||
>
|
>
|
||||||
<div class="banner"
|
<div class="banner"
|
||||||
:style="os.i.banner_url ? `background-image: url(${os.i.banner_url}?thumbnail&size=256)` : ''"
|
:style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=256)` : ''"
|
||||||
title="クリックでバナー編集"
|
title="クリックでバナー編集"
|
||||||
@click="os.apis.updateBanner"
|
@click="os.apis.updateBanner"
|
||||||
></div>
|
></div>
|
||||||
<img class="avatar"
|
<img class="avatar"
|
||||||
:src="`${os.i.avatar_url}?thumbnail&size=96`"
|
:src="`${os.i.avatarUrl}?thumbnail&size=96`"
|
||||||
@click="os.apis.updateAvatar"
|
@click="os.apis.updateAvatar"
|
||||||
alt="avatar"
|
alt="avatar"
|
||||||
title="クリックでアバター編集"
|
title="クリックでアバター編集"
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<template v-else-if="users.length != 0">
|
<template v-else-if="users.length != 0">
|
||||||
<div class="user" v-for="_user in users">
|
<div class="user" v-for="_user in users">
|
||||||
<router-link class="avatar-anchor" :to="`/@${getAcct(_user)}`">
|
<router-link class="avatar-anchor" :to="`/@${getAcct(_user)}`">
|
||||||
<img class="avatar" :src="`${_user.avatar_url}?thumbnail&size=42`" alt="" v-user-preview="_user.id"/>
|
<img class="avatar" :src="`${_user.avatarUrl}?thumbnail&size=42`" alt="" v-user-preview="_user.id"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<router-link class="name" :to="`/@${getAcct(_user)}`" v-user-preview="_user.id">{{ _user.name }}</router-link>
|
<router-link class="name" :to="`/@${getAcct(_user)}`" v-user-preview="_user.id">{{ _user.name }}</router-link>
|
||||||
|
|
|
@ -92,7 +92,7 @@ export default Vue.extend({
|
||||||
name: this.name,
|
name: this.name,
|
||||||
nameId: this.nid,
|
nameId: this.nid,
|
||||||
description: this.description,
|
description: this.description,
|
||||||
callback_url: this.cb,
|
callbackUrl: this.cb,
|
||||||
permission: this.permission
|
permission: this.permission
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
location.href = '/apps';
|
location.href = '/apps';
|
||||||
|
|
|
@ -320,7 +320,7 @@ export default Vue.extend({
|
||||||
(this as any).api('drive/files', {
|
(this as any).api('drive/files', {
|
||||||
folderId: this.folder ? this.folder.id : null,
|
folderId: this.folder ? this.folder.id : null,
|
||||||
limit: max + 1,
|
limit: max + 1,
|
||||||
until_id: this.files[this.files.length - 1].id
|
untilId: this.files[this.files.length - 1].id
|
||||||
}).then(files => {
|
}).then(files => {
|
||||||
if (files.length == max + 1) {
|
if (files.length == max + 1) {
|
||||||
this.moreFiles = true;
|
this.moreFiles = true;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mk-notification-preview" :class="notification.type">
|
<div class="mk-notification-preview" :class="notification.type">
|
||||||
<template v-if="notification.type == 'reaction'">
|
<template v-if="notification.type == 'reaction'">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p><mk-reaction-icon :reaction="notification.reaction"/>{{ notification.user.name }}</p>
|
<p><mk-reaction-icon :reaction="notification.reaction"/>{{ notification.user.name }}</p>
|
||||||
<p class="post-ref">%fa:quote-left%{{ getPostSummary(notification.post) }}%fa:quote-right%</p>
|
<p class="post-ref">%fa:quote-left%{{ getPostSummary(notification.post) }}%fa:quote-right%</p>
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="notification.type == 'repost'">
|
<template v-if="notification.type == 'repost'">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:retweet%{{ notification.post.user.name }}</p>
|
<p>%fa:retweet%{{ notification.post.user.name }}</p>
|
||||||
<p class="post-ref">%fa:quote-left%{{ getPostSummary(notification.post.repost) }}%fa:quote-right%</p>
|
<p class="post-ref">%fa:quote-left%{{ getPostSummary(notification.post.repost) }}%fa:quote-right%</p>
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="notification.type == 'quote'">
|
<template v-if="notification.type == 'quote'">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:quote-left%{{ notification.post.user.name }}</p>
|
<p>%fa:quote-left%{{ notification.post.user.name }}</p>
|
||||||
<p class="post-preview">{{ getPostSummary(notification.post) }}</p>
|
<p class="post-preview">{{ getPostSummary(notification.post) }}</p>
|
||||||
|
@ -25,14 +25,14 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="notification.type == 'follow'">
|
<template v-if="notification.type == 'follow'">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:user-plus%{{ notification.user.name }}</p>
|
<p>%fa:user-plus%{{ notification.user.name }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="notification.type == 'reply'">
|
<template v-if="notification.type == 'reply'">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:reply%{{ notification.post.user.name }}</p>
|
<p>%fa:reply%{{ notification.post.user.name }}</p>
|
||||||
<p class="post-preview">{{ getPostSummary(notification.post) }}</p>
|
<p class="post-preview">{{ getPostSummary(notification.post) }}</p>
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="notification.type == 'mention'">
|
<template v-if="notification.type == 'mention'">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:at%{{ notification.post.user.name }}</p>
|
<p>%fa:at%{{ notification.post.user.name }}</p>
|
||||||
<p class="post-preview">{{ getPostSummary(notification.post) }}</p>
|
<p class="post-preview">{{ getPostSummary(notification.post) }}</p>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="notification.type == 'poll_vote'">
|
<template v-if="notification.type == 'poll_vote'">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>%fa:chart-pie%{{ notification.user.name }}</p>
|
<p>%fa:chart-pie%{{ notification.user.name }}</p>
|
||||||
<p class="post-ref">%fa:quote-left%{{ getPostSummary(notification.post) }}%fa:quote-right%</p>
|
<p class="post-ref">%fa:quote-left%{{ getPostSummary(notification.post) }}%fa:quote-right%</p>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="notification reaction" v-if="notification.type == 'reaction'">
|
<div class="notification reaction" v-if="notification.type == 'reaction'">
|
||||||
<mk-time :time="notification.createdAt"/>
|
<mk-time :time="notification.createdAt"/>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
<div class="notification repost" v-if="notification.type == 'repost'">
|
<div class="notification repost" v-if="notification.type == 'repost'">
|
||||||
<mk-time :time="notification.createdAt"/>
|
<mk-time :time="notification.createdAt"/>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${notification.post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
<div class="notification follow" v-if="notification.type == 'follow'">
|
<div class="notification follow" v-if="notification.type == 'follow'">
|
||||||
<mk-time :time="notification.createdAt"/>
|
<mk-time :time="notification.createdAt"/>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
<div class="notification poll_vote" v-if="notification.type == 'poll_vote'">
|
<div class="notification poll_vote" v-if="notification.type == 'poll_vote'">
|
||||||
<mk-time :time="notification.createdAt"/>
|
<mk-time :time="notification.createdAt"/>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${notification.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${notification.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -75,7 +75,7 @@ export default Vue.extend({
|
||||||
|
|
||||||
(this as any).api('i/notifications', {
|
(this as any).api('i/notifications', {
|
||||||
limit: max + 1,
|
limit: max + 1,
|
||||||
until_id: this.notifications[this.notifications.length - 1].id
|
untilId: this.notifications[this.notifications.length - 1].id
|
||||||
}).then(notifications => {
|
}).then(notifications => {
|
||||||
if (notifications.length == max + 1) {
|
if (notifications.length == max + 1) {
|
||||||
this.moreNotifications = true;
|
this.moreNotifications = true;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="root sub">
|
<div class="root sub">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<div class="repost" v-if="isRepost">
|
<div class="repost" v-if="isRepost">
|
||||||
<p>
|
<p>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=32`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=32`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
%fa:retweet%
|
%fa:retweet%
|
||||||
<router-link class="name" :to="`/@${acct}`">
|
<router-link class="name" :to="`/@${acct}`">
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<router-link class="avatar-anchor" :to="`/@${pAcct}`">
|
<router-link class="avatar-anchor" :to="`/@${pAcct}`">
|
||||||
<img class="avatar" :src="`${p.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div>
|
<div>
|
||||||
<router-link class="name" :to="`/@${pAcct}`">{{ p.user.name }}</router-link>
|
<router-link class="name" :to="`/@${pAcct}`">{{ p.user.name }}</router-link>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mk-post-preview">
|
<div class="mk-post-preview">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="sub">
|
<div class="sub">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=96`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=96`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="repost" v-if="isRepost">
|
<div class="repost" v-if="isRepost">
|
||||||
<p>
|
<p>
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${post.user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${post.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
%fa:retweet%
|
%fa:retweet%
|
||||||
<span>{{ '%i18n:mobile.tags.mk-timeline-post.reposted-by%'.substr(0, '%i18n:mobile.tags.mk-timeline-post.reposted-by%'.indexOf('{')) }}</span>
|
<span>{{ '%i18n:mobile.tags.mk-timeline-post.reposted-by%'.substr(0, '%i18n:mobile.tags.mk-timeline-post.reposted-by%'.indexOf('{')) }}</span>
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
</div>
|
</div>
|
||||||
<article>
|
<article>
|
||||||
<router-link class="avatar-anchor" :to="`/@${pAcct}`">
|
<router-link class="avatar-anchor" :to="`/@${pAcct}`">
|
||||||
<img class="avatar" :src="`${p.user.avatar_url}?thumbnail&size=96`" alt="avatar"/>
|
<img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=96`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -65,7 +65,7 @@ export default Vue.extend({
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
(this as any).api('posts/timeline', {
|
(this as any).api('posts/timeline', {
|
||||||
limit: limit + 1,
|
limit: limit + 1,
|
||||||
until_date: this.date ? (this.date as any).getTime() : undefined
|
untilDate: this.date ? (this.date as any).getTime() : undefined
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
if (posts.length == limit + 1) {
|
if (posts.length == limit + 1) {
|
||||||
posts.pop();
|
posts.pop();
|
||||||
|
@ -81,7 +81,7 @@ export default Vue.extend({
|
||||||
this.moreFetching = true;
|
this.moreFetching = true;
|
||||||
(this as any).api('posts/timeline', {
|
(this as any).api('posts/timeline', {
|
||||||
limit: limit + 1,
|
limit: limit + 1,
|
||||||
until_id: this.posts[this.posts.length - 1].id
|
untilId: this.posts[this.posts.length - 1].id
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
if (posts.length == limit + 1) {
|
if (posts.length == limit + 1) {
|
||||||
posts.pop();
|
posts.pop();
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<transition name="nav">
|
<transition name="nav">
|
||||||
<div class="body" v-if="isOpen">
|
<div class="body" v-if="isOpen">
|
||||||
<router-link class="me" v-if="os.isSignedIn" :to="`/@${os.i.username}`">
|
<router-link class="me" v-if="os.isSignedIn" :to="`/@${os.i.username}`">
|
||||||
<img class="avatar" :src="`${os.i.avatar_url}?thumbnail&size=128`" alt="avatar"/>
|
<img class="avatar" :src="`${os.i.avatarUrl}?thumbnail&size=128`" alt="avatar"/>
|
||||||
<p class="name">{{ os.i.name }}</p>
|
<p class="name">{{ os.i.name }}</p>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="links">
|
<div class="links">
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mk-user-card">
|
<div class="mk-user-card">
|
||||||
<header :style="user.banner_url ? `background-image: url(${user.banner_url}?thumbnail&size=1024)` : ''">
|
<header :style="user.bannerUrl ? `background-image: url(${user.bannerUrl}?thumbnail&size=1024)` : ''">
|
||||||
<a :href="`/@${acct}`">
|
<a :href="`/@${acct}`">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=200`" alt="avatar"/>
|
<img :src="`${user.avatarUrl}?thumbnail&size=200`" alt="avatar"/>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<a class="name" :href="`/@${acct}`" target="_blank">{{ user.name }}</a>
|
<a class="name" :href="`/@${acct}`" target="_blank">{{ user.name }}</a>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mk-user-preview">
|
<div class="mk-user-preview">
|
||||||
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
<router-link class="avatar-anchor" :to="`/@${acct}`">
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<header>
|
<header>
|
||||||
|
|
|
@ -53,7 +53,7 @@ export default Vue.extend({
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
with_media: this.withMedia,
|
with_media: this.withMedia,
|
||||||
limit: limit + 1,
|
limit: limit + 1,
|
||||||
until_id: this.posts[this.posts.length - 1].id
|
untilId: this.posts[this.posts.length - 1].id
|
||||||
}).then(posts => {
|
}).then(posts => {
|
||||||
if (posts.length == limit + 1) {
|
if (posts.length == limit + 1) {
|
||||||
posts.pop();
|
posts.pop();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<mk-ui>
|
<mk-ui>
|
||||||
<template slot="header" v-if="!fetching">
|
<template slot="header" v-if="!fetching">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=64`" alt="">
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt="">
|
||||||
{{ '%i18n:mobile.tags.mk-user-followers-page.followers-of%'.replace('{}', user.name) }}
|
{{ '%i18n:mobile.tags.mk-user-followers-page.followers-of%'.replace('{}', user.name) }}
|
||||||
</template>
|
</template>
|
||||||
<mk-users-list
|
<mk-users-list
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<mk-ui>
|
<mk-ui>
|
||||||
<template slot="header" v-if="!fetching">
|
<template slot="header" v-if="!fetching">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=64`" alt="">
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt="">
|
||||||
{{ '%i18n:mobile.tags.mk-user-following-page.following-of%'.replace('{}', user.name) }}
|
{{ '%i18n:mobile.tags.mk-user-following-page.following-of%'.replace('{}', user.name) }}
|
||||||
</template>
|
</template>
|
||||||
<mk-users-list
|
<mk-users-list
|
||||||
|
|
|
@ -22,7 +22,7 @@ export default Vue.extend({
|
||||||
const ok = window.confirm('%i18n:mobile.tags.mk-notifications-page.read-all%');
|
const ok = window.confirm('%i18n:mobile.tags.mk-notifications-page.read-all%');
|
||||||
if (!ok) return;
|
if (!ok) return;
|
||||||
|
|
||||||
(this as any).api('notifications/mark_as_read_all');
|
(this as any).api('notifications/markAsRead_all');
|
||||||
},
|
},
|
||||||
onFetched() {
|
onFetched() {
|
||||||
Progress.done();
|
Progress.done();
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
<div :class="$style.content">
|
<div :class="$style.content">
|
||||||
<p>%fa:info-circle%%i18n:mobile.tags.mk-profile-setting.will-be-published%</p>
|
<p>%fa:info-circle%%i18n:mobile.tags.mk-profile-setting.will-be-published%</p>
|
||||||
<div :class="$style.form">
|
<div :class="$style.form">
|
||||||
<div :style="os.i.banner_url ? `background-image: url(${os.i.banner_url}?thumbnail&size=1024)` : ''" @click="setBanner">
|
<div :style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=1024)` : ''" @click="setBanner">
|
||||||
<img :src="`${os.i.avatar_url}?thumbnail&size=200`" alt="avatar" @click="setAvatar"/>
|
<img :src="`${os.i.avatarUrl}?thumbnail&size=200`" alt="avatar" @click="setAvatar"/>
|
||||||
</div>
|
</div>
|
||||||
<label>
|
<label>
|
||||||
<p>%i18n:mobile.tags.mk-profile-setting.name%</p>
|
<p>%i18n:mobile.tags.mk-profile-setting.name%</p>
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<span slot="header" v-if="!fetching">%fa:user% {{ user.name }}</span>
|
<span slot="header" v-if="!fetching">%fa:user% {{ user.name }}</span>
|
||||||
<main v-if="!fetching">
|
<main v-if="!fetching">
|
||||||
<header>
|
<header>
|
||||||
<div class="banner" :style="user.banner_url ? `background-image: url(${user.banner_url}?thumbnail&size=1024)` : ''"></div>
|
<div class="banner" :style="user.bannerUrl ? `background-image: url(${user.bannerUrl}?thumbnail&size=1024)` : ''"></div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<a class="avatar">
|
<a class="avatar">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=200`" alt="avatar"/>
|
<img :src="`${user.avatarUrl}?thumbnail&size=200`" alt="avatar"/>
|
||||||
</a>
|
</a>
|
||||||
<mk-follow-button v-if="os.isSignedIn && os.i.id != user.id" :user="user"/>
|
<mk-follow-button v-if="os.isSignedIn && os.i.id != user.id" :user="user"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<p class="initializing" v-if="fetching">%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-followers-you-know.loading%<mk-ellipsis/></p>
|
<p class="initializing" v-if="fetching">%fa:spinner .pulse .fw%%i18n:mobile.tags.mk-user-overview-followers-you-know.loading%<mk-ellipsis/></p>
|
||||||
<div v-if="!fetching && users.length > 0">
|
<div v-if="!fetching && users.length > 0">
|
||||||
<a v-for="user in users" :key="user.id" :href="`/@${getAcct(user)}`">
|
<a v-for="user in users" :key="user.id" :href="`/@${getAcct(user)}`">
|
||||||
<img :src="`${user.avatar_url}?thumbnail&size=64`" :alt="user.name"/>
|
<img :src="`${user.avatarUrl}?thumbnail&size=64`" :alt="user.name"/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<p class="empty" v-if="!fetching && users.length == 0">%i18n:mobile.tags.mk-user-overview-followers-you-know.no-users%</p>
|
<p class="empty" v-if="!fetching && users.length == 0">%i18n:mobile.tags.mk-user-overview-followers-you-know.no-users%</p>
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="users">
|
<div class="users">
|
||||||
<router-link v-for="user in users" :key="user.id" class="avatar-anchor" :to="`/@${user.username}`">
|
<router-link v-for="user in users" :key="user.id" class="avatar-anchor" :to="`/@${user.username}`">
|
||||||
<img class="avatar" :src="`${user.avatar_url}?thumbnail&size=64`" alt="avatar"/>
|
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
<div class="mkw-profile">
|
<div class="mkw-profile">
|
||||||
<mk-widget-container>
|
<mk-widget-container>
|
||||||
<div :class="$style.banner"
|
<div :class="$style.banner"
|
||||||
:style="os.i.banner_url ? `background-image: url(${os.i.banner_url}?thumbnail&size=256)` : ''"
|
:style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=256)` : ''"
|
||||||
></div>
|
></div>
|
||||||
<img :class="$style.avatar"
|
<img :class="$style.avatar"
|
||||||
:src="`${os.i.avatar_url}?thumbnail&size=96`"
|
:src="`${os.i.avatarUrl}?thumbnail&size=96`"
|
||||||
alt="avatar"
|
alt="avatar"
|
||||||
/>
|
/>
|
||||||
<router-link :class="$style.name" :to="`/@${os.i.username}`">{{ os.i.name }}</router-link>
|
<router-link :class="$style.name" :to="`/@${os.i.username}`">{{ os.i.name }}</router-link>
|
||||||
|
|
|
@ -54,7 +54,7 @@ section
|
||||||
h3 2.ユーザーに認証させる
|
h3 2.ユーザーに認証させる
|
||||||
p あなたのアプリを使ってもらうには、ユーザーにアカウントへのアクセスの許可をもらう必要があります。
|
p あなたのアプリを使ってもらうには、ユーザーにアカウントへのアクセスの許可をもらう必要があります。
|
||||||
p
|
p
|
||||||
| 認証セッションを開始するには、#{common.config.api_url}/auth/session/generate へパラメータに app_secret としてシークレットキーを含めたリクエストを送信します。
|
| 認証セッションを開始するには、#{common.config.api_url}/auth/session/generate へパラメータに appSecret としてシークレットキーを含めたリクエストを送信します。
|
||||||
| リクエスト形式はJSONで、メソッドはPOSTです。
|
| リクエスト形式はJSONで、メソッドはPOSTです。
|
||||||
| レスポンスとして認証セッションのトークンや認証フォームのURLが取得できるので、認証フォームのURLをブラウザで表示し、ユーザーにフォームを提示してください。
|
| レスポンスとして認証セッションのトークンや認証フォームのURLが取得できるので、認証フォームのURLをブラウザで表示し、ユーザーにフォームを提示してください。
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ section
|
||||||
th 説明
|
th 説明
|
||||||
tbody
|
tbody
|
||||||
tr
|
tr
|
||||||
td app_secret
|
td appSecret
|
||||||
td string
|
td string
|
||||||
td あなたのアプリのシークレットキー
|
td あなたのアプリのシークレットキー
|
||||||
tr
|
tr
|
||||||
|
|
|
@ -10,22 +10,22 @@ params:
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
ja: "取得する最大の数"
|
ja: "取得する最大の数"
|
||||||
- name: "since_id"
|
- name: "sinceId"
|
||||||
type: "id(Post)"
|
type: "id(Post)"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
ja: "指定すると、この投稿を基点としてより新しい投稿を取得します"
|
ja: "指定すると、この投稿を基点としてより新しい投稿を取得します"
|
||||||
- name: "until_id"
|
- name: "untilId"
|
||||||
type: "id(Post)"
|
type: "id(Post)"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
ja: "指定すると、この投稿を基点としてより古い投稿を取得します"
|
ja: "指定すると、この投稿を基点としてより古い投稿を取得します"
|
||||||
- name: "since_date"
|
- name: "sinceDate"
|
||||||
type: "number"
|
type: "number"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
ja: "指定した時間を基点としてより新しい投稿を取得します。数値は、1970 年 1 月 1 日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。"
|
ja: "指定した時間を基点としてより新しい投稿を取得します。数値は、1970 年 1 月 1 日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。"
|
||||||
- name: "until_date"
|
- name: "untilDate"
|
||||||
type: "number"
|
type: "number"
|
||||||
optional: true
|
optional: true
|
||||||
desc:
|
desc:
|
||||||
|
|
|
@ -35,7 +35,7 @@ props:
|
||||||
desc:
|
desc:
|
||||||
ja: "アバターのID"
|
ja: "アバターのID"
|
||||||
en: "The ID of the avatar of this user"
|
en: "The ID of the avatar of this user"
|
||||||
- name: "avatar_url"
|
- name: "avatarUrl"
|
||||||
type: "string"
|
type: "string"
|
||||||
optional: false
|
optional: false
|
||||||
desc:
|
desc:
|
||||||
|
@ -47,7 +47,7 @@ props:
|
||||||
desc:
|
desc:
|
||||||
ja: "バナーのID"
|
ja: "バナーのID"
|
||||||
en: "The ID of the banner of this user"
|
en: "The ID of the banner of this user"
|
||||||
- name: "banner_url"
|
- name: "bannerUrl"
|
||||||
type: "string"
|
type: "string"
|
||||||
optional: false
|
optional: false
|
||||||
desc:
|
desc:
|
||||||
|
|
|
@ -83,7 +83,7 @@ const defaultSwagger = {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "アバターに設定しているドライブのファイルのID"
|
"description": "アバターに設定しているドライブのファイルのID"
|
||||||
},
|
},
|
||||||
"avatar_url": {
|
"avatarUrl": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "アバターURL"
|
"description": "アバターURL"
|
||||||
},
|
},
|
||||||
|
@ -91,7 +91,7 @@ const defaultSwagger = {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "バナーに設定しているドライブのファイルのID"
|
"description": "バナーに設定しているドライブのファイルのID"
|
||||||
},
|
},
|
||||||
"banner_url": {
|
"bannerUrl": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "バナーURL"
|
"description": "バナーURL"
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue