diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fb67a59a2..dfd8427fe4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ -## 13.x.x (unreleased) +### General +======= +## 2023.8.0 (unreleased) ### General +- OAuth 2.0のサポート - 通報の即時解決機能を追加 +### Client +- Fix: サーバー情報画面(`/instance-info/{domain}`)でブロックができないのを修正 + +### Server +- + ## 13.14.2 ### Client diff --git a/packages/backend/package.json b/packages/backend/package.json index 75ed142592..bbca9e59c4 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -147,7 +147,6 @@ "rss-parser": "3.13.0", "rxjs": "7.8.1", "sanitize-html": "2.11.0", - "semver": "7.5.4", "sharp": "0.32.3", "sharp-read-bmp": "github:misskey-dev/sharp-read-bmp", "slacc": "0.0.10", diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 5dd7d7baf1..0bf23c770b 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -10,7 +10,6 @@ import * as os from 'node:os'; import cluster from 'node:cluster'; import chalk from 'chalk'; import chalkTemplate from 'chalk-template'; -import semver from 'semver'; import Logger from '@/logger.js'; import { loadConfig } from '@/config.js'; import type { Config } from '@/config.js'; diff --git a/packages/backend/src/server/oauth/OAuth2ProviderService.ts b/packages/backend/src/server/oauth/OAuth2ProviderService.ts index 93cbaa4035..61c89a4258 100644 --- a/packages/backend/src/server/oauth/OAuth2ProviderService.ts +++ b/packages/backend/src/server/oauth/OAuth2ProviderService.ts @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + import dns from 'node:dns/promises'; import { fileURLToPath } from 'node:url'; import { Inject, Injectable } from '@nestjs/common'; diff --git a/packages/backend/test/e2e/oauth.ts b/packages/backend/test/e2e/oauth.ts index 9048c2f7e2..a029a0d4be 100644 --- a/packages/backend/test/e2e/oauth.ts +++ b/packages/backend/test/e2e/oauth.ts @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + /** * Basic OAuth tests to make sure the library is correctly integrated to Misskey * and not regressed by version updates or potential migration to another library. diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index f1eac354ea..afbec98d61 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -751,18 +751,25 @@ async function post(ev?: MouseEvent) { claimAchievement('notes1'); } - const text = postData.text?.toLowerCase() ?? ''; - if ((text.includes('love') || text.includes('❤')) && text.includes('misskey')) { + const text = postData.text ?? ''; + const lowerCase = text.toLowerCase(); + if ((lowerCase.includes('love') || lowerCase.includes('❤')) && lowerCase.includes('misskey')) { claimAchievement('iLoveMisskey'); } - if ( - text.includes('https://youtu.be/Efrlqw8ytg4'.toLowerCase()) || - text.includes('https://www.youtube.com/watch?v=Efrlqw8ytg4'.toLowerCase()) || - text.includes('https://m.youtube.com/watch?v=Efrlqw8ytg4'.toLowerCase()) || - text.includes('https://youtu.be/XVCwzwxdHuA'.toLowerCase()) || - text.includes('https://www.youtube.com/watch?v=XVCwzwxdHuA'.toLowerCase()) || - text.includes('https://m.youtube.com/watch?v=XVCwzwxdHuA'.toLowerCase()) - ) { + if ([ + 'https://youtu.be/Efrlqw8ytg4', + 'https://www.youtube.com/watch?v=Efrlqw8ytg4', + 'https://m.youtube.com/watch?v=Efrlqw8ytg4', + + 'https://youtu.be/XVCwzwxdHuA', + 'https://www.youtube.com/watch?v=XVCwzwxdHuA', + 'https://m.youtube.com/watch?v=XVCwzwxdHuA', + + 'https://open.spotify.com/track/3Cuj0mZrlLoXx9nydNi7RB', + 'https://open.spotify.com/track/7anfcaNPQWlWCwyCHmZqNy', + 'https://open.spotify.com/track/5Odr16TvEN4my22K9nbH7l', + 'https://open.spotify.com/album/5bOlxyl4igOrp2DwVQxBco', + ].some(url => text.includes(url))) { claimAchievement('brainDiver'); } diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue index 54f2cd7def..24355c0556 100644 --- a/packages/frontend/src/pages/instance-info.vue +++ b/packages/frontend/src/pages/instance-info.vue @@ -34,8 +34,8 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ i18n.ts.stopActivityDelivery }} - {{ i18n.ts.blockThisInstance }} + {{ i18n.ts.stopActivityDelivery }} + {{ i18n.ts.blockThisInstance }} Refresh metadata
@@ -129,7 +129,7 @@ import MkSelect from '@/components/MkSelect.vue'; import MkSwitch from '@/components/MkSwitch.vue'; import * as os from '@/os'; import number from '@/filters/number'; -import { iAmModerator } from '@/account'; +import { iAmModerator, iAmAdmin } from '@/account'; import { definePageMetadata } from '@/scripts/page-metadata'; import { i18n } from '@/i18n'; import MkUserCardMini from '@/components/MkUserCardMini.vue'; @@ -143,11 +143,11 @@ const props = defineProps<{ let tab = $ref('overview'); let chartSrc = $ref('instance-requests'); -let meta = $ref(null); +let meta = $ref(null); let instance = $ref(null); let suspended = $ref(false); let isBlocked = $ref(false); -let faviconUrl = $ref(null); +let faviconUrl = $ref(null); const usersPagination = { endpoint: iAmModerator ? 'admin/show-users' : 'users' as const, @@ -160,7 +160,10 @@ const usersPagination = { offsetMode: true, }; -async function fetch() { +async function fetch(): Promise { + if (iAmAdmin) { + meta = await os.api('admin/meta'); + } instance = await os.api('federation/show-instance', { host: props.host, }); @@ -169,21 +172,25 @@ async function fetch() { faviconUrl = getProxiedImageUrlNullable(instance.faviconUrl, 'preview') ?? getProxiedImageUrlNullable(instance.iconUrl, 'preview'); } -async function toggleBlock(ev) { - if (meta == null) return; +async function toggleBlock(): Promise { + if (!meta) throw new Error('No meta?'); + if (!instance) throw new Error('No instance?'); + const { host } = instance; await os.api('admin/update-meta', { - blockedHosts: isBlocked ? meta.blockedHosts.concat([instance.host]) : meta.blockedHosts.filter(x => x !== instance.host), + blockedHosts: isBlocked ? meta.blockedHosts.concat([host]) : meta.blockedHosts.filter(x => x !== host), }); } -async function toggleSuspend(v) { +async function toggleSuspend(): Promise { + if (!instance) throw new Error('No instance?'); await os.api('admin/federation/update-instance', { host: instance.host, isSuspended: suspended, }); } -function refreshMetadata() { +function refreshMetadata(): void { + if (!instance) throw new Error('No instance?'); os.api('admin/federation/refresh-remote-instance-metadata', { host: instance.host, }); diff --git a/packages/frontend/src/pages/oauth.vue b/packages/frontend/src/pages/oauth.vue index 6a72057f46..0dbaed1081 100644 --- a/packages/frontend/src/pages/oauth.vue +++ b/packages/frontend/src/pages/oauth.vue @@ -1,3 +1,8 @@ + +