It works, Just figuring out some ts errors hopefully

This commit is contained in:
KevinWh0 2024-02-16 21:53:27 +01:00
parent be36a793cd
commit 11cb134d4d
7 changed files with 60 additions and 1 deletions

View file

@ -524,6 +524,7 @@ mediaListWithOneImageAppearance: "Height of media lists with one image only"
limitTo: "Limit to {x}" limitTo: "Limit to {x}"
noFollowRequests: "You don't have any pending follow requests" noFollowRequests: "You don't have any pending follow requests"
openImageInNewTab: "Open images in new tab" openImageInNewTab: "Open images in new tab"
warnForMissingAltText: "Warn you when you forget to put alt text"
dashboard: "Dashboard" dashboard: "Dashboard"
local: "Local" local: "Local"
remote: "Remote" remote: "Remote"
@ -1051,6 +1052,9 @@ thisPostMayBeAnnoying: "This note may annoy others."
thisPostMayBeAnnoyingHome: "Post to home timeline" thisPostMayBeAnnoyingHome: "Post to home timeline"
thisPostMayBeAnnoyingCancel: "Cancel" thisPostMayBeAnnoyingCancel: "Cancel"
thisPostMayBeAnnoyingIgnore: "Post anyway" 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" collapseRenotes: "Collapse boosts you've already seen"
collapseFiles: "Collapse files" collapseFiles: "Collapse files"
autoloadConversation: "Load conversation on replies" autoloadConversation: "Load conversation on replies"

12
locales/index.d.ts vendored
View file

@ -4221,6 +4221,18 @@ export interface Locale extends ILocale {
* 稿 * 稿
*/ */
"thisPostMayBeAnnoyingIgnore": string; "thisPostMayBeAnnoyingIgnore": string;
/**
* Cancel
*/
"thisPostIsMissingAltTextCancel": string;
/**
* Post anyway
*/
"thisPostIsMissingAltTextIgnore": string;
/**
* One of the files attached to this post is missing alt text. Please ensure all the attachments have alt text.
*/
"thisPostIsMissingAltText": string;
/** /**
* *
*/ */

View file

@ -1051,6 +1051,9 @@ thisPostMayBeAnnoying: "この投稿は迷惑になる可能性があります
thisPostMayBeAnnoyingHome: "ホームに投稿" thisPostMayBeAnnoyingHome: "ホームに投稿"
thisPostMayBeAnnoyingCancel: "やめる" thisPostMayBeAnnoyingCancel: "やめる"
thisPostMayBeAnnoyingIgnore: "このまま投稿" thisPostMayBeAnnoyingIgnore: "このまま投稿"
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: "見たことのあるブーストを省略して表示" collapseRenotes: "見たことのあるブーストを省略して表示"
collapseFiles: "ファイルを折りたたむ" collapseFiles: "ファイルを折りたたむ"
autoloadConversation: "返信に会話を読み込む" autoloadConversation: "返信に会話を読み込む"

View file

@ -101,7 +101,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template> </template>
<script lang="ts" setup> <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 mfm from '@transfem-org/sfm-js';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import insertTextAtCursor from 'insert-text-at-cursor'; import insertTextAtCursor from 'insert-text-at-cursor';
@ -745,6 +745,39 @@ async function post(ev?: MouseEvent) {
} }
} }
if (defaultStore.state.warnMissingAltText) {
const filesData = toRaw(files.value);
for (let i = 0; i < filesData.length; i++) {
const file = filesData[i];
const isMissingAltText = !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;
if (result === 'home') {
visibility.value = 'home';
}
// await os.alert({
// type: 'info',
// text: i18n.ts.thisPostIsMissingAltText,
// });
// return;
}
}
}
let postData = { let postData = {
text: text.value === '' ? null : text.value, text: text.value === '' ? null : text.value,
fileIds: files.value.length > 0 ? files.value.map(f => f.id) : undefined, fileIds: files.value.length > 0 ? files.value.map(f => f.id) : undefined,

View file

@ -180,6 +180,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_gaps_m"> <div class="_gaps_m">
<div class="_gaps_s"> <div class="_gaps_s">
<MkSwitch v-model="warnMissingAltText">{{ i18n.ts.warnForMissingAltText }}</MkSwitch>
<MkSwitch v-model="imageNewTab">{{ i18n.ts.openImageInNewTab }}</MkSwitch> <MkSwitch v-model="imageNewTab">{{ i18n.ts.openImageInNewTab }}</MkSwitch>
<MkSwitch v-model="useReactionPickerForContextMenu">{{ i18n.ts.useReactionPickerForContextMenu }}</MkSwitch> <MkSwitch v-model="useReactionPickerForContextMenu">{{ i18n.ts.useReactionPickerForContextMenu }}</MkSwitch>
<MkSwitch v-model="enableInfiniteScroll">{{ i18n.ts.enableInfiniteScroll }}</MkSwitch> <MkSwitch v-model="enableInfiniteScroll">{{ i18n.ts.enableInfiniteScroll }}</MkSwitch>
@ -337,6 +338,7 @@ const oneko = computed(defaultStore.makeGetterSetter('oneko'));
const loadRawImages = computed(defaultStore.makeGetterSetter('loadRawImages')); const loadRawImages = computed(defaultStore.makeGetterSetter('loadRawImages'));
const highlightSensitiveMedia = computed(defaultStore.makeGetterSetter('highlightSensitiveMedia')); const highlightSensitiveMedia = computed(defaultStore.makeGetterSetter('highlightSensitiveMedia'));
const imageNewTab = computed(defaultStore.makeGetterSetter('imageNewTab')); const imageNewTab = computed(defaultStore.makeGetterSetter('imageNewTab'));
const warnMissingAltText = computed(defaultStore.makeGetterSetter('warnMissingAltText'));
const nsfw = computed(defaultStore.makeGetterSetter('nsfw')); const nsfw = computed(defaultStore.makeGetterSetter('nsfw'));
const showFixedPostForm = computed(defaultStore.makeGetterSetter('showFixedPostForm')); const showFixedPostForm = computed(defaultStore.makeGetterSetter('showFixedPostForm'));
const showFixedPostFormInChannel = computed(defaultStore.makeGetterSetter('showFixedPostFormInChannel')); const showFixedPostFormInChannel = computed(defaultStore.makeGetterSetter('showFixedPostFormInChannel'));

View file

@ -71,6 +71,7 @@ const defaultStoreSaveKeys: (keyof typeof defaultStore['state'])[] = [
'animatedMfm', 'animatedMfm',
'advancedMfm', 'advancedMfm',
'loadRawImages', 'loadRawImages',
'warnMissingAltText',
'imageNewTab', 'imageNewTab',
'dataSaver', 'dataSaver',
'disableShowingAnimatedImages', 'disableShowingAnimatedImages',

View file

@ -264,6 +264,10 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'device', where: 'device',
default: false, default: false,
}, },
warnMissingAltText: {
where: 'device',
default: true,
},
imageNewTab: { imageNewTab: {
where: 'device', where: 'device',
default: false, default: false,