2024-03-25 10:03:22 -04:00
|
|
|
import { DB, type DBConnectionInfo } from './db'
|
2024-03-24 16:03:31 -04:00
|
|
|
import { Jellyfin } from './jellyfin'
|
|
|
|
|
import { YouTubeMusic } from './youtube-music'
|
|
|
|
|
|
2024-03-25 10:03:22 -04:00
|
|
|
const constructConnection = (connectionInfo: DBConnectionInfo): Connection => {
|
2024-03-24 16:03:31 -04:00
|
|
|
const { id, userId, type, serviceInfo, tokens } = connectionInfo
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 'jellyfin':
|
|
|
|
|
return new Jellyfin(id, userId, serviceInfo.userId, serviceInfo.urlOrigin, tokens.accessToken)
|
|
|
|
|
case 'youtube-music':
|
|
|
|
|
return new YouTubeMusic(id, userId, serviceInfo.userId, tokens)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getConnections = (ids: string[]): Connection[] => {
|
|
|
|
|
const connectionInfo = DB.getConnectionInfo(ids)
|
|
|
|
|
|
|
|
|
|
return Array.from(connectionInfo, (info) => constructConnection(info))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getUserConnections = (userId: string): Connection[] => {
|
|
|
|
|
const connectionInfo = DB.getUserConnectionInfo(userId)
|
|
|
|
|
|
|
|
|
|
return Array.from(connectionInfo, (info) => constructConnection(info))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const Connections = {
|
|
|
|
|
getConnections,
|
|
|
|
|
getUserConnections,
|
|
|
|
|
}
|