diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-04-17 19:37:32 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-04-17 19:37:32 +0900 |
| commit | 611e4f34dcb90666f2bc3da699dc965e30f7cba6 (patch) | |
| tree | 4a37539090b4c90ee4dfe5b08d8aae0682678032 /src | |
| parent | Merge branch 'develop' (diff) | |
| parent | 11.1.5 (diff) | |
| download | misskey-611e4f34dcb90666f2bc3da699dc965e30f7cba6.tar.gz misskey-611e4f34dcb90666f2bc3da699dc965e30f7cba6.tar.bz2 misskey-611e4f34dcb90666f2bc3da699dc965e30f7cba6.zip | |
Merge branch 'develop'
Diffstat (limited to 'src')
29 files changed, 50 insertions, 56 deletions
diff --git a/src/client/app/common/scripts/note-subscriber.ts b/src/client/app/common/scripts/note-subscriber.ts index 02d810ded9..d881fe01ce 100644 --- a/src/client/app/common/scripts/note-subscriber.ts +++ b/src/client/app/common/scripts/note-subscriber.ts @@ -137,7 +137,6 @@ export default prop => ({ Vue.set(this.$_ns_target, 'deletedAt', body.deletedAt); Vue.set(this.$_ns_target, 'renote', null); this.$_ns_target.text = null; - this.$_ns_target.tags = []; this.$_ns_target.fileIds = []; this.$_ns_target.poll = null; this.$_ns_target.geo = null; diff --git a/src/client/app/common/views/components/drive-file-thumbnail.vue b/src/client/app/common/views/components/drive-file-thumbnail.vue index 1a3ef37193..d6b0092ca2 100644 --- a/src/client/app/common/views/components/drive-file-thumbnail.vue +++ b/src/client/app/common/views/components/drive-file-thumbnail.vue @@ -121,7 +121,7 @@ export default Vue.extend({ if (this.file.properties.avgColor) { anime({ targets: this.$refs.thumbnail, - backgroundColor: this.file.properties.avgColor.replace('255)', '0)'), + backgroundColor: 'transparent', // TODO fade duration: 100, easing: 'linear' }); 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 1fe476be77..37422ba108 100644 --- a/src/client/app/common/views/components/post-form-attaches.vue +++ b/src/client/app/common/views/components/post-form-attaches.vue @@ -32,7 +32,7 @@ export default Vue.extend({ props: { files: { - type: Object, + type: Array, required: true }, detachMediaFn: { diff --git a/src/client/app/common/views/components/settings/settings.vue b/src/client/app/common/views/components/settings/settings.vue index 001b692551..be2d7fce85 100644 --- a/src/client/app/common/views/components/settings/settings.vue +++ b/src/client/app/common/views/components/settings/settings.vue @@ -525,15 +525,11 @@ export default Vue.extend({ this.$chooseDriveFile({ multiple: false }).then(file => { - this.$root.api('i/update', { - wallpaperId: file.id - }); + this.$store.dispatch('settings/set', { key: 'wallpaper', value: file.url }); }); }, deleteWallpaper() { - this.$root.api('i/update', { - wallpaperId: null - }); + this.$store.dispatch('settings/set', { key: 'wallpaper', value: null }); }, checkForUpdate() { this.checkingForUpdate = true; diff --git a/src/client/app/common/views/widgets/post-form.vue b/src/client/app/common/views/widgets/post-form.vue index 120de0f17b..d8617bea58 100644 --- a/src/client/app/common/views/widgets/post-form.vue +++ b/src/client/app/common/views/widgets/post-form.vue @@ -21,7 +21,7 @@ <fa :icon="['far', 'laugh']"/> </button> </div> - <x-post-form-attaches class="files" :files="files" :detachMediaFn="detachMedia"/> + <x-post-form-attaches class="files" :files="files" :detach-media-fn="detachMedia"/> <input ref="file" type="file" multiple="multiple" tabindex="-1" @change="onChangeFile"/> <mk-uploader ref="uploader" @uploaded="attachMedia"/> <footer> diff --git a/src/client/app/desktop/views/components/drive.file.vue b/src/client/app/desktop/views/components/drive.file.vue index 46aae9ad2b..efc534ee70 100644 --- a/src/client/app/desktop/views/components/drive.file.vue +++ b/src/client/app/desktop/views/components/drive.file.vue @@ -142,7 +142,7 @@ export default Vue.extend({ if (this.file.properties.avgColor) { anime({ targets: this.$refs.thumbnail, - backgroundColor: this.file.properties.avgColor.replace('255)', '0)'), + backgroundColor: 'transparent', // TODO fade duration: 100, easing: 'linear' }); diff --git a/src/client/app/desktop/views/components/settings.vue b/src/client/app/desktop/views/components/settings.vue index ace967b973..76b4214553 100644 --- a/src/client/app/desktop/views/components/settings.vue +++ b/src/client/app/desktop/views/components/settings.vue @@ -87,6 +87,5 @@ export default Vue.extend({ height 100% flex auto overflow auto - background var(--bg) </style> diff --git a/src/client/app/desktop/views/components/ui.vue b/src/client/app/desktop/views/components/ui.vue index fa5efbc93e..f7961d5083 100644 --- a/src/client/app/desktop/views/components/ui.vue +++ b/src/client/app/desktop/views/components/ui.vue @@ -1,6 +1,6 @@ <template> <div class="mk-ui" v-hotkey.global="keymap"> - <div class="bg" v-if="$store.getters.isSignedIn && $store.state.i.wallpaperUrl" :style="style"></div> + <div class="bg" v-if="$store.getters.isSignedIn && $store.state.settings.wallpaper" :style="style"></div> <x-header class="header" v-if="navbar == 'top'" v-show="!zenMode" ref="header"/> <x-sidebar class="sidebar" v-if="navbar != 'top'" v-show="!zenMode" ref="sidebar"/> <div class="content" :class="[{ sidebar: navbar != 'top', zen: zenMode }, navbar]"> @@ -33,10 +33,9 @@ export default Vue.extend({ }, style(): any { - if (!this.$store.getters.isSignedIn || this.$store.state.i.wallpaperUrl == null) return {}; + if (!this.$store.getters.isSignedIn || this.$store.state.settings.wallpaper == null) return {}; return { - backgroundColor: this.$store.state.i.wallpaperColor && this.$store.state.i.wallpaperColor.length == 3 ? `rgb(${ this.$store.state.i.wallpaperColor.join(',') })` : null, - backgroundImage: `url(${ this.$store.state.i.wallpaperUrl })` + backgroundImage: `url(${ this.$store.state.settings.wallpaper })` }; }, @@ -96,7 +95,6 @@ export default Vue.extend({ background-size cover background-position center background-attachment fixed - opacity 0.3 > .content.sidebar.left padding-left 68px diff --git a/src/client/app/store.ts b/src/client/app/store.ts index c82981ad24..44b893835c 100644 --- a/src/client/app/store.ts +++ b/src/client/app/store.ts @@ -28,6 +28,7 @@ const defaultSettings = { iLikeSushi: false, rememberNoteVisibility: false, defaultNoteVisibility: 'public', + wallpaper: null, webSearchEngine: 'https://www.google.com/?#q={{query}}', mutedWords: [], games: { diff --git a/src/db/postgre.ts b/src/db/postgre.ts index 641a552c09..71836638f1 100644 --- a/src/db/postgre.ts +++ b/src/db/postgre.ts @@ -76,8 +76,6 @@ class MyCustomLogger implements Logger { } export function initDb(justBorrow = false, sync = false, log = false) { - const enableLogging = log || !['production', 'test'].includes(process.env.NODE_ENV || ''); - try { const conn = getConnection(); return Promise.resolve(conn); @@ -92,8 +90,8 @@ export function initDb(justBorrow = false, sync = false, log = false) { database: config.db.db, synchronize: process.env.NODE_ENV === 'test' || sync, dropSchema: process.env.NODE_ENV === 'test' && !justBorrow, - logging: enableLogging, - logger: enableLogging ? new MyCustomLogger() : undefined, + logging: log, + logger: log ? new MyCustomLogger() : undefined, entities: [ Meta, Instance, diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts index 98ed2bddc1..d684b47e48 100644 --- a/src/models/repositories/note.ts +++ b/src/models/repositories/note.ts @@ -178,12 +178,11 @@ export class NoteRepository extends Repository<Note> { name: In(reactionEmojis), host: host }) : [], - tags: note.tags, fileIds: note.fileIds, files: DriveFiles.packMany(note.fileIds), replyId: note.replyId, renoteId: note.renoteId, - uri: note.uri, + uri: note.uri || undefined, ...(opts.detail ? { reply: note.replyId ? this.pack(note.replyId, meId, { diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts index 30c77e78ca..36bba05e8e 100644 --- a/src/models/repositories/user.ts +++ b/src/models/repositories/user.ts @@ -82,7 +82,7 @@ export class UserRepository extends Repository<User> { const relation = meId && (meId !== user.id) && opts.detail ? await this.getRelation(meId, user.id) : null; const pins = opts.detail ? await UserNotePinings.find({ userId: user.id }) : []; - const profile = opts.detail ? await UserProfiles.findOne({ userId: user.id }).then(ensure) : null; + const profile = opts.detail ? await UserProfiles.findOne(user.id).then(ensure) : null; const falsy = opts.detail ? false : undefined; diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts index 3fb164ef4e..efe52cdefb 100644 --- a/src/remote/activitypub/renderer/person.ts +++ b/src/remote/activitypub/renderer/person.ts @@ -17,7 +17,7 @@ export async function renderPerson(user: ILocalUser) { const [avatar, banner, profile] = await Promise.all([ user.avatarId ? DriveFiles.findOne(user.avatarId) : Promise.resolve(undefined), user.bannerId ? DriveFiles.findOne(user.bannerId) : Promise.resolve(undefined), - UserProfiles.findOne({ userId: user.id }).then(ensure) + UserProfiles.findOne(user.id).then(ensure) ]); const attachment: { diff --git a/src/server/api/endpoints/i/2fa/done.ts b/src/server/api/endpoints/i/2fa/done.ts index e23678dcbb..c134e1b226 100644 --- a/src/server/api/endpoints/i/2fa/done.ts +++ b/src/server/api/endpoints/i/2fa/done.ts @@ -19,7 +19,7 @@ export const meta = { export default define(meta, async (ps, user) => { const token = ps.token.replace(/\s/g, ''); - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); if (profile.twoFactorTempSecret == null) { throw new Error('二段階認証の設定が開始されていません'); diff --git a/src/server/api/endpoints/i/2fa/register.ts b/src/server/api/endpoints/i/2fa/register.ts index 76d79b3a49..bd46b7c68c 100644 --- a/src/server/api/endpoints/i/2fa/register.ts +++ b/src/server/api/endpoints/i/2fa/register.ts @@ -20,7 +20,7 @@ export const meta = { }; export default define(meta, async (ps, user) => { - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // Compare password const same = await bcrypt.compare(ps.password, profile.password!); diff --git a/src/server/api/endpoints/i/2fa/unregister.ts b/src/server/api/endpoints/i/2fa/unregister.ts index 9c7857e7ef..99483143cc 100644 --- a/src/server/api/endpoints/i/2fa/unregister.ts +++ b/src/server/api/endpoints/i/2fa/unregister.ts @@ -17,7 +17,7 @@ export const meta = { }; export default define(meta, async (ps, user) => { - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // Compare password const same = await bcrypt.compare(ps.password, profile.password!); diff --git a/src/server/api/endpoints/i/change-password.ts b/src/server/api/endpoints/i/change-password.ts index 0dda125b9c..07d2d864d2 100644 --- a/src/server/api/endpoints/i/change-password.ts +++ b/src/server/api/endpoints/i/change-password.ts @@ -21,7 +21,7 @@ export const meta = { }; export default define(meta, async (ps, user) => { - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // Compare password const same = await bcrypt.compare(ps.currentPassword, profile.password!); diff --git a/src/server/api/endpoints/i/delete-account.ts b/src/server/api/endpoints/i/delete-account.ts index 389d0b3212..8ec85c9f41 100644 --- a/src/server/api/endpoints/i/delete-account.ts +++ b/src/server/api/endpoints/i/delete-account.ts @@ -17,7 +17,7 @@ export const meta = { }; export default define(meta, async (ps, user) => { - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // Compare password const same = await bcrypt.compare(ps.password, profile.password!); diff --git a/src/server/api/endpoints/i/regenerate-token.ts b/src/server/api/endpoints/i/regenerate-token.ts index 56c0362c88..e27cf0b18c 100644 --- a/src/server/api/endpoints/i/regenerate-token.ts +++ b/src/server/api/endpoints/i/regenerate-token.ts @@ -19,7 +19,7 @@ export const meta = { }; export default define(meta, async (ps, user) => { - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // Compare password const same = await bcrypt.compare(ps.password, profile.password!); diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts index 15c62a9d08..e02f53a643 100644 --- a/src/server/api/endpoints/i/update-email.ts +++ b/src/server/api/endpoints/i/update-email.ts @@ -33,7 +33,7 @@ export const meta = { }; export default define(meta, async (ps, user) => { - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // Compare password const same = await bcrypt.compare(ps.password, profile.password!); diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts index d06ab621c6..2951072cf6 100644 --- a/src/server/api/endpoints/i/update.ts +++ b/src/server/api/endpoints/i/update.ts @@ -13,6 +13,7 @@ import { ApiError } from '../../error'; import { Users, DriveFiles, UserProfiles } from '../../../../models'; import { User } from '../../../../models/entities/user'; import { UserProfile } from '../../../../models/entities/user-profile'; +import { ensure } from '../../../../prelude/ensure'; export const meta = { desc: { @@ -157,22 +158,24 @@ export default define(meta, async (ps, user, app) => { const isSecure = user != null && app == null; const updates = {} as Partial<User>; - const profile = {} as Partial<UserProfile>; + const profileUpdates = {} as Partial<UserProfile>; + + const profile = await UserProfiles.findOne(user.id).then(ensure); if (ps.name !== undefined) updates.name = ps.name; - if (ps.description !== undefined) profile.description = ps.description; + if (ps.description !== undefined) profileUpdates.description = ps.description; //if (ps.lang !== undefined) updates.lang = ps.lang; - if (ps.location !== undefined) profile.location = ps.location; - if (ps.birthday !== undefined) profile.birthday = ps.birthday; + if (ps.location !== undefined) profileUpdates.location = ps.location; + if (ps.birthday !== undefined) profileUpdates.birthday = ps.birthday; if (ps.avatarId !== undefined) updates.avatarId = ps.avatarId; if (ps.bannerId !== undefined) updates.bannerId = ps.bannerId; if (typeof ps.isLocked == 'boolean') updates.isLocked = ps.isLocked; if (typeof ps.isBot == 'boolean') updates.isBot = ps.isBot; - if (typeof ps.carefulBot == 'boolean') profile.carefulBot = ps.carefulBot; - if (typeof ps.autoAcceptFollowed == 'boolean') profile.autoAcceptFollowed = ps.autoAcceptFollowed; + if (typeof ps.carefulBot == 'boolean') profileUpdates.carefulBot = ps.carefulBot; + if (typeof ps.autoAcceptFollowed == 'boolean') profileUpdates.autoAcceptFollowed = ps.autoAcceptFollowed; if (typeof ps.isCat == 'boolean') updates.isCat = ps.isCat; - if (typeof ps.autoWatch == 'boolean') profile.autoWatch = ps.autoWatch; - if (typeof ps.alwaysMarkNsfw == 'boolean') profile.alwaysMarkNsfw = ps.alwaysMarkNsfw; + if (typeof ps.autoWatch == 'boolean') profileUpdates.autoWatch = ps.autoWatch; + if (typeof ps.alwaysMarkNsfw == 'boolean') profileUpdates.alwaysMarkNsfw = ps.alwaysMarkNsfw; if (ps.avatarId) { const avatar = await DriveFiles.findOne(ps.avatarId); @@ -201,16 +204,20 @@ export default define(meta, async (ps, user, app) => { } //#region emojis/tags + let emojis = [] as string[]; let tags = [] as string[]; - if (updates.name != null) { - const tokens = parsePlain(updates.name); + const newName = updates.name === undefined ? user.name : updates.name; + const newDescription = profileUpdates.description === undefined ? profile.description : profileUpdates.description; + + if (newName != null) { + const tokens = parsePlain(newName); emojis = emojis.concat(extractEmojis(tokens!)); } - if (profile.description != null) { - const tokens = parse(profile.description); + if (newDescription != null) { + const tokens = parse(newDescription); emojis = emojis.concat(extractEmojis(tokens!)); tags = extractHashtags(tokens!).map(tag => tag.toLowerCase()); } @@ -224,7 +231,7 @@ export default define(meta, async (ps, user, app) => { //#endregion if (Object.keys(updates).length > 0) await Users.update(user.id, updates); - if (Object.keys(profile).length > 0) await UserProfiles.update({ userId: user.id }, profile); + if (Object.keys(profileUpdates).length > 0) await UserProfiles.update({ userId: user.id }, profileUpdates); const iObj = await Users.pack(user.id, user, { detail: true, diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts index d13405597d..0510e70d3e 100644 --- a/src/server/api/endpoints/notes/polls/vote.ts +++ b/src/server/api/endpoints/notes/polls/vote.ts @@ -150,7 +150,7 @@ export default define(meta, async (ps, user) => { } }); - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // この投稿をWatchする if (profile.autoWatch !== false) { diff --git a/src/server/api/openapi/schemas.ts b/src/server/api/openapi/schemas.ts index 5992fee835..65826d9321 100644 --- a/src/server/api/openapi/schemas.ts +++ b/src/server/api/openapi/schemas.ts @@ -1,4 +1,3 @@ - export const schemas = { Error: { type: 'object', diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts index 676546f2aa..02361a139d 100644 --- a/src/server/api/private/signin.ts +++ b/src/server/api/private/signin.ts @@ -46,7 +46,7 @@ export default async (ctx: Koa.BaseContext) => { return; } - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // Compare password const same = await bcrypt.compare(password, profile.password!); diff --git a/src/server/web/feed.ts b/src/server/web/feed.ts index 6b660fe188..88a61af7cc 100644 --- a/src/server/web/feed.ts +++ b/src/server/web/feed.ts @@ -11,7 +11,7 @@ export default async function(user: User) { name: user.name || user.username }; - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); const notes = await Notes.find({ where: { diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts index cdb1a60092..2f164a4d92 100644 --- a/src/services/drive/add-file.ts +++ b/src/services/drive/add-file.ts @@ -363,16 +363,14 @@ export default async function( logger.debug(`average color is calculated: ${r}, ${g}, ${b}`); - const value = info.isOpaque ? `rgba(${r},${g},${b},0)` : `rgba(${r},${g},${b},255)`; - - properties['avgColor'] = value; + properties['avgColor'] = `rgb(${r},${g},${b})`; } catch (e) { } }; propPromises = [calcWh(), calcAvg()]; } - const profile = await UserProfiles.findOne({ userId: user.id }); + const profile = await UserProfiles.findOne(user.id); const [folder] = await Promise.all([fetchFolder(), Promise.all(propPromises)]); diff --git a/src/services/note/create.ts b/src/services/note/create.ts index 8c85a5c275..02e33d6789 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -253,7 +253,7 @@ export default async (user: User, data: Option, silent = false) => new Promise<N deliverNoteToMentionedRemoteUsers(mentionedUsers, user, noteActivity); } - const profile = await UserProfiles.findOne({ userId: user.id }).then(ensure); + const profile = await UserProfiles.findOne(user.id).then(ensure); // If has in reply to note if (data.reply) { diff --git a/src/services/note/polls/vote.ts b/src/services/note/polls/vote.ts index c6876484f5..aee52ba10d 100644 --- a/src/services/note/polls/vote.ts +++ b/src/services/note/polls/vote.ts @@ -67,7 +67,7 @@ export default async function(user: User, note: Note, choice: number) { } }); - const profile = await UserProfiles.findOne({ userId: user.id }); + const profile = await UserProfiles.findOne(user.id); // ローカルユーザーが投票した場合この投稿をWatchする if (Users.isLocalUser(user) && profile!.autoWatch) { diff --git a/src/services/note/reaction/create.ts b/src/services/note/reaction/create.ts index 0e8bcebdbc..7711ba0737 100644 --- a/src/services/note/reaction/create.ts +++ b/src/services/note/reaction/create.ts @@ -80,7 +80,7 @@ export default async (user: User, note: Note, reaction?: string) => { } }); - const profile = await UserProfiles.findOne({ userId: user.id }); + const profile = await UserProfiles.findOne(user.id); // ユーザーがローカルユーザーかつ自動ウォッチ設定がオンならばこの投稿をWatchする if (Users.isLocalUser(user) && profile!.autoWatch) { |