Add clients manager class
This commit is contained in:
parent
49acb2c7b7
commit
ab37afb4e6
|
@ -73,12 +73,12 @@ input {
|
|||
border-color: #26d69a;
|
||||
}
|
||||
}
|
||||
#timelines{
|
||||
display:flex;
|
||||
width:100%;
|
||||
#timelines {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
}
|
||||
.tl{
|
||||
height:100%;
|
||||
.tl {
|
||||
height: 100%;
|
||||
flex-grow: 4;
|
||||
}
|
||||
</style>
|
36
src/main/Client.ts
Normal file
36
src/main/Client.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
|
||||
import Mastodon from 'megalodon'
|
||||
|
||||
type Protocol = 'http' | 'ws'
|
||||
|
||||
export default class Clients {
|
||||
// Authorized Accounts. keyには`@username@domain`を設定します
|
||||
private static authorizedHTTP: Map<string, Mastodon> = new Map()
|
||||
private static authorizedWebSocket: Map<string, Mastodon> = new Map()
|
||||
|
||||
// Non-authorized Accounts. keyには`domain`を設定します
|
||||
private static nonAuthorizedHTTP: Map<string, Mastodon> = new Map()
|
||||
private static nonAuthorizedWebsocket: Map<string, Mastodon> = new Map()
|
||||
|
||||
public static getNoAuthClient(domain: string, protocol: Protocol = 'http'): Mastodon {
|
||||
let clients = protocol === 'http' ? this.nonAuthorizedHTTP : this.nonAuthorizedWebsocket
|
||||
|
||||
if (!clients.has(domain)) {
|
||||
this.createNoAuthClient(domain)
|
||||
}
|
||||
|
||||
return clients.get(domain)!
|
||||
}
|
||||
|
||||
private static createNoAuthClient(domain: string) {
|
||||
|
||||
this.nonAuthorizedHTTP.set(domain, new Mastodon(
|
||||
'',
|
||||
'https://' + domain + '/api/v1'
|
||||
))
|
||||
this.nonAuthorizedWebsocket.set(domain, new Mastodon(
|
||||
'',
|
||||
'wss://' + domain + '/api/v1'
|
||||
))
|
||||
}
|
||||
}
|
|
@ -3,13 +3,12 @@ import {
|
|||
} from 'electron'
|
||||
import Mastodon, { Status, Response } from 'megalodon'
|
||||
|
||||
import Client from './Client'
|
||||
|
||||
export default class Timeline {
|
||||
public static ready() {
|
||||
ipcMain.on('no-auth-streaming', (event: Event, instance: string) => {
|
||||
const client = new Mastodon(
|
||||
'',
|
||||
'https://' + instance + '/api/v1'
|
||||
)
|
||||
const client = Client.getNoAuthClient(instance)
|
||||
|
||||
client.get<[Status]>('/timelines/public?local=true')
|
||||
.then((resp: Response<[Status]>) => {
|
||||
|
|
Loading…
Reference in New Issue
Block a user