50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  AudioContentPlaylistManager.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 12/16/24.
 | 
						|
//
 | 
						|
 | 
						|
import Foundation
 | 
						|
 | 
						|
class AudioContentPlaylistManager {
 | 
						|
    private var currentIndex = -1
 | 
						|
    
 | 
						|
    let playlist: [AudioContentPlaylistContent]
 | 
						|
    
 | 
						|
    init(playlist: [AudioContentPlaylistContent]) {
 | 
						|
        self.playlist = playlist
 | 
						|
    }
 | 
						|
    
 | 
						|
    func moveToNext() -> AudioContentPlaylistContent? {
 | 
						|
        if !playlist.isEmpty {
 | 
						|
            currentIndex = currentIndex + 1 >= playlist.count ? 0 : currentIndex + 1
 | 
						|
            return playlist[currentIndex]
 | 
						|
        }
 | 
						|
        
 | 
						|
        return nil
 | 
						|
    }
 | 
						|
    
 | 
						|
    func moveToPrevious() -> AudioContentPlaylistContent? {
 | 
						|
        if !playlist.isEmpty {
 | 
						|
            currentIndex = currentIndex - 1 < 0 ? playlist.count - 1 : currentIndex - 1
 | 
						|
            return playlist[currentIndex]
 | 
						|
        }
 | 
						|
        
 | 
						|
        return nil
 | 
						|
    }
 | 
						|
    
 | 
						|
    func findByContentId(contentId: Int) -> AudioContentPlaylistContent? {
 | 
						|
        if let index = playlist.firstIndex(where:  { $0.id == contentId }), !playlist.isEmpty {
 | 
						|
            currentIndex = index
 | 
						|
            return playlist[index]
 | 
						|
        }
 | 
						|
        
 | 
						|
        return nil
 | 
						|
    }
 | 
						|
    
 | 
						|
    func hasNextContent() -> Bool {
 | 
						|
        return currentIndex + 1 < playlist.count
 | 
						|
    }
 | 
						|
}
 |