diff --git a/.github/workflows/lint-typescript.yml b/.github/workflows/lint-typescript.yml index d9d82874f..3ab3fa88e 100644 --- a/.github/workflows/lint-typescript.yml +++ b/.github/workflows/lint-typescript.yml @@ -4,9 +4,7 @@ name: Lint TypeScript -# FIXME: temporary disable typecheck, until we can perform typecheck without checking Talk -on: - workflow_dispatch: +on: pull_request permissions: contents: read diff --git a/src/app/AppConfig.ts b/src/app/AppConfig.ts index 3b67a8e73..7bef4026c 100644 --- a/src/app/AppConfig.ts +++ b/src/app/AppConfig.ts @@ -147,7 +147,7 @@ const appConfigChangeListeners: { [K in AppConfigKey]?: Set<(value: AppConfig[K] async function readAppConfigFile(): Promise> { try { const content = await readFile(getAppConfigFilePath(), 'utf-8') - return JSON.parse(content) + return JSON.parse(content) as Partial } catch (error) { if (error instanceof Error && 'code' in error && error.code !== 'ENOENT') { console.error('Failed to read the application config file', error) diff --git a/src/certificate/renderer/certificate.utils.ts b/src/certificate/renderer/certificate.utils.ts index e0b30aade..f3d880f33 100644 --- a/src/certificate/renderer/certificate.utils.ts +++ b/src/certificate/renderer/certificate.utils.ts @@ -18,8 +18,8 @@ export function parseElectronCertificateFingerprint(fingerprint: string): { algo if (isMatched) { return { - algorithm: algorithm.toUpperCase(), - value: base64ToHex(value), + algorithm: algorithm!.toUpperCase(), + value: base64ToHex(value!), } } return { diff --git a/src/global.d.ts b/src/global.d.ts index 092b4f623..d36f5f3a2 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -21,6 +21,11 @@ declare module '*.svg?raw' { export default url } +// Ignore types from Talk: +// No need to type check entire Talk codebase +// And @talk path is resolved on build time which is problematic fo TS +declare module '@talk/*' + declare module 'vue-material-design-icons/*.vue' { import type { Component } from 'vue' const component: Component<{ size: number }, Record, Record, Record, Record> diff --git a/src/talk/renderer/TalkWrapper/talk.service.ts b/src/talk/renderer/TalkWrapper/talk.service.ts index d0898eea3..a8d8ab923 100644 --- a/src/talk/renderer/TalkWrapper/talk.service.ts +++ b/src/talk/renderer/TalkWrapper/talk.service.ts @@ -85,7 +85,7 @@ function createTalkHashStoreAdapter(): TalkHashStoreAdapter { let onDirty: Parameters[0] let onUpdate: Parameters[0] - talkHashStore.$onAction(({ name, after }) => { + talkHashStore.$onAction(({ name, after }: { name: string, after: (callback: () => void) => void }) => { if (name !== 'setNextcloudTalkHash') { return } diff --git a/src/talk/renderer/TitleBar/components/DevMenu.vue b/src/talk/renderer/TitleBar/components/DevMenu.vue index d7fb74488..c331df19a 100644 --- a/src/talk/renderer/TitleBar/components/DevMenu.vue +++ b/src/talk/renderer/TitleBar/components/DevMenu.vue @@ -21,7 +21,7 @@ import IconMessageBadgeOutline from 'vue-material-design-icons/MessageBadgeOutli import IconMonitorShare from 'vue-material-design-icons/MonitorShare.vue' import { appData } from '../../../../app/AppData.js' -const supportsTestAdminNotification = appData.capabilities?.notifications?.['admin-notifications']?.includes('ocs') && appData.userMetadata?.groups.includes('admin') +const supportsTestAdminNotification = appData.capabilities?.notifications?.['admin-notifications']?.includes('ocs') && (appData.userMetadata as unknown as ({ groups: string[] } | null))?.groups.includes('admin') const supportsTestPushNotification = appData.capabilities?.notifications?.['ocs-endpoints']?.includes('test-push') const supportsTestNotification = supportsTestPushNotification || supportsTestAdminNotification diff --git a/src/talk/renderer/UserStatus/components/UserStatusFormCustomMessage.vue b/src/talk/renderer/UserStatus/components/UserStatusFormCustomMessage.vue index 9d091e026..7edda067f 100644 --- a/src/talk/renderer/UserStatus/components/UserStatusFormCustomMessage.vue +++ b/src/talk/renderer/UserStatus/components/UserStatusFormCustomMessage.vue @@ -37,7 +37,7 @@ const { disabled = false } = defineProps<{ maxlength="80" :disabled="disabled" :model-value="message ?? ''" - @update:model-value="message = $event" /> + @update:model-value="message = ($event as string)" /> diff --git a/src/talk/renderer/UserStatus/userStatus.utils.ts b/src/talk/renderer/UserStatus/userStatus.utils.ts index 9ba3b6ebd..797af66b7 100644 --- a/src/talk/renderer/UserStatus/userStatus.utils.ts +++ b/src/talk/renderer/UserStatus/userStatus.utils.ts @@ -12,7 +12,7 @@ import { formatDuration, formatDurationFromNow } from '../../../shared/datetime. /** * List of user status types that user can set */ -export const availableUserStatusStatusTypes: UserStatusStatusType[] = (appData.capabilities as unknown)?.user_status?.supports_busy +export const availableUserStatusStatusTypes: UserStatusStatusType[] = (appData.capabilities as { user_status?: { supports_busy?: boolean } })?.user_status?.supports_busy ? ['online', 'away', 'busy', 'dnd', 'invisible'] : ['online', 'away', 'dnd', 'invisible'] diff --git a/tsconfig.json b/tsconfig.json index 481da6d76..cf46d765c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,6 @@ "strictNullChecks": true, "paths": { "@global-styles/*": ["resources/server-global-styles/master/*"], - "@talk/*": ["spreed/*"], }, }, }