implement new music & sync models

This commit is contained in:
SrGooglo 2023-08-02 20:40:56 +00:00
parent f0227354c6
commit 76fa2a3fd1
5 changed files with 75 additions and 8 deletions

View File

@ -16,9 +16,10 @@
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"jsonwebtoken": "^9.0.0", "jsonwebtoken": "^9.0.0",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"luxon": "^3.3.0",
"socket.io-client": "^4.6.1" "socket.io-client": "^4.6.1"
}, },
"devDependencies": { "devDependencies": {
"corenode": "^0.28.26" "corenode": "^0.28.26"
} }
} }

View File

@ -28,7 +28,7 @@ export default class FeedModel {
return data return data
} }
static getTimelineFeed = async ({ trim, limit } = {}) => { static getTimelineFeed = async ({ trim, limit = 10 } = {}) => {
const { data } = await request({ const { data } = await request({
method: "GET", method: "GET",
url: `/feed/timeline`, url: `/feed/timeline`,

View File

@ -1,18 +1,62 @@
import request from "../../handlers/request" import request from "../../handlers/request"
import pmap from "p-map"
import SyncModel from "../sync"
export default class MusicModel { export default class MusicModel {
static get api_instance() { static get api_instance() {
return globalThis.__comty_shared_state.instances["music"] return globalThis.__comty_shared_state.instances["music"]
} }
static getFavorites = async () => { static getFavorites = async ({
const { data } = await request({ useTidal = false
instance: MusicModel.api_instance, }) => {
method: "GET", let result = []
url: `/tracks/liked`,
const requesters = [
async () => {
let { data } = await request({
instance: MusicModel.api_instance,
method: "GET",
url: `/tracks/liked`,
})
return data
},
]
if (useTidal) {
requesters.push(
async () => {
const tidalResult = await SyncModel.tidalCore.getMyFavoriteTracks()
return tidalResult
}
)
}
result = await pmap(
requesters,
async (requester) => {
const data = await requester()
return data
},
{
concurrency: 3
}
)
result = result.reduce((acc, cur) => {
return [...acc, ...cur]
}, [])
result = result.sort((a, b) => {
return b.liked_at - a.liked_at
}) })
return data console.log(result)
return result
} }
static search = async (keywords, { static search = async (keywords, {

View File

@ -1,6 +1,8 @@
import spotifyService from "./services/spotify" import spotifyService from "./services/spotify"
import tidalService from "./services/tidal" import tidalService from "./services/tidal"
import request from "../../handlers/request"
const namespacesServices = { const namespacesServices = {
spotify: spotifyService, spotify: spotifyService,
tidal: tidalService tidal: tidalService
@ -44,4 +46,14 @@ export default class SyncModel {
return await service.isActive() return await service.isActive()
} }
static async getLinkedServices() {
const response = await request({
instance: globalThis.__comty_shared_state.instances["sync"],
method: "GET",
url: "/active_services",
})
return response.data
}
} }

View File

@ -80,4 +80,14 @@ export default class TidalService {
return data return data
} }
static async getMyFavoriteTracks() {
const { data } = await request({
instance: TidalService.api_instance,
method: "GET",
url: `/services/tidal/favorites/tracks`,
})
return data
}
} }