forked from FoundKeyGang/FoundKey
常にメディアを閲覧注意として投稿するオプションを実装
This commit is contained in:
parent
c87a43bdba
commit
3220d69a69
7 changed files with 37 additions and 5 deletions
|
@ -117,6 +117,7 @@ common:
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
|
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
<h2>%i18n:@other%</h2>
|
<h2>%i18n:@other%</h2>
|
||||||
<mk-switch v-model="$store.state.i.isBot" @change="onChangeIsBot" text="%i18n:@is-bot%"/>
|
<mk-switch v-model="$store.state.i.isBot" @change="onChangeIsBot" text="%i18n:@is-bot%"/>
|
||||||
<mk-switch v-model="$store.state.i.isCat" @change="onChangeIsCat" text="%i18n:@is-cat%"/>
|
<mk-switch v-model="$store.state.i.isCat" @change="onChangeIsCat" text="%i18n:@is-cat%"/>
|
||||||
|
<mk-switch v-model="alwaysMarkNsfw" text="%i18n:common.always-mark-nsfw%"/>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -46,6 +47,12 @@ export default Vue.extend({
|
||||||
birthday: null,
|
birthday: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
alwaysMarkNsfw: {
|
||||||
|
get() { return this.$store.state.i.settings.alwaysMarkNsfw; },
|
||||||
|
set(value) { (this as any).api('i/update', { alwaysMarkNsfw: value }); }
|
||||||
|
},
|
||||||
|
},
|
||||||
created() {
|
created() {
|
||||||
this.name = this.$store.state.i.name || '';
|
this.name = this.$store.state.i.name || '';
|
||||||
this.location = this.$store.state.i.profile.location;
|
this.location = this.$store.state.i.profile.location;
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ui-switch v-model="isCat" @change="save(false)">%i18n:@is-cat%</ui-switch>
|
<ui-switch v-model="isCat" @change="save(false)">%i18n:@is-cat%</ui-switch>
|
||||||
|
<ui-switch v-model="alwaysMarkNsfw">%i18n:common.always-mark-nsfw%</ui-switch>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -85,6 +86,13 @@ export default Vue.extend({
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
alwaysMarkNsfw: {
|
||||||
|
get() { return this.$store.state.i.settings.alwaysMarkNsfw; },
|
||||||
|
set(value) { (this as any).api('i/update', { alwaysMarkNsfw: value }); }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.name = this.$store.state.i.name || '';
|
this.name = this.$store.state.i.name || '';
|
||||||
this.username = this.$store.state.i.username;
|
this.username = this.$store.state.i.username;
|
||||||
|
|
|
@ -102,7 +102,10 @@ export interface ILocalUser extends IUserBase {
|
||||||
twoFactorEnabled: boolean;
|
twoFactorEnabled: boolean;
|
||||||
twoFactorTempSecret?: string;
|
twoFactorTempSecret?: string;
|
||||||
clientSettings: any;
|
clientSettings: any;
|
||||||
settings: any;
|
settings: {
|
||||||
|
autoWatch: boolean;
|
||||||
|
alwaysMarkNsfw?: boolean;
|
||||||
|
};
|
||||||
hasUnreadNotification: boolean;
|
hasUnreadNotification: boolean;
|
||||||
hasUnreadMessagingMessage: boolean;
|
hasUnreadMessagingMessage: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@ export const meta = {
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
isSensitive: $.bool.optional.note({
|
isSensitive: $.bool.optional.nullable.note({
|
||||||
default: false,
|
default: null,
|
||||||
desc: {
|
desc: {
|
||||||
'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
|
'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
|
||||||
'en-US': 'Whether this media is NSFW'
|
'en-US': 'Whether this media is NSFW'
|
||||||
|
|
|
@ -84,6 +84,12 @@ export const meta = {
|
||||||
'ja-JP': '投稿の自動ウォッチをするか否か'
|
'ja-JP': '投稿の自動ウォッチをするか否か'
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
alwaysMarkNsfw: $.bool.optional.note({
|
||||||
|
desc: {
|
||||||
|
'ja-JP': 'アップロードするメディアをデフォルトで「閲覧注意」として設定するか'
|
||||||
|
}
|
||||||
|
}),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -106,6 +112,7 @@ export default async (params: any, user: ILocalUser, app: IApp) => new Promise(a
|
||||||
if (typeof ps.isBot == 'boolean') updates.isBot = ps.isBot;
|
if (typeof ps.isBot == 'boolean') updates.isBot = ps.isBot;
|
||||||
if (typeof ps.isCat == 'boolean') updates.isCat = ps.isCat;
|
if (typeof ps.isCat == 'boolean') updates.isCat = ps.isCat;
|
||||||
if (typeof ps.autoWatch == 'boolean') updates['settings.autoWatch'] = ps.autoWatch;
|
if (typeof ps.autoWatch == 'boolean') updates['settings.autoWatch'] = ps.autoWatch;
|
||||||
|
if (typeof ps.alwaysMarkNsfw == 'boolean') updates['settings.alwaysMarkNsfw'] = ps.alwaysMarkNsfw;
|
||||||
|
|
||||||
if (ps.avatarId) {
|
if (ps.avatarId) {
|
||||||
const avatar = await DriveFile.findOne({
|
const avatar = await DriveFile.findOne({
|
||||||
|
|
|
@ -153,7 +153,7 @@ export default async function(
|
||||||
isLink: boolean = false,
|
isLink: boolean = false,
|
||||||
url: string = null,
|
url: string = null,
|
||||||
uri: string = null,
|
uri: string = null,
|
||||||
sensitive = false
|
sensitive: boolean = null
|
||||||
): Promise<IDriveFile> {
|
): Promise<IDriveFile> {
|
||||||
// Calc md5 hash
|
// Calc md5 hash
|
||||||
const calcHash = new Promise<string>((res, rej) => {
|
const calcHash = new Promise<string>((res, rej) => {
|
||||||
|
@ -329,7 +329,13 @@ export default async function(
|
||||||
properties: properties,
|
properties: properties,
|
||||||
withoutChunks: isLink,
|
withoutChunks: isLink,
|
||||||
isRemote: isLink,
|
isRemote: isLink,
|
||||||
isSensitive: sensitive
|
isSensitive: (sensitive !== null && sensitive !== undefined)
|
||||||
|
? sensitive
|
||||||
|
: isLocalUser(user)
|
||||||
|
? user.settings.alwaysMarkNsfw
|
||||||
|
? true
|
||||||
|
: false
|
||||||
|
: false
|
||||||
} as IMetadata;
|
} as IMetadata;
|
||||||
|
|
||||||
if (url !== null) {
|
if (url !== null) {
|
||||||
|
|
Loading…
Reference in a new issue