mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-10 02:54:15 +00:00
- Introduces a new Music Library system for managing favorites (tracks, playlists, releases), replacing the previous TrackLike model. - Completely revamps the Studio TV profile page, adding live statistics, stream configuration, restream management, and media URL display. - Enhances the media player with a custom seekbar and improved audio playback logic for MPD and non-MPD sources. - Lays foundational groundwork for chat encryption with new models and APIs. - Refactors critical UI components like PlaylistView and PagePanel. - Standardizes monorepo development scripts to use npm. - Updates comty.js submodule and adds various new UI components.
46 lines
866 B
JavaScript
46 lines
866 B
JavaScript
import { MusicLibraryItem } from "@db_models"
|
|
|
|
export default async (user_id, item_id, kind) => {
|
|
if (!user_id) {
|
|
throw new OperationError(400, "Missing user_id")
|
|
}
|
|
|
|
if (!item_id) {
|
|
throw new OperationError(400, "Missing item_id")
|
|
}
|
|
|
|
if (Array.isArray(item_id)) {
|
|
const libraryItems = await MusicLibraryItem.find({
|
|
user_id: user_id,
|
|
item_id: { $in: item_id },
|
|
kind: kind,
|
|
})
|
|
.lean()
|
|
.catch(() => {
|
|
return []
|
|
})
|
|
|
|
return item_id.map((id) => {
|
|
const libItem = libraryItems.find(
|
|
(item) => item.item_id.toString() === id.toString(),
|
|
)
|
|
|
|
return {
|
|
item_id: id,
|
|
liked: !!libItem,
|
|
created_at: libItem?.created_at,
|
|
}
|
|
})
|
|
} else {
|
|
let libraryItem = await MusicLibraryItem.findOne({
|
|
user_id: user_id,
|
|
item_id: item_id,
|
|
kind: kind,
|
|
}).catch(() => null)
|
|
|
|
return {
|
|
liked: !!libraryItem,
|
|
}
|
|
}
|
|
}
|