| 
					
				 | 
			
			
				@@ -0,0 +1,109 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref, computed } from "vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useStore } from "vuex"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Toast from "toasters"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function useSearchMusare() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const store = useStore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const youtubeSearch = ref({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        songs: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            results: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            nextPageToken: "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        playlist: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            isImportingOnlyMusic: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // const resultsLeftCount = computed(() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     musareSearch.value.count - musareSearch.value.results.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // const nextPageResultsCount = computed(() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     Math.min(musareSearch.value.pageSize, resultsLeftCount.value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const { socket } = store.state.websockets; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const searchForSongs = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let { query } = youtubeSearch.value.songs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (query.indexOf("&index=") !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query = query.split("&index="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query.pop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query = query.join(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (query.indexOf("&list=") !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query = query.split("&list="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query.pop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query = query.join(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        socket.dispatch("apis.searchYoutube", query, res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (res.status === "success") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                youtubeSearch.value.songs.nextPageToken = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.data.nextPageToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                youtubeSearch.value.songs.results = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.data.items.forEach(result => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    youtubeSearch.value.songs.results.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        id: result.id.videoId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        url: `https://www.youtube.com/watch?v=${this.id}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        title: result.snippet.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        thumbnail: result.snippet.thumbnails.default.url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        channelId: result.snippet.channelId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        channelTitle: result.snippet.channelTitle, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        isAddedToQueue: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (res.status === "error") new Toast(res.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const loadMoreSongs = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        socket.dispatch( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "apis.searchYoutubeForPage", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            youtubeSearch.value.songs.query, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            youtubeSearch.value.songs.nextPageToken, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (res.status === "success") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    youtubeSearch.value.songs.nextPageToken = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        res.data.nextPageToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.data.items.forEach(result => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        youtubeSearch.value.songs.results.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            id: result.id.videoId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            url: `https://www.youtube.com/watch?v=${this.id}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            title: result.snippet.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            thumbnail: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                result.snippet.thumbnails.default.url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            channelId: result.snippet.channelId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            channelTitle: result.snippet.channelTitle, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            isAddedToQueue: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (res.status === "error") new Toast(res.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const addYouTubeSongToPlaylist = (id, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        socket.dispatch( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "playlists.addSongToPlaylist", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.playlist._id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Toast(res.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (res.status === "success") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    youtubeSearch.value.songs.results[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ].isAddedToQueue = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { youtubeSearch, searchForSongs, loadMoreSongs, addYouTubeSongToPlaylist }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |