summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-02-01 17:07:34 -0500
committerHazelnoot <acomputerdog@gmail.com>2025-02-05 14:22:50 -0500
commit74407bc8ee43a8c7b4bc8b7e16bdfb8acd2c794c (patch)
tree7a0c37960b1275231671a7de8596e3e5d1d92111
parentmerge: Improve language detection. (!871) (diff)
downloadsharkey-74407bc8ee43a8c7b4bc8b7e16bdfb8acd2c794c.tar.gz
sharkey-74407bc8ee43a8c7b4bc8b7e16bdfb8acd2c794c.tar.bz2
sharkey-74407bc8ee43a8c7b4bc8b7e16bdfb8acd2c794c.zip
add MiUserProfile.defaultCW property and API
-rw-r--r--locales/index.d.ts2
-rw-r--r--packages/backend/migration/1738446745738-add_user_profile_default_cw.js11
-rw-r--r--packages/backend/src/core/entities/UserEntityService.ts1
-rw-r--r--packages/backend/src/models/UserProfile.ts10
-rw-r--r--packages/backend/src/models/json-schema/user.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/i/update.ts17
-rw-r--r--packages/misskey-js/src/autogen/types.ts5
7 files changed, 47 insertions, 3 deletions
diff --git a/locales/index.d.ts b/locales/index.d.ts
index 70eba52ea0..af5faefe1a 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -11631,7 +11631,7 @@ export interface Locale extends ILocale {
*/
"robotsTxt": string;
/**
- * Adding entries here will override the default robots.txt packaged with Sharkey. Maximum 2048 characters.
+ * Adding entries here will override the default robots.txt packaged with Sharkey.
*/
"robotsTxtDescription": string;
}
diff --git a/packages/backend/migration/1738446745738-add_user_profile_default_cw.js b/packages/backend/migration/1738446745738-add_user_profile_default_cw.js
new file mode 100644
index 0000000000..205ca2087a
--- /dev/null
+++ b/packages/backend/migration/1738446745738-add_user_profile_default_cw.js
@@ -0,0 +1,11 @@
+export class AddUserProfileDefaultCw1738446745738 {
+ name = 'AddUserProfileDefaultCw1738446745738'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "user_profile" ADD "default_cw" text`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "default_cw"`);
+ }
+}
diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts
index 6bfe865038..0ca784fa52 100644
--- a/packages/backend/src/core/entities/UserEntityService.ts
+++ b/packages/backend/src/core/entities/UserEntityService.ts
@@ -669,6 +669,7 @@ export class UserEntityService implements OnModuleInit {
achievements: profile!.achievements,
loggedInDays: profile!.loggedInDates.length,
policies: this.roleService.getUserPolicies(user.id),
+ defaultCW: profile?.defaultCW ?? null,
} : {}),
...(opts.includeSecrets ? {
diff --git a/packages/backend/src/models/UserProfile.ts b/packages/backend/src/models/UserProfile.ts
index 751b1aff08..3c2362227e 100644
--- a/packages/backend/src/models/UserProfile.ts
+++ b/packages/backend/src/models/UserProfile.ts
@@ -36,10 +36,10 @@ export class MiUserProfile {
})
public birthday: string | null;
- @Column("varchar", {
+ @Column('varchar', {
length: 128,
nullable: true,
- comment: "The ListenBrainz username of the User.",
+ comment: 'The ListenBrainz username of the User.',
})
public listenbrainz: string | null;
@@ -290,6 +290,12 @@ export class MiUserProfile {
unlockedAt: number;
}[];
+ @Column('text', {
+ name: 'default_cw',
+ nullable: true,
+ })
+ public defaultCW: string | null;
+
//#region Denormalized fields
@Index()
@Column('varchar', {
diff --git a/packages/backend/src/models/json-schema/user.ts b/packages/backend/src/models/json-schema/user.ts
index f953008b3f..f6c7bd2151 100644
--- a/packages/backend/src/models/json-schema/user.ts
+++ b/packages/backend/src/models/json-schema/user.ts
@@ -752,6 +752,10 @@ export const packedMeDetailedOnlySchema = {
},
},
//#endregion
+ defaultCW: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
},
} as const;
diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts
index 09c06a108d..e487562687 100644
--- a/packages/backend/src/server/api/endpoints/i/update.ts
+++ b/packages/backend/src/server/api/endpoints/i/update.ts
@@ -133,6 +133,12 @@ export const meta = {
id: '0b3f9f6a-2f4d-4b1f-9fb4-49d3a2fd7191',
httpStatusCode: 422,
},
+
+ maxCwLength: {
+ message: 'You tried setting a default content warning which is too long.',
+ code: 'MAX_CW_LENGTH',
+ id: '7004c478-bda3-4b4f-acb2-4316398c9d52',
+ },
},
res: {
@@ -243,6 +249,7 @@ export const paramDef = {
uniqueItems: true,
items: { type: 'string' },
},
+ defaultCW: { type: 'string', nullable: true },
},
} as const;
@@ -494,6 +501,16 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
updates.alsoKnownAs = newAlsoKnownAs.size > 0 ? Array.from(newAlsoKnownAs) : null;
}
+ let defaultCW = ps.defaultCW;
+ if (defaultCW !== undefined) {
+ if (defaultCW === '') defaultCW = null;
+ if (defaultCW && defaultCW.length > this.config.maxCwLength) {
+ throw new ApiError(meta.errors.maxCwLength);
+ }
+
+ profileUpdates.defaultCW = defaultCW;
+ }
+
//#region emojis/tags
let emojis = [] as string[];
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 888e46e008..78dac5f08b 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -4217,6 +4217,7 @@ export type components = {
/** Format: date-time */
lastUsed: string;
}[];
+ defaultCW: string | null;
};
UserDetailedNotMe: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'];
MeDetailed: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'] & components['schemas']['MeDetailedOnly'];
@@ -5224,6 +5225,7 @@ export type components = {
enableFC: boolean;
fcSiteKey: string | null;
enableAchievements: boolean | null;
+ robotsTxt: string | null;
enableTestcaptcha: boolean;
swPublickey: string | null;
/** @default /assets/ai.png */
@@ -5434,6 +5436,7 @@ export type operations = {
enableStatsForFederatedInstances: boolean;
enableServerMachineStats: boolean;
enableAchievements: boolean;
+ robotsTxt: string | null;
enableIdenticonGeneration: boolean;
manifestJsonOverride: string;
policies: Record<string, never>;
@@ -10163,6 +10166,7 @@ export type operations = {
enableStatsForFederatedInstances?: boolean;
enableServerMachineStats?: boolean;
enableAchievements?: boolean;
+ robotsTxt?: string | null;
enableIdenticonGeneration?: boolean;
serverRules?: string[];
bannedEmailDomains?: string[];
@@ -21631,6 +21635,7 @@ export type operations = {
};
emailNotificationTypes?: string[];
alsoKnownAs?: string[];
+ defaultCW?: string | null;
};
};
};