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,6 +16,7 @@
"js-cookie": "^3.0.5",
"jsonwebtoken": "^9.0.0",
"jwt-decode": "^3.1.2",
"luxon": "^3.3.0",
"socket.io-client": "^4.6.1"
},
"devDependencies": {

View File

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

View File

@ -1,18 +1,62 @@
import request from "../../handlers/request"
import pmap from "p-map"
import SyncModel from "../sync"
export default class MusicModel {
static get api_instance() {
return globalThis.__comty_shared_state.instances["music"]
}
static getFavorites = async () => {
const { data } = await request({
static getFavorites = async ({
useTidal = false
}) => {
let result = []
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
})
console.log(result)
return result
}
static search = async (keywords, {

View File

@ -1,6 +1,8 @@
import spotifyService from "./services/spotify"
import tidalService from "./services/tidal"
import request from "../../handlers/request"
const namespacesServices = {
spotify: spotifyService,
tidal: tidalService
@ -44,4 +46,14 @@ export default class SyncModel {
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
}
static async getMyFavoriteTracks() {
const { data } = await request({
instance: TidalService.api_instance,
method: "GET",
url: `/services/tidal/favorites/tracks`,
})
return data
}
}