UNPKG

pipebomb.js

Version:

Library for interacting with Pipe Bomb servers

48 lines 1.93 kB
import Playlist from "./Playlist.js"; import TrackList from "./TrackList.js"; export default class CollectionCache { constructor(context, trackCache, cacheTime) { this.context = context; this.trackCache = trackCache; this.cacheTime = cacheTime; this.collections = new Map(); } setCollection(collection) { const existingCollection = this.getCollection(collection.collectionID); if (existingCollection) { if (existingCollection instanceof Playlist && collection instanceof Playlist) { // both playlists existingCollection.copyFromOtherPlaylist(collection); return existingCollection; } if (existingCollection instanceof TrackList && collection instanceof TrackList) { // both tracklists existingCollection.copyFromOtherTrackList(collection); return existingCollection; } } this.collections.set(collection.collectionID, { timeout: setTimeout(() => { this.deleteCollection(collection.collectionID); }, this.cacheTime * 1000), collection }); return collection; } getCollection(collectionID) { const existingCollection = this.collections.get(collectionID); if (!existingCollection) return null; clearTimeout(existingCollection.timeout); existingCollection.timeout = setTimeout(() => { this.deleteCollection(collectionID); }, this.cacheTime * 1000); return existingCollection.collection; } deleteCollection(collectionID) { const existingCollection = this.collections.get(collectionID); if (!existingCollection) return; clearTimeout(existingCollection.timeout); this.collections.delete(collectionID); } } //# sourceMappingURL=CollectionCache.js.map