pipebomb.js
Version:
Library for interacting with Pipe Bomb servers
48 lines • 1.93 kB
JavaScript
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