summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-03-24 11:05:37 +0900
committerGitHub <noreply@github.com>2021-03-24 11:05:37 +0900
commitce340aba7a37394c70b9f3d7cece9cfa5e91d94c (patch)
tree99612ea0d039f20e0baa9ca243e8cec0af96b11a /src/server
parentfix bug (diff)
downloadsharkey-ce340aba7a37394c70b9f3d7cece9cfa5e91d94c.tar.gz
sharkey-ce340aba7a37394c70b9f3d7cece9cfa5e91d94c.tar.bz2
sharkey-ce340aba7a37394c70b9f3d7cece9cfa5e91d94c.zip
Refactor (#7394)
* wip * wip * wip * wip * wip * Update define.ts * Update update.ts * Update user.ts * wip * wip * Update request.ts * URL * wip * wip * wip * wip * Update invite.ts * Update create.ts
Diffstat (limited to 'src/server')
-rw-r--r--src/server/api/common/generate-block-query.ts2
-rw-r--r--src/server/api/common/generate-channel-query.ts2
-rw-r--r--src/server/api/common/generate-muted-note-query.ts2
-rw-r--r--src/server/api/common/generate-muted-user-query.ts4
-rw-r--r--src/server/api/common/generate-replies-query.ts2
-rw-r--r--src/server/api/common/generate-visibility-query.ts2
-rw-r--r--src/server/api/common/read-messaging-message.ts4
-rw-r--r--src/server/api/define.ts19
-rw-r--r--src/server/api/endpoints/admin/accounts/create.ts3
-rw-r--r--src/server/api/endpoints/admin/emoji/list.ts6
-rw-r--r--src/server/api/endpoints/admin/queue/deliver-delayed.ts1
-rw-r--r--src/server/api/endpoints/admin/queue/inbox-delayed.ts1
-rw-r--r--src/server/api/endpoints/admin/relays/add.ts1
-rw-r--r--src/server/api/endpoints/antennas/create.ts4
-rw-r--r--src/server/api/endpoints/antennas/update.ts4
-rw-r--r--src/server/api/endpoints/app/show.ts2
-rw-r--r--src/server/api/endpoints/blocking/create.ts4
-rw-r--r--src/server/api/endpoints/blocking/delete.ts4
-rw-r--r--src/server/api/endpoints/channels/timeline.ts2
-rw-r--r--src/server/api/endpoints/clips/create.ts4
-rw-r--r--src/server/api/endpoints/drive.ts2
-rw-r--r--src/server/api/endpoints/drive/folders/create.ts4
-rw-r--r--src/server/api/endpoints/federation/show-instance.ts1
-rw-r--r--src/server/api/endpoints/games/reversi/games.ts2
-rw-r--r--src/server/api/endpoints/games/reversi/match.ts2
-rw-r--r--src/server/api/endpoints/i/pin.ts2
-rw-r--r--src/server/api/endpoints/i/registry/scopes.ts1
-rw-r--r--src/server/api/endpoints/i/unpin.ts2
-rw-r--r--src/server/api/endpoints/i/update.ts3
-rw-r--r--src/server/api/endpoints/notes/unrenote.ts4
-rw-r--r--src/server/api/endpoints/page-push.ts2
-rw-r--r--src/server/api/endpoints/users/groups/create.ts4
-rw-r--r--src/server/api/endpoints/users/groups/invite.ts4
-rw-r--r--src/server/api/endpoints/users/lists/create.ts4
-rw-r--r--src/server/api/endpoints/users/show.ts5
-rw-r--r--src/server/api/limiter.ts2
-rw-r--r--src/server/api/stream/channels/games/reversi.ts2
-rw-r--r--src/server/api/stream/channels/global-timeline.ts3
-rw-r--r--src/server/api/stream/channels/home-timeline.ts3
-rw-r--r--src/server/api/stream/channels/hybrid-timeline.ts3
-rw-r--r--src/server/api/stream/channels/local-timeline.ts3
-rw-r--r--src/server/api/stream/index.ts4
-rw-r--r--src/server/index.ts2
43 files changed, 78 insertions, 59 deletions
diff --git a/src/server/api/common/generate-block-query.ts b/src/server/api/common/generate-block-query.ts
index 3636410485..fa2179ae64 100644
--- a/src/server/api/common/generate-block-query.ts
+++ b/src/server/api/common/generate-block-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { Blockings } from '../../../models';
import { SelectQueryBuilder } from 'typeorm';
-export function generateBlockQueryForUsers(q: SelectQueryBuilder<any>, me: User) {
+export function generateBlockQueryForUsers(q: SelectQueryBuilder<any>, me: { id: User['id'] }) {
const blockingQuery = Blockings.createQueryBuilder('blocking')
.select('blocking.blockeeId')
.where('blocking.blockerId = :blockerId', { blockerId: me.id });
diff --git a/src/server/api/common/generate-channel-query.ts b/src/server/api/common/generate-channel-query.ts
index c0337b2c6b..74a6d68c40 100644
--- a/src/server/api/common/generate-channel-query.ts
+++ b/src/server/api/common/generate-channel-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { ChannelFollowings } from '../../../models';
import { Brackets, SelectQueryBuilder } from 'typeorm';
-export function generateChannelQuery(q: SelectQueryBuilder<any>, me?: User | null) {
+export function generateChannelQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
if (me == null) {
q.andWhere('note.channelId IS NULL');
} else {
diff --git a/src/server/api/common/generate-muted-note-query.ts b/src/server/api/common/generate-muted-note-query.ts
index 498930476c..c7f9f7c5a3 100644
--- a/src/server/api/common/generate-muted-note-query.ts
+++ b/src/server/api/common/generate-muted-note-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { MutedNotes } from '../../../models';
import { SelectQueryBuilder } from 'typeorm';
-export function generateMutedNoteQuery(q: SelectQueryBuilder<any>, me: User) {
+export function generateMutedNoteQuery(q: SelectQueryBuilder<any>, me: { id: User['id'] }) {
const mutedQuery = MutedNotes.createQueryBuilder('muted')
.select('muted.noteId')
.where('muted.userId = :userId', { userId: me.id });
diff --git a/src/server/api/common/generate-muted-user-query.ts b/src/server/api/common/generate-muted-user-query.ts
index b346f2f0fb..f5e072ba93 100644
--- a/src/server/api/common/generate-muted-user-query.ts
+++ b/src/server/api/common/generate-muted-user-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { Mutings } from '../../../models';
import { SelectQueryBuilder, Brackets } from 'typeorm';
-export function generateMutedUserQuery(q: SelectQueryBuilder<any>, me: User, exclude?: User) {
+export function generateMutedUserQuery(q: SelectQueryBuilder<any>, me: { id: User['id'] }, exclude?: User) {
const mutingQuery = Mutings.createQueryBuilder('muting')
.select('muting.muteeId')
.where('muting.muterId = :muterId', { muterId: me.id });
@@ -28,7 +28,7 @@ export function generateMutedUserQuery(q: SelectQueryBuilder<any>, me: User, exc
q.setParameters(mutingQuery.getParameters());
}
-export function generateMutedUserQueryForUsers(q: SelectQueryBuilder<any>, me: User) {
+export function generateMutedUserQueryForUsers(q: SelectQueryBuilder<any>, me: { id: User['id'] }) {
const mutingQuery = Mutings.createQueryBuilder('muting')
.select('muting.muteeId')
.where('muting.muterId = :muterId', { muterId: me.id });
diff --git a/src/server/api/common/generate-replies-query.ts b/src/server/api/common/generate-replies-query.ts
index 8ebe93f20a..29b1e17c2e 100644
--- a/src/server/api/common/generate-replies-query.ts
+++ b/src/server/api/common/generate-replies-query.ts
@@ -1,7 +1,7 @@
import { User } from '../../../models/entities/user';
import { Brackets, SelectQueryBuilder } from 'typeorm';
-export function generateRepliesQuery(q: SelectQueryBuilder<any>, me?: User | null) {
+export function generateRepliesQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
if (me == null) {
q.andWhere(new Brackets(qb => { qb
.where(`note.replyId IS NULL`) // 返信ではない
diff --git a/src/server/api/common/generate-visibility-query.ts b/src/server/api/common/generate-visibility-query.ts
index d981b4a613..72ed1c46ea 100644
--- a/src/server/api/common/generate-visibility-query.ts
+++ b/src/server/api/common/generate-visibility-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { Followings } from '../../../models';
import { Brackets, SelectQueryBuilder } from 'typeorm';
-export function generateVisibilityQuery(q: SelectQueryBuilder<any>, me?: User | null) {
+export function generateVisibilityQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
if (me == null) {
q.andWhere(new Brackets(qb => { qb
.where(`note.visibility = 'public'`)
diff --git a/src/server/api/common/read-messaging-message.ts b/src/server/api/common/read-messaging-message.ts
index 950ab2b7b4..6c9fcf973f 100644
--- a/src/server/api/common/read-messaging-message.ts
+++ b/src/server/api/common/read-messaging-message.ts
@@ -1,7 +1,7 @@
import { publishMainStream, publishGroupMessagingStream } from '../../../services/stream';
import { publishMessagingStream } from '../../../services/stream';
import { publishMessagingIndexStream } from '../../../services/stream';
-import { User, ILocalUser, IRemoteUser } from '../../../models/entities/user';
+import { User, IRemoteUser } from '../../../models/entities/user';
import { MessagingMessage } from '../../../models/entities/messaging-message';
import { MessagingMessages, UserGroupJoinings, Users } from '../../../models';
import { In } from 'typeorm';
@@ -107,7 +107,7 @@ export async function readGroupMessagingMessage(
}
}
-export async function deliverReadActivity(user: ILocalUser, recipient: IRemoteUser, messages: MessagingMessage | MessagingMessage[]) {
+export async function deliverReadActivity(user: { id: User['id']; host: null; }, recipient: IRemoteUser, messages: MessagingMessage | MessagingMessage[]) {
messages = toArray(messages).filter(x => x.uri);
const contents = messages.map(x => renderReadActivity(user, x));
diff --git a/src/server/api/define.ts b/src/server/api/define.ts
index 7f6cceab8c..432d5017e8 100644
--- a/src/server/api/define.ts
+++ b/src/server/api/define.ts
@@ -5,6 +5,18 @@ import { ApiError } from './error';
import { SchemaType } from '@/misc/schema';
import { AccessToken } from '../../models/entities/access-token';
+type SimpleUserInfo = {
+ id: ILocalUser['id'];
+ host: ILocalUser['host'];
+ username: ILocalUser['username'];
+ uri: ILocalUser['uri'];
+ inbox: ILocalUser['inbox'];
+ sharedInbox: ILocalUser['sharedInbox'];
+ isAdmin: ILocalUser['isAdmin'];
+ isModerator: ILocalUser['isModerator'];
+ isSilenced: ILocalUser['isSilenced'];
+};
+
// TODO: defaultが設定されている場合はその型も考慮する
type Params<T extends IEndpointMeta> = {
[P in keyof T['params']]: NonNullable<T['params']>[P]['transform'] extends Function
@@ -15,13 +27,12 @@ type Params<T extends IEndpointMeta> = {
export type Response = Record<string, any> | void;
type executor<T extends IEndpointMeta> =
- (params: Params<T>, user: T['requireCredential'] extends true ? ILocalUser : ILocalUser | null, token: AccessToken | null, file?: any, cleanup?: Function) =>
+ (params: Params<T>, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any, cleanup?: Function) =>
Promise<T['res'] extends undefined ? Response : SchemaType<NonNullable<T['res']>>>;
-// TODO: API関数に user まるごと渡すのではなくユーザーIDなどの最小限のプロパティだけ渡すようにしたい(キャッシュとか考えないでよくなるため)
export default function <T extends IEndpointMeta>(meta: T, cb: executor<T>)
- : (params: any, user: T['requireCredential'] extends true ? ILocalUser : ILocalUser | null, token: AccessToken | null, file?: any) => Promise<any> {
- return (params: any, user: T['requireCredential'] extends true ? ILocalUser : ILocalUser | null, token: AccessToken | null, file?: any) => {
+ : (params: any, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any) => Promise<any> {
+ return (params: any, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any) => {
function cleanup() {
fs.unlink(file.path, () => {});
}
diff --git a/src/server/api/endpoints/admin/accounts/create.ts b/src/server/api/endpoints/admin/accounts/create.ts
index 27ceca158b..9e3fc46acd 100644
--- a/src/server/api/endpoints/admin/accounts/create.ts
+++ b/src/server/api/endpoints/admin/accounts/create.ts
@@ -34,7 +34,8 @@ export const meta = {
}
};
-export default define(meta, async (ps, me) => {
+export default define(meta, async (ps, _me) => {
+ const me = _me ? await Users.findOneOrFail(_me.id) : null;
const noUsers = (await Users.count({
host: null,
})) === 0;
diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts
index 4f83777964..9e50ce61c8 100644
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ b/src/server/api/endpoints/admin/emoji/list.ts
@@ -96,9 +96,9 @@ export default define(meta, async (ps) => {
emojis = await q.getMany();
emojis = emojis.filter(emoji =>
- emoji.name.includes(ps.query) ||
- emoji.aliases.some(a => a.includes(ps.query)) ||
- emoji.category?.includes(ps.query));
+ emoji.name.includes(ps.query!) ||
+ emoji.aliases.some(a => a.includes(ps.query!)) ||
+ emoji.category?.includes(ps.query!));
emojis.splice(ps.limit! + 1);
} else {
diff --git a/src/server/api/endpoints/admin/queue/deliver-delayed.ts b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
index 221aa35e48..d2f8797eb2 100644
--- a/src/server/api/endpoints/admin/queue/deliver-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
@@ -1,3 +1,4 @@
+import { URL } from 'url';
import define from '../../../define';
import { deliverQueue } from '../../../../../queue';
diff --git a/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index 52f67cb514..3599c012a5 100644
--- a/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -1,3 +1,4 @@
+import { URL } from 'url';
import define from '../../../define';
import { inboxQueue } from '../../../../../queue';
diff --git a/src/server/api/endpoints/admin/relays/add.ts b/src/server/api/endpoints/admin/relays/add.ts
index 831e05c835..e10bd92c8d 100644
--- a/src/server/api/endpoints/admin/relays/add.ts
+++ b/src/server/api/endpoints/admin/relays/add.ts
@@ -1,3 +1,4 @@
+import { URL } from 'url';
import $ from 'cafy';
import define from '../../../define';
import { addRelay } from '../../../../../services/relay';
diff --git a/src/server/api/endpoints/antennas/create.ts b/src/server/api/endpoints/antennas/create.ts
index 9c8d8adf80..04ca21bba7 100644
--- a/src/server/api/endpoints/antennas/create.ts
+++ b/src/server/api/endpoints/antennas/create.ts
@@ -89,7 +89,7 @@ export default define(meta, async (ps, user) => {
let userList;
let userGroupJoining;
- if (ps.src === 'list') {
+ if (ps.src === 'list' && ps.userListId) {
userList = await UserLists.findOne({
id: ps.userListId,
userId: user.id,
@@ -98,7 +98,7 @@ export default define(meta, async (ps, user) => {
if (userList == null) {
throw new ApiError(meta.errors.noSuchUserList);
}
- } else if (ps.src === 'group') {
+ } else if (ps.src === 'group' && ps.userGroupId) {
userGroupJoining = await UserGroupJoinings.findOne({
userGroupId: ps.userGroupId,
userId: user.id,
diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts
index e23bff9da9..17b0f854f3 100644
--- a/src/server/api/endpoints/antennas/update.ts
+++ b/src/server/api/endpoints/antennas/update.ts
@@ -108,7 +108,7 @@ export default define(meta, async (ps, user) => {
let userList;
let userGroupJoining;
- if (ps.src === 'list') {
+ if (ps.src === 'list' && ps.userListId) {
userList = await UserLists.findOne({
id: ps.userListId,
userId: user.id,
@@ -117,7 +117,7 @@ export default define(meta, async (ps, user) => {
if (userList == null) {
throw new ApiError(meta.errors.noSuchUserList);
}
- } else if (ps.src === 'group') {
+ } else if (ps.src === 'group' && ps.userGroupId) {
userGroupJoining = await UserGroupJoinings.findOne({
userGroupId: ps.userGroupId,
userId: user.id,
diff --git a/src/server/api/endpoints/app/show.ts b/src/server/api/endpoints/app/show.ts
index 419e47d077..65f8c77981 100644
--- a/src/server/api/endpoints/app/show.ts
+++ b/src/server/api/endpoints/app/show.ts
@@ -46,6 +46,6 @@ export default define(meta, async (ps, user, token) => {
return await Apps.pack(ap, user, {
detail: true,
- includeSecret: isSecure && (ap.userId === user.id)
+ includeSecret: isSecure && (ap.userId === user!.id)
});
});
diff --git a/src/server/api/endpoints/blocking/create.ts b/src/server/api/endpoints/blocking/create.ts
index 25bc36c6f7..60fde8ad78 100644
--- a/src/server/api/endpoints/blocking/create.ts
+++ b/src/server/api/endpoints/blocking/create.ts
@@ -62,7 +62,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const blocker = user;
+ const blocker = await Users.findOneOrFail(user.id);
// 自分自身
if (user.id === ps.userId) {
@@ -93,7 +93,7 @@ export default define(meta, async (ps, user) => {
noteUserId: blockee.id
});
- return await Users.pack(blockee.id, user, {
+ return await Users.pack(blockee.id, blocker, {
detail: true
});
});
diff --git a/src/server/api/endpoints/blocking/delete.ts b/src/server/api/endpoints/blocking/delete.ts
index 8391fd82f2..8caa3efc88 100644
--- a/src/server/api/endpoints/blocking/delete.ts
+++ b/src/server/api/endpoints/blocking/delete.ts
@@ -126,7 +126,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const blocker = user;
+ const blocker = await Users.findOneOrFail(user.id);
// Check if the blockee is yourself
if (user.id === ps.userId) {
@@ -152,7 +152,7 @@ export default define(meta, async (ps, user) => {
// Delete blocking
await deleteBlocking(blocker, blockee);
- return await Users.pack(blockee.id, user, {
+ return await Users.pack(blockee.id, blocker, {
detail: true
});
});
diff --git a/src/server/api/endpoints/channels/timeline.ts b/src/server/api/endpoints/channels/timeline.ts
index 5c844bf5cd..494221010a 100644
--- a/src/server/api/endpoints/channels/timeline.ts
+++ b/src/server/api/endpoints/channels/timeline.ts
@@ -97,7 +97,7 @@ export default define(meta, async (ps, user) => {
const timeline = await query.take(ps.limit!).getMany();
- activeUsersChart.update(user);
+ if (user) activeUsersChart.update(user);
return await Notes.packMany(timeline, user);
});
diff --git a/src/server/api/endpoints/clips/create.ts b/src/server/api/endpoints/clips/create.ts
index de01aaa5b3..fb2a77fe5b 100644
--- a/src/server/api/endpoints/clips/create.ts
+++ b/src/server/api/endpoints/clips/create.ts
@@ -32,14 +32,14 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const clip = await Clips.save({
+ const clip = await Clips.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
name: ps.name,
isPublic: ps.isPublic,
description: ps.description,
- });
+ }).then(x => Clips.findOneOrFail(x.identifiers[0]));
return await Clips.pack(clip);
});
diff --git a/src/server/api/endpoints/drive.ts b/src/server/api/endpoints/drive.ts
index a2dd49d329..0100d4da79 100644
--- a/src/server/api/endpoints/drive.ts
+++ b/src/server/api/endpoints/drive.ts
@@ -34,7 +34,7 @@ export default define(meta, async (ps, user) => {
const instance = await fetchMeta(true);
// Calculate drive usage
- const usage = await DriveFiles.calcDriveUsageOf(user);
+ const usage = await DriveFiles.calcDriveUsageOf(user.id);
return {
capacity: 1024 * 1024 * instance.localDriveCapacityMb,
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index 218cecff23..d2c5e00a9f 100644
--- a/src/server/api/endpoints/drive/folders/create.ts
+++ b/src/server/api/endpoints/drive/folders/create.ts
@@ -68,13 +68,13 @@ export default define(meta, async (ps, user) => {
}
// Create folder
- const folder = await DriveFolders.save({
+ const folder = await DriveFolders.insert({
id: genId(),
createdAt: new Date(),
name: ps.name,
parentId: parent !== null ? parent.id : null,
userId: user.id
- });
+ }).then(x => DriveFolders.findOneOrFail(x.identifiers[0]));
const folderObj = await DriveFolders.pack(folder);
diff --git a/src/server/api/endpoints/federation/show-instance.ts b/src/server/api/endpoints/federation/show-instance.ts
index ebea14b124..549d7340fb 100644
--- a/src/server/api/endpoints/federation/show-instance.ts
+++ b/src/server/api/endpoints/federation/show-instance.ts
@@ -2,7 +2,6 @@ import $ from 'cafy';
import define from '../../define';
import { Instances } from '../../../../models';
import { toPuny } from '@/misc/convert-host';
-import config from '@/config';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/games/reversi/games.ts b/src/server/api/endpoints/games/reversi/games.ts
index 96ffd31c6f..6ac150ef2c 100644
--- a/src/server/api/endpoints/games/reversi/games.ts
+++ b/src/server/api/endpoints/games/reversi/games.ts
@@ -140,7 +140,7 @@ export default define(meta, async (ps, user) => {
const query = makePaginationQuery(ReversiGames.createQueryBuilder('game'), ps.sinceId, ps.untilId)
.andWhere('game.isStarted = TRUE');
- if (ps.my) {
+ if (ps.my && user) {
query.andWhere(new Brackets(qb => { qb
.where('game.user1Id = :userId', { userId: user.id })
.orWhere('game.user2Id = :userId', { userId: user.id });
diff --git a/src/server/api/endpoints/games/reversi/match.ts b/src/server/api/endpoints/games/reversi/match.ts
index fca4b09641..2c4ec2ebd8 100644
--- a/src/server/api/endpoints/games/reversi/match.ts
+++ b/src/server/api/endpoints/games/reversi/match.ts
@@ -72,7 +72,7 @@ export default define(meta, async (ps, user) => {
isLlotheo: false
} as Partial<ReversiGame>);
- publishReversiStream(exist.parentId, 'matched', await ReversiGames.pack(game, exist.parentId));
+ publishReversiStream(exist.parentId, 'matched', await ReversiGames.pack(game, { id: exist.parentId }));
const other = await ReversiMatchings.count({
childId: user.id
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts
index a4f3334762..4bed566935 100644
--- a/src/server/api/endpoints/i/pin.ts
+++ b/src/server/api/endpoints/i/pin.ts
@@ -61,7 +61,7 @@ export default define(meta, async (ps, user) => {
throw e;
});
- return await Users.pack(user, user, {
+ return await Users.pack(user.id, user, {
detail: true
});
});
diff --git a/src/server/api/endpoints/i/registry/scopes.ts b/src/server/api/endpoints/i/registry/scopes.ts
index 8b0e1a7fd8..baf3ebdeca 100644
--- a/src/server/api/endpoints/i/registry/scopes.ts
+++ b/src/server/api/endpoints/i/registry/scopes.ts
@@ -1,4 +1,3 @@
-import $ from 'cafy';
import define from '../../../define';
import { RegistryItems } from '../../../../../models';
diff --git a/src/server/api/endpoints/i/unpin.ts b/src/server/api/endpoints/i/unpin.ts
index d0757af6bd..bb8b36a166 100644
--- a/src/server/api/endpoints/i/unpin.ts
+++ b/src/server/api/endpoints/i/unpin.ts
@@ -47,7 +47,7 @@ export default define(meta, async (ps, user) => {
throw e;
});
- return await Users.pack(user, user, {
+ return await Users.pack(user.id, user, {
detail: true
});
});
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 8acc38f891..0554fe76fb 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -205,7 +205,8 @@ export const meta = {
}
};
-export default define(meta, async (ps, user, token) => {
+export default define(meta, async (ps, _user, token) => {
+ const user = await Users.findOneOrFail(_user.id);
const isSecure = token == null;
const updates = {} as Partial<User>;
diff --git a/src/server/api/endpoints/notes/unrenote.ts b/src/server/api/endpoints/notes/unrenote.ts
index 6fbdd5b023..0233b9db12 100644
--- a/src/server/api/endpoints/notes/unrenote.ts
+++ b/src/server/api/endpoints/notes/unrenote.ts
@@ -5,7 +5,7 @@ import define from '../../define';
import * as ms from 'ms';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
-import { Notes } from '../../../../models';
+import { Notes, Users } from '../../../../models';
export const meta = {
desc: {
@@ -55,6 +55,6 @@ export default define(meta, async (ps, user) => {
});
for (const note of renotes) {
- deleteNote(user, note);
+ deleteNote(await Users.findOneOrFail(user.id), note);
}
});
diff --git a/src/server/api/endpoints/page-push.ts b/src/server/api/endpoints/page-push.ts
index e2b84c9e0d..9ec9f9184c 100644
--- a/src/server/api/endpoints/page-push.ts
+++ b/src/server/api/endpoints/page-push.ts
@@ -43,7 +43,7 @@ export default define(meta, async (ps, user) => {
event: ps.event,
var: ps.var,
userId: user.id,
- user: await Users.pack(user, page.userId, {
+ user: await Users.pack(user.id, { id: page.userId }, {
detail: true
})
});
diff --git a/src/server/api/endpoints/users/groups/create.ts b/src/server/api/endpoints/users/groups/create.ts
index 2c397b9cd1..0966ef7819 100644
--- a/src/server/api/endpoints/users/groups/create.ts
+++ b/src/server/api/endpoints/users/groups/create.ts
@@ -31,12 +31,12 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const userGroup = await UserGroups.save({
+ const userGroup = await UserGroups.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
name: ps.name,
- } as UserGroup);
+ } as UserGroup).then(x => UserGroups.findOneOrFail(x.identifiers[0]));
// Push the owner
await UserGroupJoinings.insert({
diff --git a/src/server/api/endpoints/users/groups/invite.ts b/src/server/api/endpoints/users/groups/invite.ts
index 8b5ee12242..00d4932f55 100644
--- a/src/server/api/endpoints/users/groups/invite.ts
+++ b/src/server/api/endpoints/users/groups/invite.ts
@@ -96,12 +96,12 @@ export default define(meta, async (ps, me) => {
throw new ApiError(meta.errors.alreadyInvited);
}
- const invitation = await UserGroupInvitations.save({
+ const invitation = await UserGroupInvitations.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
userGroupId: userGroup.id
- } as UserGroupInvitation);
+ } as UserGroupInvitation).then(x => UserGroupInvitations.findOneOrFail(x.identifiers[0]));
// 通知を作成
createNotification(user.id, 'groupInvited', {
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
index b1714fc321..9891a6dae0 100644
--- a/src/server/api/endpoints/users/lists/create.ts
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -30,12 +30,12 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const userList = await UserLists.save({
+ const userList = await UserLists.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
name: ps.name,
- } as UserList);
+ } as UserList).then(x => UserLists.findOneOrFail(x.identifiers[0]));
return await UserLists.pack(userList);
});
diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts
index 21a0cb747b..11d36d2ae9 100644
--- a/src/server/api/endpoints/users/show.ts
+++ b/src/server/api/endpoints/users/show.ts
@@ -6,6 +6,7 @@ import { ApiError } from '../../error';
import { ID } from '@/misc/cafy-id';
import { Users } from '../../../../models';
import { In } from 'typeorm';
+import { User } from '@/models/entities/user';
export const meta = {
desc: {
@@ -81,9 +82,9 @@ export default define(meta, async (ps, me) => {
});
// リクエストされた通りに並べ替え
- const _users = [];
+ const _users: User[] = [];
for (const id of ps.userIds) {
- _users.push(users.find(x => x.id === id));
+ _users.push(users.find(x => x.id === id)!);
}
return await Promise.all(_users.map(u => Users.pack(u, me, {
diff --git a/src/server/api/limiter.ts b/src/server/api/limiter.ts
index b639ef08b9..1e8715a7c4 100644
--- a/src/server/api/limiter.ts
+++ b/src/server/api/limiter.ts
@@ -7,7 +7,7 @@ import Logger from '../../services/logger';
const logger = new Logger('limiter');
-export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) => {
+export default (endpoint: IEndpoint, user: User) => new Promise<void>((ok, reject) => {
const limitation = endpoint.meta.limit!;
const key = limitation.hasOwnProperty('key')
diff --git a/src/server/api/stream/channels/games/reversi.ts b/src/server/api/stream/channels/games/reversi.ts
index 3db338386a..e0e41d9acd 100644
--- a/src/server/api/stream/channels/games/reversi.ts
+++ b/src/server/api/stream/channels/games/reversi.ts
@@ -26,7 +26,7 @@ export default class extends Channel {
childId: body.id
});
if (matching == null) return;
- publishMainStream(matching.childId, 'reversiInvited', await ReversiMatchings.pack(matching, matching.childId));
+ publishMainStream(matching.childId, 'reversiInvited', await ReversiMatchings.pack(matching, { id: matching.childId }));
break;
}
}
diff --git a/src/server/api/stream/channels/global-timeline.ts b/src/server/api/stream/channels/global-timeline.ts
index e47291de50..c59eb37779 100644
--- a/src/server/api/stream/channels/global-timeline.ts
+++ b/src/server/api/stream/channels/global-timeline.ts
@@ -42,8 +42,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/channels/home-timeline.ts b/src/server/api/stream/channels/home-timeline.ts
index a370580674..b1091a46e1 100644
--- a/src/server/api/stream/channels/home-timeline.ts
+++ b/src/server/api/stream/channels/home-timeline.ts
@@ -50,8 +50,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/channels/hybrid-timeline.ts b/src/server/api/stream/channels/hybrid-timeline.ts
index 678554a012..d769a24373 100644
--- a/src/server/api/stream/channels/hybrid-timeline.ts
+++ b/src/server/api/stream/channels/hybrid-timeline.ts
@@ -59,8 +59,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/channels/local-timeline.ts b/src/server/api/stream/channels/local-timeline.ts
index 2c70f46954..aa0b6c4026 100644
--- a/src/server/api/stream/channels/local-timeline.ts
+++ b/src/server/api/stream/channels/local-timeline.ts
@@ -44,8 +44,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts
index 1dcc31d32f..647b890ff8 100644
--- a/src/server/api/stream/index.ts
+++ b/src/server/api/stream/index.ts
@@ -156,8 +156,8 @@ export default class Connection {
};
add(note);
- if (note.reply) add(note.reply);
- if (note.renote) add(note.renote);
+ if (note.reply) add(note.reply as PackedNote);
+ if (note.renote) add(note.renote as PackedNote);
}
@autobind
diff --git a/src/server/index.ts b/src/server/index.ts
index f46e851baa..3b43aa7674 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -89,7 +89,7 @@ router.get('/verify-email/:code', async ctx => {
emailVerifyCode: null
});
- publishMainStream(profile.userId, 'meUpdated', await Users.pack(profile.userId, profile.userId, {
+ publishMainStream(profile.userId, 'meUpdated', await Users.pack(profile.userId, { id: profile.userId }, {
detail: true,
includeSecrets: true
}));