merge: Warn when missing alt text (!423)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/423 Approved-by: Amelia Yukii <amelia.yukii@shourai.de> Approved-by: Marie <marie@kaifa.ch>
This commit is contained in:
		
						commit
						15665d1533
					
				
					 7 changed files with 50 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -524,6 +524,7 @@ mediaListWithOneImageAppearance: "Height of media lists with one image only"
 | 
			
		|||
limitTo: "Limit to {x}"
 | 
			
		||||
noFollowRequests: "You don't have any pending follow requests"
 | 
			
		||||
openImageInNewTab: "Open images in new tab"
 | 
			
		||||
warnForMissingAltText: "Warn you when you forget to put alt text"
 | 
			
		||||
dashboard: "Dashboard"
 | 
			
		||||
local: "Local"
 | 
			
		||||
remote: "Remote"
 | 
			
		||||
| 
						 | 
				
			
			@ -1051,6 +1052,9 @@ thisPostMayBeAnnoying: "This note may annoy others."
 | 
			
		|||
thisPostMayBeAnnoyingHome: "Post to home timeline"
 | 
			
		||||
thisPostMayBeAnnoyingCancel: "Cancel"
 | 
			
		||||
thisPostMayBeAnnoyingIgnore: "Post anyway"
 | 
			
		||||
thisPostIsMissingAltTextCancel: "Cancel"
 | 
			
		||||
thisPostIsMissingAltTextIgnore: "Post anyway"
 | 
			
		||||
thisPostIsMissingAltText: "One of the files attached to this post is missing alt text. Please ensure all the attachments have alt text."
 | 
			
		||||
collapseRenotes: "Collapse boosts you've already seen"
 | 
			
		||||
collapseFiles: "Collapse files"
 | 
			
		||||
autoloadConversation: "Load conversation on replies"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								locales/index.d.ts
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								locales/index.d.ts
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -4225,6 +4225,18 @@ export interface Locale extends ILocale {
 | 
			
		|||
     * このまま投稿
 | 
			
		||||
     */
 | 
			
		||||
    "thisPostMayBeAnnoyingIgnore": string;
 | 
			
		||||
    /**
 | 
			
		||||
     * やめる
 | 
			
		||||
     */
 | 
			
		||||
    "thisPostIsMissingAltTextCancel": string;
 | 
			
		||||
    /**
 | 
			
		||||
     * このまま投稿
 | 
			
		||||
     */
 | 
			
		||||
    "thisPostIsMissingAltTextIgnore": string;
 | 
			
		||||
    /**
 | 
			
		||||
     * この投稿に添付されたファイルの 1 つに代替テキストがありません。すべての添付ファイルに代替テキストが含まれていることを確認してください。
 | 
			
		||||
     */
 | 
			
		||||
    "thisPostIsMissingAltText": string;
 | 
			
		||||
    /**
 | 
			
		||||
     * 見たことのあるブーストを省略して表示
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1052,6 +1052,9 @@ thisPostMayBeAnnoying: "この投稿は迷惑になる可能性があります
 | 
			
		|||
thisPostMayBeAnnoyingHome: "ホームに投稿"
 | 
			
		||||
thisPostMayBeAnnoyingCancel: "やめる"
 | 
			
		||||
thisPostMayBeAnnoyingIgnore: "このまま投稿"
 | 
			
		||||
thisPostIsMissingAltTextCancel: "やめる"
 | 
			
		||||
thisPostIsMissingAltTextIgnore: "このまま投稿"
 | 
			
		||||
thisPostIsMissingAltText: "この投稿に添付されたファイルの 1 つに代替テキストがありません。すべての添付ファイルに代替テキストが含まれていることを確認してください。"
 | 
			
		||||
collapseRenotes: "見たことのあるブーストを省略して表示"
 | 
			
		||||
collapseFiles: "ファイルを折りたたむ"
 | 
			
		||||
autoloadConversation: "返信に会話を読み込む"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,7 +101,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { inject, watch, nextTick, onMounted, defineAsyncComponent, provide, shallowRef, ref, computed } from 'vue';
 | 
			
		||||
import { inject, watch, nextTick, onMounted, defineAsyncComponent, provide, shallowRef, ref, computed, toRaw } from 'vue';
 | 
			
		||||
import * as mfm from '@transfem-org/sfm-js';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import insertTextAtCursor from 'insert-text-at-cursor';
 | 
			
		||||
| 
						 | 
				
			
			@ -744,6 +744,29 @@ async function post(ev?: MouseEvent) {
 | 
			
		|||
			visibility.value = 'home';
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (defaultStore.state.warnMissingAltText) {
 | 
			
		||||
		const filesData = toRaw(files.value);
 | 
			
		||||
 | 
			
		||||
		const isMissingAltText = filesData.some(file => !file.comment);
 | 
			
		||||
 | 
			
		||||
		if (isMissingAltText) {
 | 
			
		||||
			const { canceled, result } = await os.actions({
 | 
			
		||||
				type: 'warning',
 | 
			
		||||
				text: i18n.ts.thisPostIsMissingAltText,
 | 
			
		||||
				actions: [{
 | 
			
		||||
					value: 'cancel',
 | 
			
		||||
					text: i18n.ts.thisPostIsMissingAltTextCancel,
 | 
			
		||||
				}, {
 | 
			
		||||
					value: 'ignore',
 | 
			
		||||
					text: i18n.ts.thisPostIsMissingAltTextIgnore,
 | 
			
		||||
				}],
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			if (canceled) return;
 | 
			
		||||
			if (result === 'cancel') return;	
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	let postData = {
 | 
			
		||||
		text: text.value === '' ? null : text.value,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -180,6 +180,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
 | 
			
		||||
		<div class="_gaps_m">
 | 
			
		||||
			<div class="_gaps_s">
 | 
			
		||||
				<MkSwitch v-model="warnMissingAltText">{{ i18n.ts.warnForMissingAltText }}</MkSwitch>
 | 
			
		||||
				<MkSwitch v-model="imageNewTab">{{ i18n.ts.openImageInNewTab }}</MkSwitch>
 | 
			
		||||
				<MkSwitch v-model="useReactionPickerForContextMenu">{{ i18n.ts.useReactionPickerForContextMenu }}</MkSwitch>
 | 
			
		||||
				<MkSwitch v-model="enableInfiniteScroll">{{ i18n.ts.enableInfiniteScroll }}</MkSwitch>
 | 
			
		||||
| 
						 | 
				
			
			@ -336,6 +337,7 @@ const oneko = computed(defaultStore.makeGetterSetter('oneko'));
 | 
			
		|||
const loadRawImages = computed(defaultStore.makeGetterSetter('loadRawImages'));
 | 
			
		||||
const highlightSensitiveMedia = computed(defaultStore.makeGetterSetter('highlightSensitiveMedia'));
 | 
			
		||||
const imageNewTab = computed(defaultStore.makeGetterSetter('imageNewTab'));
 | 
			
		||||
const warnMissingAltText = computed(defaultStore.makeGetterSetter('warnMissingAltText'));
 | 
			
		||||
const nsfw = computed(defaultStore.makeGetterSetter('nsfw'));
 | 
			
		||||
const showFixedPostForm = computed(defaultStore.makeGetterSetter('showFixedPostForm'));
 | 
			
		||||
const showFixedPostFormInChannel = computed(defaultStore.makeGetterSetter('showFixedPostFormInChannel'));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,6 +71,7 @@ const defaultStoreSaveKeys: (keyof typeof defaultStore['state'])[] = [
 | 
			
		|||
	'animatedMfm',
 | 
			
		||||
	'advancedMfm',
 | 
			
		||||
	'loadRawImages',
 | 
			
		||||
	'warnMissingAltText',
 | 
			
		||||
	'imageNewTab',
 | 
			
		||||
	'dataSaver',
 | 
			
		||||
	'disableShowingAnimatedImages',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -264,6 +264,10 @@ export const defaultStore = markRaw(new Storage('base', {
 | 
			
		|||
		where: 'device',
 | 
			
		||||
		default: false,
 | 
			
		||||
	},
 | 
			
		||||
	warnMissingAltText: {
 | 
			
		||||
		where: 'device',
 | 
			
		||||
		default: true,
 | 
			
		||||
	},
 | 
			
		||||
	imageNewTab: {
 | 
			
		||||
		where: 'device',
 | 
			
		||||
		default: false,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue