From e2b81f819fea5cce8be40eaf264ee07e7a343c42 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Fri, 29 Sep 2023 22:39:50 +0900 Subject: [PATCH 1/3] Drop Misskey support --- src/main/database.ts | 3 ++ src/main/db/server.ts | 2 +- src/main/index.ts | 36 ++++++++++--------- src/main/websocket.ts | 4 +-- src/renderer/components/Login/Authorize.vue | 8 ++--- src/renderer/components/Login/LoginForm.vue | 5 ++- src/renderer/components/Settings/Filters.vue | 2 +- .../store/TimelineSpace/Contents/Home.ts | 3 -- .../TimelineSpace/Contents/Notifications.ts | 3 -- src/renderer/utils/quoteSupported.ts | 5 +-- 10 files changed, 33 insertions(+), 38 deletions(-) diff --git a/src/main/database.ts b/src/main/database.ts index 8b872676..735a3105 100644 --- a/src/main/database.ts +++ b/src/main/database.ts @@ -41,6 +41,9 @@ marker_home BOOLEAN NOT NULL DEFAULT false, \ marker_notifications BOOLEAN NOT NULL DEFAULT true, \ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE)' ).run() + db.prepare( + "DELETE FROM accounts WHERE id IN (SELECT accounts.id FROM accounts INNER JOIN servers ON servers.account_id = accounts.id WHERE servers.sns = 'misskey')" + ).run() return db } diff --git a/src/main/db/server.ts b/src/main/db/server.ts index a3eed952..43caf712 100644 --- a/src/main/db/server.ts +++ b/src/main/db/server.ts @@ -5,7 +5,7 @@ export const insertServer = ( db: Database, baseURL: string, domain: string, - sns: 'mastodon' | 'pleroma' | 'misskey', + sns: 'mastodon' | 'pleroma', accountId: number | null ): Promise => { return new Promise((resolve, reject) => { diff --git a/src/main/index.ts b/src/main/index.ts index 964a6f8d..1b3bae75 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -385,7 +385,7 @@ async function createWindow() { const args = minimist(process.argv.slice(process.env.NODE_ENV === 'development' ? 2 : 1)) if (args.help) { console.log(` -Whalebird is Mastodon, Pleroma and Misskey client for desktop. +Whalebird is a Fediverse client for desktop. Usage $ whalebird @@ -446,6 +446,9 @@ ipcMain.handle('add-server', async (_: IpcMainInvokeEvent, domain: string) => { if (sns === 'friendica') { return new Promise((_resolve, reject) => reject('friendica is not supported yet')) } + if (sns === 'misskey') { + return new Promise((_resolve, reject) => reject('misskey is not supported yet')) + } const server = await insertServer(db, `https://${domain}`, domain, sns, null) return server }) @@ -477,13 +480,6 @@ ipcMain.handle('authorize', async (_: IpcMainInvokeEvent, req: AuthorizeRequest) const client = generator(sns, req.baseURL, null, 'Whalebird', proxy) const tokenData = await client.fetchAccessToken(req.clientID, req.clientSecret, req.code, 'urn:ietf:wg:oauth:2.0:oob') let accessToken = tokenData.access_token - if (sns === 'misskey') { - // In misskey, access token is sha256(userToken + clientSecret) - accessToken = crypto - .createHash('sha256') - .update(tokenData.access_token + req.clientSecret, 'utf8') - .digest('hex') - } const authorizedClient = generator(sns, req.baseURL, accessToken, 'Whalebird', proxy) const credentials = await authorizedClient.verifyAccountCredentials() @@ -792,16 +788,22 @@ ipcMain.handle('list-fonts', async (_: IpcMainInvokeEvent) => { }) // Settings -ipcMain.handle('get-account-setting', async (_: IpcMainInvokeEvent, accountId: number): Promise => { - const setting = await getSetting(db, accountId) - return setting -}) +ipcMain.handle( + 'get-account-setting', + async (_: IpcMainInvokeEvent, accountId: number): Promise => { + const setting = await getSetting(db, accountId) + return setting + } +) -ipcMain.handle('update-account-setting', async (_: IpcMainInvokeEvent, setting: Setting): Promise => { - console.log(setting) - const res = await createOrUpdateSetting(db, setting) - return res -}) +ipcMain.handle( + 'update-account-setting', + async (_: IpcMainInvokeEvent, setting: Setting): Promise => { + console.log(setting) + const res = await createOrUpdateSetting(db, setting) + return res + } +) // Cache ipcMain.handle('get-cache-hashtags', async (_: IpcMainInvokeEvent) => { diff --git a/src/main/websocket.ts b/src/main/websocket.ts index 54d03243..b04c00d0 100644 --- a/src/main/websocket.ts +++ b/src/main/websocket.ts @@ -4,7 +4,7 @@ import { LocalAccount } from '~/src/types/localAccount' import { LocalServer } from '~src/types/localServer' const StreamingURL = async ( - sns: 'mastodon' | 'pleroma' | 'misskey', + sns: 'mastodon' | 'pleroma', account: LocalAccount, server: LocalServer, proxy: ProxyConfig | false @@ -26,7 +26,7 @@ class WebSocket { public client: MegalodonInterface public listener: WebSocketInterface | null - constructor(sns: 'mastodon' | 'pleroma' | 'misskey', account: LocalAccount, streamingURL: string, proxy: ProxyConfig | false) { + constructor(sns: 'mastodon' | 'pleroma', account: LocalAccount, streamingURL: string, proxy: ProxyConfig | false) { const url = streamingURL.replace(/^https:\/\//, 'wss://') this.client = generator(sns, url, account.accessToken, 'Whalebird', proxy) this.listener = null diff --git a/src/renderer/components/Login/Authorize.vue b/src/renderer/components/Login/Authorize.vue index 1415c149..98c642b0 100644 --- a/src/renderer/components/Login/Authorize.vue +++ b/src/renderer/components/Login/Authorize.vue @@ -13,8 +13,7 @@ class="authorize-form" @submit.prevent="authorizeSubmit" > -

{{ $t('authorize.misskey_label') }}

- + @@ -65,10 +64,7 @@ export default defineComponent({ const authorizeSubmit = async () => { submitting.value = true - let code = authorizeForm.code - if (route.query.sns === 'misskey' && route.query.session_token) { - code = route.query.session_token.toString() - } + const code = authorizeForm.code try { const localAccount: LocalAccount = await win.ipcRenderer.invoke('authorize', { serverID: route.query.server_id, diff --git a/src/renderer/components/Login/LoginForm.vue b/src/renderer/components/Login/LoginForm.vue index aef7ff53..d5d9e782 100644 --- a/src/renderer/components/Login/LoginForm.vue +++ b/src/renderer/components/Login/LoginForm.vue @@ -60,7 +60,7 @@ export default defineComponent({ const domain = ref('') const searching = ref(false) const allowLogin = computed(() => domain.value && form.domainName == domain.value) - const sns = ref<'mastodon' | 'pleroma' | 'misskey'>('mastodon') + const sns = ref<'mastodon' | 'pleroma'>('mastodon') const rules = reactive({ domainName: [ @@ -120,6 +120,9 @@ export default defineComponent({ if (res === 'friendica') { throw new Error('Friendica is not supported') } + if (res === 'misskey') { + throw new Error('Misskey is not supported') + } sns.value = res domain.value = cleanDomain ElMessage({ diff --git a/src/renderer/components/Settings/Filters.vue b/src/renderer/components/Settings/Filters.vue index ee8054fe..3ec87c49 100644 --- a/src/renderer/components/Settings/Filters.vue +++ b/src/renderer/components/Settings/Filters.vue @@ -2,7 +2,7 @@

{{ $t('settings.filters.title') }}

- + {{ $t('settings.filters.new.title') }} diff --git a/src/renderer/store/TimelineSpace/Contents/Home.ts b/src/renderer/store/TimelineSpace/Contents/Home.ts index e9269f7f..041f72ed 100644 --- a/src/renderer/store/TimelineSpace/Contents/Home.ts +++ b/src/renderer/store/TimelineSpace/Contents/Home.ts @@ -222,9 +222,6 @@ const actions: ActionTree = { if (timeline.length === 0 || timeline[0].id === 'loading-card') { return } - if (req.server.sns === 'misskey') { - return - } const client = generator(req.server.sns, req.server.baseURL, req.account.accessToken, rootState.App.userAgent) const res = await client.saveMarkers({ home: { last_read_id: timeline[0].id } }) return res.data diff --git a/src/renderer/store/TimelineSpace/Contents/Notifications.ts b/src/renderer/store/TimelineSpace/Contents/Notifications.ts index 799a7c9d..673c9e21 100644 --- a/src/renderer/store/TimelineSpace/Contents/Notifications.ts +++ b/src/renderer/store/TimelineSpace/Contents/Notifications.ts @@ -215,9 +215,6 @@ const actions: ActionTree = { return } - if (req.server.sns === 'misskey') { - return - } const client = generator(req.server.sns, req.server.baseURL, req.account.accessToken, rootState.App.userAgent) const res = await client.saveMarkers({ notifications: { last_read_id: notifications[0].id } }) if (rootState.TimelineSpace.server!.sns === 'pleroma') { diff --git a/src/renderer/utils/quoteSupported.ts b/src/renderer/utils/quoteSupported.ts index e3fae2d9..bd20458a 100644 --- a/src/renderer/utils/quoteSupported.ts +++ b/src/renderer/utils/quoteSupported.ts @@ -1,9 +1,6 @@ import { QuoteSupportMastodon } from '~/src/constants/servers/quote' -const quoteSupported = (sns: 'mastodon' | 'pleroma' | 'misskey', domain: string): boolean => { - if (sns === 'misskey') { - return true - } +const quoteSupported = (_sns: 'mastodon' | 'pleroma', domain: string): boolean => { if (QuoteSupportMastodon.includes(domain)) { return true } From e838a51e82e387ec2d81c35d0374788e23990c20 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Fri, 29 Sep 2023 22:41:57 +0900 Subject: [PATCH 2/3] Remove Misskey from README --- README.md | 3 +-- src/types/localServer.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fcbd0084..4bb179f8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Whalebird +https://github.com/h3poteto/megalodon/pull/1920# Whalebird [![Build](https://github.com/h3poteto/whalebird-desktop/actions/workflows/build.yml/badge.svg)](https://github.com/h3poteto/whalebird-desktop/actions/workflows/build.yml) [![GitHub release](http://img.shields.io/github/release/h3poteto/whalebird-desktop.svg)](https://github.com/h3poteto/whalebird-desktop/releases) [![Mac App Store](https://img.shields.io/itunes/v/6445864587)](https://apps.apple.com/us/app/whalebird/id6445864587) @@ -21,7 +21,6 @@ Whalebird is a Fediverse client app for desktop. - Supporting - Mastodon - Pleroma - - Misskey ### Shortcuts diff --git a/src/types/localServer.ts b/src/types/localServer.ts index 18ff5772..fe716daf 100644 --- a/src/types/localServer.ts +++ b/src/types/localServer.ts @@ -2,6 +2,6 @@ export type LocalServer = { id: number baseURL: string domain: string - sns: 'mastodon' | 'pleroma' | 'misskey' + sns: 'mastodon' | 'pleroma' accountId: number | null } From 6386350dd10cb22afe9ac5f0f3811595fc9b750d Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Fri, 29 Sep 2023 22:54:22 +0900 Subject: [PATCH 3/3] Fix code style --- src/main/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/index.ts b/src/main/index.ts index 1b3bae75..35509c22 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -18,7 +18,6 @@ import { clipboard } from 'electron' import fs from 'fs' -import crypto from 'crypto' import log from 'electron-log' import windowStateKeeper from 'electron-window-state' import simplayer from 'simplayer'