refactor(frontend): reduce type errors

This commit is contained in:
syuilo 2024-01-05 15:25:26 +09:00
parent 2177792a3c
commit 7768385be2
6 changed files with 26 additions and 9 deletions

View file

@ -41,7 +41,9 @@ import MkInput from '@/components/MkInput.vue';
import MkButton from '@/components/MkButton.vue'; import MkButton from '@/components/MkButton.vue';
import MkModalWindow from '@/components/MkModalWindow.vue'; import MkModalWindow from '@/components/MkModalWindow.vue';
import { i18n } from '@/i18n.js'; import { i18n } from '@/i18n.js';
import { $i } from '@/account.js'; import { signinRequired } from '@/account.js';
const $i = signinRequired();
const emit = defineEmits<{ const emit = defineEmits<{
(ev: 'done', v: { password: string; token: string | null; }): void; (ev: 'done', v: { password: string; token: string | null; }): void;

View file

@ -35,9 +35,10 @@ import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js'; import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js'; import { i18n } from '@/i18n.js';
import { useInterval } from '@/scripts/use-interval.js'; import { useInterval } from '@/scripts/use-interval.js';
import { WithNonNullable } from '@/type.js';
const props = defineProps<{ const props = defineProps<{
note: Misskey.entities.Note; note: WithNonNullable<Misskey.entities.Note, 'poll'>;
readOnly?: boolean; readOnly?: boolean;
}>(); }>();

View file

@ -121,7 +121,7 @@ import { defaultStore, notePostInterruptors, postFormActions } from '@/store.js'
import MkInfo from '@/components/MkInfo.vue'; import MkInfo from '@/components/MkInfo.vue';
import { i18n } from '@/i18n.js'; import { i18n } from '@/i18n.js';
import { instance } from '@/instance.js'; import { instance } from '@/instance.js';
import { $i, notesCount, incNotesCount, getAccounts, openAccountMenu as openAccountMenu_ } from '@/account.js'; import { signinRequired, notesCount, incNotesCount, getAccounts, openAccountMenu as openAccountMenu_ } from '@/account.js';
import { uploadFile } from '@/scripts/upload.js'; import { uploadFile } from '@/scripts/upload.js';
import { deepClone } from '@/scripts/clone.js'; import { deepClone } from '@/scripts/clone.js';
import MkRippleEffect from '@/components/MkRippleEffect.vue'; import MkRippleEffect from '@/components/MkRippleEffect.vue';
@ -130,6 +130,8 @@ import { claimAchievement } from '@/scripts/achievements.js';
import { emojiPicker } from '@/scripts/emoji-picker.js'; import { emojiPicker } from '@/scripts/emoji-picker.js';
import { mfmFunctionPicker } from '@/scripts/mfm-function-picker.js'; import { mfmFunctionPicker } from '@/scripts/mfm-function-picker.js';
const $i = signinRequired();
const modal = inject('modal'); const modal = inject('modal');
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
@ -308,7 +310,7 @@ if (props.reply && props.reply.text != null) {
} }
} }
if ($i?.isSilenced && visibility.value === 'public') { if ($i.isSilenced && visibility.value === 'public') {
visibility.value = 'home'; visibility.value = 'home';
} }
@ -461,7 +463,7 @@ function setVisibility() {
os.popup(defineAsyncComponent(() => import('@/components/MkVisibilityPicker.vue')), { os.popup(defineAsyncComponent(() => import('@/components/MkVisibilityPicker.vue')), {
currentVisibility: visibility.value, currentVisibility: visibility.value,
isSilenced: $i?.isSilenced, isSilenced: $i.isSilenced,
localOnly: localOnly.value, localOnly: localOnly.value,
src: visibilityButton.value, src: visibilityButton.value,
}, { }, {

View file

@ -77,7 +77,14 @@ const emit = defineEmits<{
(ev: 'end'): void; (ev: 'end'): void;
}>(); }>();
const particles = []; const particles: {
size: number;
xA: number;
yA: number;
xB: number;
yB: number;
color: string;
}[] = [];
const origin = 64; const origin = 64;
const colors = ['#FF1493', '#00FFFF', '#FFE202']; const colors = ['#FF1493', '#00FFFF', '#FFE202'];
const zIndex = os.claimZIndex('high'); const zIndex = os.claimZIndex('high');

View file

@ -13,8 +13,10 @@ SPDX-License-Identifier: AGPL-3.0-only
> >
<div v-show="showing" ref="el" :class="$style.root" class="_acrylic _shadow" :style="{ zIndex, maxWidth: maxWidth + 'px' }"> <div v-show="showing" ref="el" :class="$style.root" class="_acrylic _shadow" :style="{ zIndex, maxWidth: maxWidth + 'px' }">
<slot> <slot>
<Mfm v-if="asMfm" :text="text"/> <template v-if="text">
<span v-else>{{ text }}</span> <Mfm v-if="asMfm" :text="text"/>
<span v-else>{{ text }}</span>
</template>
</slot> </slot>
</div> </div>
</Transition> </Transition>
@ -31,7 +33,7 @@ const props = withDefaults(defineProps<{
targetElement?: HTMLElement; targetElement?: HTMLElement;
x?: number; x?: number;
y?: number; y?: number;
text: string; text?: string;
asMfm?: boolean; asMfm?: boolean;
maxWidth?: number; maxWidth?: number;
direction?: 'top' | 'bottom' | 'right' | 'left'; direction?: 'top' | 'bottom' | 'right' | 'left';

View file

@ -0,0 +1,3 @@
export type WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };
export type WithNonNullable<T, K extends keyof T> = T & { [P in K]-?: NonNullable<T[P]> };