From ba3879a95ac8739f043fac42a39972510d505656 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Tue, 16 Apr 2019 02:46:47 +0900 Subject: Fix: admin/driveのアイコンがずれてる (#4710) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/app/admin/views/drive.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/app/admin/views/drive.vue b/src/client/app/admin/views/drive.vue index e4565b78fe..22b3b7eb96 100644 --- a/src/client/app/admin/views/drive.vue +++ b/src/client/app/admin/views/drive.vue @@ -242,7 +242,7 @@ export default Vue.extend({ > div:nth-child(1) > .thumbnail - display block + display flex width 64px height 64px background-size cover -- cgit v1.2.3-freya From f966d0b32c9cd45b531a4d76f01bf008e5136bd0 Mon Sep 17 00:00:00 2001 From: tamaina Date: Tue, 16 Apr 2019 13:05:10 +0900 Subject: 色々な修正; Fix #4709 (#4714) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix a la carte 1 * use dialog instead of alert() etc --- locales/ja-JP.yml | 4 +++- .../app/common/views/components/messaging-room.form.vue | 10 ++++++++-- src/client/app/common/views/components/messaging-room.vue | 5 ++++- src/client/app/common/views/components/post-form-attaches.vue | 2 +- src/client/app/common/views/components/settings/settings.vue | 4 ++-- src/client/app/common/views/components/signin.vue | 5 ++++- src/client/app/common/views/components/signup.vue | 5 ++++- src/client/app/common/views/deck/deck.widgets-column.vue | 4 ++-- src/client/app/common/views/widgets/post-form.vue | 5 ++++- src/client/app/desktop/views/components/drive.folder.vue | 5 ++++- src/client/app/desktop/views/components/drive.vue | 5 ++++- src/client/app/desktop/views/components/post-form.vue | 11 +++++++++-- src/client/app/desktop/views/home/home.vue | 5 +++-- src/client/app/desktop/views/pages/drive.vue | 2 +- src/client/app/mios.ts | 4 ++-- src/client/app/mobile/views/components/drive.file-detail.vue | 7 ++++++- src/client/app/mobile/views/components/post-form.vue | 11 +++++++++-- src/client/app/mobile/views/pages/favorites.vue | 2 +- src/client/app/mobile/views/pages/games/reversi.vue | 2 +- src/client/app/mobile/views/pages/search.vue | 2 +- src/client/app/mobile/views/pages/widgets.vue | 8 ++++++-- 21 files changed, 79 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 82115a7224..eb87d4f204 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -313,6 +313,7 @@ common: nav: "ナビゲーション" tips: "ヒント" hashtags: "ハッシュタグ" + queue: "キュー" dev: "アプリの作成に失敗しました。再度お試しください。" ai-chan-kawaii: "藍ちゃかわいい" @@ -1549,6 +1550,7 @@ desktop/views/widgets/polls.vue: desktop/views/widgets/post-form.vue: title: "投稿" note: "投稿" + something-happened: "何らかの事情で投稿できませんでした。" desktop/views/widgets/profile.vue: update-banner: "クリックでバナー編集" @@ -1641,7 +1643,7 @@ mobile/views/components/post-form.vue: quote-placeholder: "この投稿を引用... (オプション)" reply-placeholder: "この投稿への返信..." cw-placeholder: "内容への注釈 (オプション)" - location-alert: "お使いの端末は位置情報に対応していません" + geolocation-alert: "お使いの端末は位置情報に対応していません" error: "エラー" username-prompt: "ユーザー名を入力してください" diff --git a/src/client/app/common/views/components/messaging-room.form.vue b/src/client/app/common/views/components/messaging-room.form.vue index 6c8b09c244..ee6c312bce 100644 --- a/src/client/app/common/views/components/messaging-room.form.vue +++ b/src/client/app/common/views/components/messaging-room.form.vue @@ -85,7 +85,10 @@ export default Vue.extend({ } } else { if (items[0].kind == 'file') { - alert(this.$t('only-one-file-attached')); + this.$root.dialog({ + type: 'error', + text: this.$t('only-one-file-attached') + }); } } }, @@ -107,7 +110,10 @@ export default Vue.extend({ return; } else if (e.dataTransfer.files.length > 1) { e.preventDefault(); - alert(this.$t('only-one-file-attached')); + this.$root.dialog({ + type: 'error', + text: this.$t('only-one-file-attached') + }); return; } diff --git a/src/client/app/common/views/components/messaging-room.vue b/src/client/app/common/views/components/messaging-room.vue index 6f13d50c1e..83a0c463e0 100644 --- a/src/client/app/common/views/components/messaging-room.vue +++ b/src/client/app/common/views/components/messaging-room.vue @@ -125,7 +125,10 @@ export default Vue.extend({ this.form.upload(e.dataTransfer.files[0]); return; } else if (e.dataTransfer.files.length > 1) { - alert(this.$t('only-one-file-attached')); + this.$root.dialog({ + type: 'error', + text: this.$t('only-one-file-attached') + }); return; } diff --git a/src/client/app/common/views/components/post-form-attaches.vue b/src/client/app/common/views/components/post-form-attaches.vue index 467e430ccf..1fe476be77 100644 --- a/src/client/app/common/views/components/post-form-attaches.vue +++ b/src/client/app/common/views/components/post-form-attaches.vue @@ -1,6 +1,6 @@ {{ $t('email-address') }} - {{ $t('save') }} + {{ $t('save') }} -- cgit v1.2.3-freya From e90ac5d6a4d24ded77ab5608392e5b17b39b01a2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 16 Apr 2019 17:52:09 +0900 Subject: チャートの数値カラムの型を拡張 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/chart/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/services/chart/core.ts b/src/services/chart/core.ts index 0a9ec8dae0..fe762f2b24 100644 --- a/src/services/chart/core.ts +++ b/src/services/chart/core.ts @@ -79,7 +79,7 @@ export default abstract class Chart> { flatColumns(v.properties, p); } else { columns[this.columnPrefix + p] = { - type: 'integer', + type: 'bigint', }; } } -- cgit v1.2.3-freya From 85d29a3f9d2fa2970b5dd5e17498bf3aa5e20f70 Mon Sep 17 00:00:00 2001 From: Satsuki Yanagi <17376330+u1-liquid@users.noreply.github.com> Date: Wed, 17 Apr 2019 00:30:34 +0900 Subject: Correct syntax error (#4718) --- src/client/app/common/scripts/note-mixin.ts | 2 +- src/client/style.styl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/client/app/common/scripts/note-mixin.ts b/src/client/app/common/scripts/note-mixin.ts index 67bbe8c0ae..4b454f8800 100644 --- a/src/client/app/common/scripts/note-mixin.ts +++ b/src/client/app/common/scripts/note-mixin.ts @@ -134,7 +134,7 @@ export default (opts: Opts = {}) => ({ }, reactDirectly(reaction) { - (this.$root.api('notes/reactions/create', { + this.$root.api('notes/reactions/create', { noteId: this.appearNote.id, reaction: reaction }); diff --git a/src/client/style.styl b/src/client/style.styl index c6a8e4f19d..968e66e754 100644 --- a/src/client/style.styl +++ b/src/client/style.styl @@ -1,4 +1,4 @@ -@charset 'utf-8' +@charset "utf-8" /* ::selection -- cgit v1.2.3-freya From 52e3bcfd2968ffdab8c124dc8dad9cb9e3e995ac Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 17 Apr 2019 00:33:02 +0900 Subject: Meta を二重にデータベースに保存できないように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/misc/fetch-meta.ts | 3 +-- src/models/entities/meta.ts | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/misc/fetch-meta.ts b/src/misc/fetch-meta.ts index cf1fc474ce..a459f07729 100644 --- a/src/misc/fetch-meta.ts +++ b/src/misc/fetch-meta.ts @@ -1,6 +1,5 @@ import { Meta } from '../models/entities/meta'; import { Metas } from '../models'; -import { genId } from './gen-id'; export default async function(): Promise { const meta = await Metas.findOne(); @@ -8,7 +7,7 @@ export default async function(): Promise { return meta; } else { return Metas.save({ - id: genId(), + id: 'x' } as Meta); } } diff --git a/src/models/entities/meta.ts b/src/models/entities/meta.ts index f3ac23bac7..be41cf3589 100644 --- a/src/models/entities/meta.ts +++ b/src/models/entities/meta.ts @@ -1,9 +1,11 @@ import { Entity, Column, PrimaryColumn } from 'typeorm'; -import { id } from '../id'; @Entity() export class Meta { - @PrimaryColumn(id()) + @PrimaryColumn({ + type: 'varchar', + length: 32 + }) public id: string; @Column('varchar', { -- cgit v1.2.3-freya From fc27890f139c1ae0378b42cd912558272668723d Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 17 Apr 2019 00:34:49 +0900 Subject: Refactor --- src/models/repositories/note.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts index 7a48d24e13..98ed2bddc1 100644 --- a/src/models/repositories/note.ts +++ b/src/models/repositories/note.ts @@ -103,7 +103,7 @@ export class NoteRepository extends Repository { const host = note.userHost; async function populatePoll() { - const poll = await Polls.findOne({ noteId: note.id }).then(ensure); + const poll = await Polls.findOne(note.id).then(ensure); const choices = poll.choices.map(c => ({ text: c, votes: poll.votes[poll.choices.indexOf(c)], -- cgit v1.2.3-freya From b1865047187bf6fc9d4ad3b56a0d4eb6b2817c2b Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Wed, 17 Apr 2019 00:45:33 +0900 Subject: Metaのアクセスでトランザクションを張るように (#4720) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * admin/instanceでmetaをキャッシュしないように * Metaのアクセスにトランザクションをかける --- src/client/app/admin/views/instance.vue | 2 +- src/misc/fetch-meta.ts | 26 +++++++++++++++++--------- src/server/api/endpoints/admin/update-meta.ts | 20 +++++++++++++------- 3 files changed, 31 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue index bc2a5fba85..cca4e5f669 100644 --- a/src/client/app/admin/views/instance.vue +++ b/src/client/app/admin/views/instance.vue @@ -195,7 +195,7 @@ export default Vue.extend({ }, created() { - this.$root.getMeta().then(meta => { + this.$root.getMeta(true).then(meta => { this.maintainerName = meta.maintainerName; this.maintainerEmail = meta.maintainerEmail; this.disableRegistration = meta.disableRegistration; diff --git a/src/misc/fetch-meta.ts b/src/misc/fetch-meta.ts index a459f07729..800f0b9e63 100644 --- a/src/misc/fetch-meta.ts +++ b/src/misc/fetch-meta.ts @@ -1,13 +1,21 @@ import { Meta } from '../models/entities/meta'; -import { Metas } from '../models'; +import { getConnection } from 'typeorm'; export default async function(): Promise { - const meta = await Metas.findOne(); - if (meta) { - return meta; - } else { - return Metas.save({ - id: 'x' - } as Meta); - } + return await getConnection().transaction(async transactionalEntityManager => { + // バグでレコードが複数出来てしまっている可能性があるので新しいIDを優先する + const meta = await transactionalEntityManager.findOne(Meta, { + order: { + id: 'DESC' + } + }); + + if (meta) { + return meta; + } else { + return await transactionalEntityManager.save(Meta, { + id: 'x' + }) as Meta; + } + }); } diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index e242ac71a1..3c6380acb4 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -1,6 +1,6 @@ import $ from 'cafy'; import define from '../../define'; -import { Metas } from '../../../../models'; +import { getConnection } from 'typeorm'; import { Meta } from '../../../../models/entities/meta'; export const meta = { @@ -505,11 +505,17 @@ export default define(meta, async (ps) => { set.swPrivateKey = ps.swPrivateKey; } - const meta = await Metas.findOne(); + await getConnection().transaction(async transactionalEntityManager => { + const meta = await transactionalEntityManager.findOne(Meta, { + order: { + id: 'DESC' + } + }); - if (meta) { - await Metas.update(meta.id, set); - } else { - await Metas.save(set); - } + if (meta) { + await transactionalEntityManager.update(Meta, meta.id, set); + } else { + await transactionalEntityManager.save(Meta, set); + } + }); }); -- cgit v1.2.3-freya From e265b538cc96b10b2ffc98c15227ab097cf4744b Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 17 Apr 2019 02:11:22 +0900 Subject: Fix #4724 --- src/models/entities/note.ts | 2 ++ src/services/drive/delete-file.ts | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/models/entities/note.ts b/src/models/entities/note.ts index 969363da3b..280f3dfcb8 100644 --- a/src/models/entities/note.ts +++ b/src/models/entities/note.ts @@ -129,12 +129,14 @@ export class Note { }) public score: number; + @Index() @Column({ ...id(), array: true, default: '{}' }) public fileIds: DriveFile['id'][]; + @Index() @Column('varchar', { length: 256, array: true, default: '{}' }) diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts index bba453b982..1aba0d5fd8 100644 --- a/src/services/drive/delete-file.ts +++ b/src/services/drive/delete-file.ts @@ -2,7 +2,7 @@ import * as Minio from 'minio'; import config from '../../config'; import { DriveFile } from '../../models/entities/drive-file'; import { InternalStorage } from './internal-storage'; -import { DriveFiles, Instances } from '../../models'; +import { DriveFiles, Instances, Notes } from '../../models'; import { driveChart, perUserDriveChart, instanceChart } from '../chart'; export default async function(file: DriveFile, isExpired = false) { @@ -40,6 +40,11 @@ export default async function(file: DriveFile, isExpired = false) { }); } else { DriveFiles.delete(file.id); + + // TODO: トランザクション + Notes.createQueryBuilder('note').delete() + .andWhere(':id = ANY(note.fileIds)', { id: file.id }) + .execute(); } // 統計を更新 -- cgit v1.2.3-freya From 4f5a3f0df52ca3f8f19395d42d5877a7e6547207 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 17 Apr 2019 02:12:15 +0900 Subject: smallint --- src/models/entities/note.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/models/entities/note.ts b/src/models/entities/note.ts index 280f3dfcb8..b71c022341 100644 --- a/src/models/entities/note.ts +++ b/src/models/entities/note.ts @@ -93,12 +93,12 @@ export class Note { }) public localOnly: boolean; - @Column('integer', { + @Column('smallint', { default: 0 }) public renoteCount: number; - @Column('integer', { + @Column('smallint', { default: 0 }) public repliesCount: number; -- cgit v1.2.3-freya From bcb1a9c5d3378082346d0f1db725825c73e8b627 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 17 Apr 2019 02:19:49 +0900 Subject: Refactor --- src/services/drive/delete-file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts index 1aba0d5fd8..61cac6183f 100644 --- a/src/services/drive/delete-file.ts +++ b/src/services/drive/delete-file.ts @@ -43,7 +43,7 @@ export default async function(file: DriveFile, isExpired = false) { // TODO: トランザクション Notes.createQueryBuilder('note').delete() - .andWhere(':id = ANY(note.fileIds)', { id: file.id }) + .where(':id = ANY(note.fileIds)', { id: file.id }) .execute(); } -- cgit v1.2.3-freya From 150dac00cf3f9a148c21598d53d8e37c11017def Mon Sep 17 00:00:00 2001 From: tamaina Date: Wed, 17 Apr 2019 02:21:22 +0900 Subject: Update stream.ja-JP.md (#4725) --- src/docs/stream.ja-JP.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/docs/stream.ja-JP.md b/src/docs/stream.ja-JP.md index 0e9afa7332..40fc49916e 100644 --- a/src/docs/stream.ja-JP.md +++ b/src/docs/stream.ja-JP.md @@ -130,10 +130,12 @@ Misskeyのストリームに接続しただけでは、まだリアルタイム ```json { type: 'api', - id: 'xxxxxxxxxxxxxxxx', - endpoint: 'notes/create', - data: { - text: 'yee haw!' + body: { + id: 'xxxxxxxxxxxxxxxx', + endpoint: 'notes/create', + data: { + text: 'yee haw!' + } } } ``` -- cgit v1.2.3-freya From f38ab0b973dfc0734740f80dbb033208ce11eeb9 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 17 Apr 2019 02:37:37 +0900 Subject: Update delete-file.ts --- src/services/drive/delete-file.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts index 61cac6183f..f1280822a4 100644 --- a/src/services/drive/delete-file.ts +++ b/src/services/drive/delete-file.ts @@ -42,8 +42,8 @@ export default async function(file: DriveFile, isExpired = false) { DriveFiles.delete(file.id); // TODO: トランザクション - Notes.createQueryBuilder('note').delete() - .where(':id = ANY(note.fileIds)', { id: file.id }) + Notes.createQueryBuilder().delete() + .where(':id = ANY(fileIds)', { id: file.id }) .execute(); } -- cgit v1.2.3-freya From a9025aea0df014b77fa09073d6c51a8c20da632c Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 17 Apr 2019 02:51:12 +0900 Subject: Better response --- src/models/repositories/user.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts index 9e4247545a..30c77e78ca 100644 --- a/src/models/repositories/user.ts +++ b/src/models/repositories/user.ts @@ -84,6 +84,8 @@ export class UserRepository extends Repository { const pins = opts.detail ? await UserNotePinings.find({ userId: user.id }) : []; const profile = opts.detail ? await UserProfiles.findOne({ userId: user.id }).then(ensure) : null; + const falsy = opts.detail ? false : undefined; + return await rap({ id: user.id, name: user.name, @@ -91,10 +93,10 @@ export class UserRepository extends Repository { host: user.host, avatarUrl: user.avatarUrl ? user.avatarUrl : config.url + '/avatar/' + user.id, avatarColor: user.avatarColor, - isAdmin: user.isAdmin || undefined, - isBot: user.isBot || undefined, - isCat: user.isCat || undefined, - isVerified: user.isVerified || undefined, + isAdmin: user.isAdmin || falsy, + isBot: user.isBot || falsy, + isCat: user.isCat || falsy, + isVerified: user.isVerified || falsy, // カスタム絵文字添付 emojis: user.emojis.length > 0 ? Emojis.find({ @@ -123,7 +125,7 @@ export class UserRepository extends Repository { bannerUrl: user.bannerUrl, bannerColor: user.bannerColor, isLocked: user.isLocked, - isModerator: user.isModerator || undefined, + isModerator: user.isModerator || falsy, description: profile!.description, location: profile!.location, birthday: profile!.birthday, -- cgit v1.2.3-freya