mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 18:44:16 +00:00
implement new music & sync models
This commit is contained in:
parent
f0227354c6
commit
76fa2a3fd1
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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`,
|
||||||
|
@ -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, {
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
}
|
}
|
@ -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
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user