diff --git a/packages/backend/migration/1743894419864-AddMusicFieldsToMeta.js b/packages/backend/migration/1743894419864-AddMusicFieldsToMeta.js new file mode 100644 index 0000000000..9cbf6d7443 --- /dev/null +++ b/packages/backend/migration/1743894419864-AddMusicFieldsToMeta.js @@ -0,0 +1,20 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddMusicFieldsToMeta1743894419864 implements MigrationInterface { + name = 'AddMusicFieldsToMeta1743894419864' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "meta" ADD "musicSource" character varying(1024)`); + await queryRunner.query(`ALTER TABLE "meta" ADD "musicEnabled" boolean NOT NULL DEFAULT false`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "musicEnabled"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "musicSource"`); + } +} diff --git a/packages/backend/src/core/entities/MetaEntityService.ts b/packages/backend/src/core/entities/MetaEntityService.ts index a2d2ee8528..750cdb9115 100644 --- a/packages/backend/src/core/entities/MetaEntityService.ts +++ b/packages/backend/src/core/entities/MetaEntityService.ts @@ -114,6 +114,8 @@ export class MetaEntityService { sidebarLogoUrl: instance.sidebarLogoUrl, backgroundImageUrl: instance.backgroundImageUrl, logoImageUrl: instance.logoImageUrl, + musicSource: instance.musicSource, + musicEnabled: instance.musicEnabled, maxNoteTextLength: this.config.maxNoteLength, maxRemoteNoteTextLength: this.config.maxRemoteNoteLength, maxCwLength: this.config.maxCwLength, diff --git a/packages/backend/src/models/Meta.ts b/packages/backend/src/models/Meta.ts index 6276e47618..09fac44c8c 100644 --- a/packages/backend/src/models/Meta.ts +++ b/packages/backend/src/models/Meta.ts @@ -142,6 +142,17 @@ export class MiMeta { @Column('boolean', { default: false, }) + public musicSource: string | null; + + @Column('boolean', { + default: false, + }) + public musicEnabled: boolean; + + @Column('varchar', { + length: 1024, + nullable: true, + }) public iconUrl: string | null; @Column('varchar', { diff --git a/packages/backend/src/models/json-schema/meta.ts b/packages/backend/src/models/json-schema/meta.ts index 10334f1b78..8b78512bd9 100644 --- a/packages/backend/src/models/json-schema/meta.ts +++ b/packages/backend/src/models/json-schema/meta.ts @@ -321,6 +321,14 @@ export const packedMetaLiteSchema = { type: 'string', optional: false, nullable: true, }, + musicSource: { + type: 'string', + optional: false, nullable: true, + }, + musicEnabled: { + type: 'boolean', + optional: false, nullable: false, + }, privacyPolicyUrl: { type: 'string', optional: false, nullable: true, diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts index 35e455bab8..54ec3582de 100644 --- a/packages/backend/src/server/api/endpoints/admin/meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/meta.ts @@ -453,6 +453,14 @@ export const meta = { type: 'string', optional: false, nullable: true, }, + musicSource: { + type: 'string', + optional: false, nullable: true, + }, + musicEnabled: { + type: 'boolean', + optional: false, nullable: false, + }, translationTimeout: { type: 'number', optional: false, nullable: false, @@ -696,6 +704,8 @@ export default class extends Endpoint { // eslint- app512IconUrl: instance.app512IconUrl, sidebarLogoUrl: instance.sidebarLogoUrl, backgroundImageUrl: instance.backgroundImageUrl, + musicSource: instance.musicSource, + musicEnabled: instance.musicEnabled, logoImageUrl: instance.logoImageUrl, defaultLightTheme: instance.defaultLightTheme, defaultDarkTheme: instance.defaultDarkTheme, diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts index 4868fceb89..d279d93820 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts @@ -63,6 +63,8 @@ export const paramDef = { app512IconUrl: { type: 'string', nullable: true }, sidebarLogoUrl: { type: 'string', nullable: true }, backgroundImageUrl: { type: 'string', nullable: true }, + musicSource: { type: 'string', nullable: true }, + musicEnabled: { type: 'boolean', nullable: false }, logoImageUrl: { type: 'string', nullable: true }, name: { type: 'string', nullable: true }, shortName: { type: 'string', nullable: true }, @@ -316,6 +318,14 @@ export default class extends Endpoint { // eslint- set.backgroundImageUrl = ps.backgroundImageUrl; } + if (ps.musicEnabled !== undefined) { + set.musicEnabled = ps.musicEnabled; + } + + if (ps.musicSource !== undefined) { + set.musicSource = ps.musicSource; + } + if (ps.logoImageUrl !== undefined) { set.logoImageUrl = ps.logoImageUrl; } diff --git a/packages/frontend/src/components/MkVisitorDashboard.vue b/packages/frontend/src/components/MkVisitorDashboard.vue index 942085f7bb..4f3b94e0e5 100644 --- a/packages/frontend/src/components/MkVisitorDashboard.vue +++ b/packages/frontend/src/components/MkVisitorDashboard.vue @@ -5,6 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only