fix code quality issues

This commit is contained in:
まっちゃとーにゅ 2024-01-31 06:18:54 +09:00
parent 9ffa56aa1b
commit b6f6c3ea18
No known key found for this signature in database
GPG key ID: 143DE582A97FE052
27 changed files with 63 additions and 64 deletions

View file

@ -9,9 +9,9 @@ import Channel, { type MiChannelService } from '../channel.js';
class AdminChannel extends Channel {
public readonly chName = 'admin';
public static shouldShare = true;
public static requireCredential = true as const;
public static kind = 'read:admin:stream';
public static readonly shouldShare = true;
public static readonly requireCredential = true as const;
public static readonly kind = 'read:admin:stream';
@bindThis
public async init(params: any) {

View file

@ -12,9 +12,9 @@ import Channel, { type MiChannelService } from '../channel.js';
class AntennaChannel extends Channel {
public readonly chName = 'antenna';
public static shouldShare = false;
public static requireCredential = true as const;
public static kind = 'read:account';
public static readonly shouldShare = false;
public static readonly requireCredential = true as const;
public static readonly kind = 'read:account';
private antennaId: string;
constructor(

View file

@ -12,8 +12,8 @@ import Channel, { type MiChannelService } from '../channel.js';
class ChannelChannel extends Channel {
public readonly chName = 'channel';
public static shouldShare = false;
public static requireCredential = false as const;
public static readonly shouldShare = false;
public static readonly requireCredential = false as const;
private channelId: string;
constructor(

View file

@ -9,9 +9,9 @@ import Channel, { type MiChannelService } from '../channel.js';
class DriveChannel extends Channel {
public readonly chName = 'drive';
public static shouldShare = true;
public static requireCredential = true as const;
public static kind = 'read:account';
public static readonly shouldShare = true;
public static readonly requireCredential = true as const;
public static readonly kind = 'read:account';
@bindThis
public async init(params: any) {

View file

@ -16,8 +16,8 @@ import Channel, { type MiChannelService } from '../channel.js';
class GlobalTimelineChannel extends Channel {
public readonly chName = 'globalTimeline';
public static shouldShare = false;
public static requireCredential = false as const;
public static readonly shouldShare = false;
public static readonly requireCredential = false as const;
private withRenotes: boolean;
private withFiles: boolean;

View file

@ -13,8 +13,8 @@ import Channel, { type MiChannelService } from '../channel.js';
class HashtagChannel extends Channel {
public readonly chName = 'hashtag';
public static shouldShare = false;
public static requireCredential = false as const;
public static readonly shouldShare = false;
public static readonly requireCredential = false as const;
private q: string[][];
constructor(

View file

@ -14,9 +14,9 @@ import Channel, { type MiChannelService } from '../channel.js';
class HomeTimelineChannel extends Channel {
public readonly chName = 'homeTimeline';
public static shouldShare = false;
public static requireCredential = true as const;
public static kind = 'read:account';
public static readonly shouldShare = false;
public static readonly requireCredential = true as const;
public static readonly kind = 'read:account';
private withRenotes: boolean;
private withFiles: boolean;

View file

@ -16,9 +16,9 @@ import Channel, { type MiChannelService } from '../channel.js';
class HybridTimelineChannel extends Channel {
public readonly chName = 'hybridTimeline';
public static shouldShare = false;
public static requireCredential = true as const;
public static kind = 'read:account';
public static readonly shouldShare = false;
public static readonly requireCredential = true as const;
public static readonly kind = 'read:account';
private withRenotes: boolean;
private withReplies: boolean;
private withFiles: boolean;

View file

@ -15,8 +15,8 @@ import Channel, { type MiChannelService } from '../channel.js';
class LocalTimelineChannel extends Channel {
public readonly chName = 'localTimeline';
public static shouldShare = false;
public static requireCredential = false as const;
public static readonly shouldShare = false;
public static readonly requireCredential = false as const;
private withRenotes: boolean;
private withReplies: boolean;
private withFiles: boolean;

View file

@ -11,9 +11,9 @@ import Channel, { type MiChannelService } from '../channel.js';
class MainChannel extends Channel {
public readonly chName = 'main';
public static shouldShare = true;
public static requireCredential = true as const;
public static kind = 'read:account';
public static readonly shouldShare = true;
public static readonly requireCredential = true as const;
public static readonly kind = 'read:account';
constructor(
private noteEntityService: NoteEntityService,

View file

@ -12,8 +12,8 @@ const ev = new Xev();
class QueueStatsChannel extends Channel {
public readonly chName = 'queueStats';
public static shouldShare = true;
public static requireCredential = false as const;
public static readonly shouldShare = true;
public static readonly requireCredential = false as const;
constructor(id: string, connection: Channel['connection']) {
super(id, connection);

View file

@ -13,8 +13,8 @@ import Channel, { type MiChannelService } from '../channel.js';
class ReversiGameChannel extends Channel {
public readonly chName = 'reversiGame';
public static shouldShare = false;
public static requireCredential = false as const;
public static readonly shouldShare = false;
public static readonly requireCredential = false as const;
private gameId: MiReversiGame['id'] | null = null;
constructor(

View file

@ -9,9 +9,9 @@ import Channel, { type MiChannelService } from '../channel.js';
class ReversiChannel extends Channel {
public readonly chName = 'reversi';
public static shouldShare = true;
public static requireCredential = true as const;
public static kind = 'read:account';
public static readonly shouldShare = true;
public static readonly requireCredential = true as const;
public static readonly kind = 'read:account';
@bindThis
public async init(params: any) {

View file

@ -14,8 +14,8 @@ import Channel, { type MiChannelService } from '../channel.js';
class RoleTimelineChannel extends Channel {
public readonly chName = 'roleTimeline';
public static shouldShare = false;
public static requireCredential = false as const;
public static readonly shouldShare = false;
public static readonly requireCredential = false as const;
private roleId: string;
constructor(

View file

@ -12,8 +12,8 @@ const ev = new Xev();
class ServerStatsChannel extends Channel {
public readonly chName = 'serverStats';
public static shouldShare = true;
public static requireCredential = false as const;
public static readonly shouldShare = true;
public static readonly requireCredential = false as const;
constructor(id: string, connection: Channel['connection']) {
super(id, connection);

View file

@ -15,8 +15,8 @@ import Channel, { type MiChannelService } from '../channel.js';
class UserListChannel extends Channel {
public readonly chName = 'userList';
public static shouldShare = false;
public static requireCredential = false as const;
public static readonly shouldShare = false;
public static readonly requireCredential = false as const;
private listId: string;
private membershipsMap: Record<string, Pick<MiUserListMembership, 'withReplies'> | undefined> = {};
private listUsersClock: NodeJS.Timeout;

View file

@ -47,12 +47,12 @@ onMounted(() => {
const width = rootEl.value!.offsetWidth;
const height = rootEl.value!.offsetHeight;
if (left + width - window.pageXOffset >= (window.innerWidth - SCROLLBAR_THICKNESS)) {
left = (window.innerWidth - SCROLLBAR_THICKNESS) - width + window.pageXOffset;
if (left + width - window.scrollX >= (window.innerWidth - SCROLLBAR_THICKNESS)) {
left = (window.innerWidth - SCROLLBAR_THICKNESS) - width + window.scrollX;
}
if (top + height - window.pageYOffset >= (window.innerHeight - SCROLLBAR_THICKNESS)) {
top = (window.innerHeight - SCROLLBAR_THICKNESS) - height + window.pageYOffset;
if (top + height - window.scrollY >= (window.innerHeight - SCROLLBAR_THICKNESS)) {
top = (window.innerHeight - SCROLLBAR_THICKNESS) - height + window.scrollY;
}
if (top < 0) {

View file

@ -212,14 +212,15 @@ const note = ref(deepClone(props.note));
// plugin
if (noteViewInterruptors.length > 0) {
onMounted(async () => {
let result: Misskey.entities.Note | null = deepClone(note.value);
let result = deepClone(note.value);
for (const interruptor of noteViewInterruptors) {
try {
result = await interruptor.handler(result!) as Misskey.entities.Note | null;
if (result === null) {
const r = await interruptor.handler(result) as Misskey.entities.Note | null;
if (r === null) {
isDeleted.value = true;
return;
}
result = r;
} catch (err) {
console.error(err);
}

View file

@ -240,14 +240,15 @@ const note = ref(deepClone(props.note));
// plugin
if (noteViewInterruptors.length > 0) {
onMounted(async () => {
let result: Misskey.entities.Note | null = deepClone(note.value);
let result = deepClone(note.value);
for (const interruptor of noteViewInterruptors) {
try {
result = await interruptor.handler(result!) as Misskey.entities.Note | null;
if (result === null) {
const r = await interruptor.handler(result) as Misskey.entities.Note | null;
if (r === null) {
isDeleted.value = true;
return;
}
result = r;
} catch (err) {
console.error(err);
}

View file

@ -72,9 +72,7 @@ export type PollEditorModelValue = {
const props = defineProps<{
modelValue: PollEditorModelValue;
}>();
const emit = defineEmits<{
(ev: 'update:modelValue', v: PollEditorModelValue): void;
}>();
const emit = defineEmits<(ev: 'update:modelValue', v: PollEditorModelValue) => void>();
const choices = ref(props.modelValue.choices);
const multiple = ref(props.modelValue.multiple);

View file

@ -352,7 +352,7 @@ if (props.specified) {
}
// keep cw when reply
if (defaultStore.state.keepCw && props.reply && props.reply.cw) {
if (defaultStore.state.keepCw && props.reply?.cw) {
useCw.value = true;
cw.value = props.reply.cw;
}
@ -603,7 +603,7 @@ async function onPaste(ev: ClipboardEvent) {
return;
}
quoteId.value = paste.substring(url.length).match(/^\/notes\/(.+?)\/?$/)?.[1] ?? null;
quoteId.value = RegExp(/^\/notes\/(.+?)\/?$/).exec(paste.substring(url.length))?.[1] ?? null;
});
}
}

View file

@ -156,7 +156,7 @@ if (navigator.serviceWorker == null) {
pushSubscription.value = await registration.value.pushManager.getSubscription();
if (instance.swPublickey && ('PushManager' in window) && $i && $i.token) {
if (instance.swPublickey && ('PushManager' in window) && $i?.token) {
supported.value = true;
if (pushSubscription.value) {

View file

@ -142,7 +142,7 @@ async function queryKey(): Promise<void> {
function onSubmit(): void {
signing.value = true;
if (!totpLogin.value && user.value && user.value.twoFactorEnabled) {
if (!totpLogin.value && user.value?.twoFactorEnabled) {
if (webAuthnSupported() && user.value.securityKeys) {
misskeyApi('signin', {
username: username.value,

View file

@ -70,7 +70,7 @@ import { misskeyApi } from '@/scripts/misskey-api.js';
import { defaultStore } from '@/store.js';
import { i18n } from '@/i18n.js';
import { $i } from '@/account.js';
import { host as currentHost, hostname } from '@/config.js';
import { hostname } from '@/config.js';
const emit = defineEmits<{
(ev: 'ok', selected: Misskey.entities.UserDetailed): void;
@ -138,8 +138,8 @@ onMounted(() => {
return true;
}
});
if (props.includeSelf && _users.find(x => $i ? x.id === $i.id : true) == null) {
recentUsers.value = [$i!, ..._users];
if (props.includeSelf && $i && !_users.find(x => $i ? x.id === $i.id : true)) {
recentUsers.value = [$i, ..._users];
} else {
recentUsers.value = _users;
}

View file

@ -15,7 +15,6 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { onMounted, shallowRef, ref, nextTick } from 'vue';
import { Chart } from 'chart.js';
import gradient from 'chartjs-plugin-gradient';
import tinycolor from 'tinycolor2';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { defaultStore } from '@/store.js';

View file

@ -62,12 +62,12 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext<MfmEven
const validTime = (t: string | boolean | null | undefined) => {
if (t == null) return null;
if (typeof t === 'boolean') return null;
return t.match(/^[0-9.]+s$/) ? t : null;
return RegExp(/^[0-9.]+s$/).exec(t) ? t : null;
};
const validColor = (c: unknown): string | null => {
if (typeof c !== 'string') return null;
return c.match(/^[0-9a-f]{3,6}$/i) ? c : null;
return RegExp(/^[0-9a-f]{3,6}$/i).exec(c) ? c : null;
};
const useAnim = defaultStore.state.advancedMfm && defaultStore.state.animatedMfm;
@ -356,7 +356,7 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext<MfmEven
case 'mention': {
return [h(MkMention, {
key: Math.random(),
host: (token.props.host == null && props.author && props.author.host != null ? props.author.host : token.props.host) ?? host,
host: (token.props.host == null && props.author?.host ? props.author.host : token.props.host) ?? host,
username: token.props.username,
})];
}

View file

@ -97,7 +97,7 @@ function onTabClick(t: Tab, ev: MouseEvent): void {
function renderTab() {
const tabEl = props.tab ? tabRefs[props.tab] : undefined;
if (tabEl && tabHighlightEl.value && tabHighlightEl.value.parentElement) {
if (tabEl && tabHighlightEl.value?.parentElement) {
// offsetWidth offsetLeft getBoundingClientRect 使
// https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/offsetWidth#%E5%80%A4
const parentRect = tabHighlightEl.value.parentElement.getBoundingClientRect();