mirror of
				https://github.com/SuperBFG7/ympd
				synced 2025-10-31 13:53:00 +00:00 
			
		
		
		
	Only show love button when either mpdas or mpdscribble channel is
present and use the correct channel to send the message of love
This commit is contained in:
		| @@ -29,6 +29,7 @@ var current_song = new Object(); | |||||||
| var MAX_ELEMENTS_PER_PAGE = 512; | var MAX_ELEMENTS_PER_PAGE = 512; | ||||||
| var isTouch = Modernizr.touch ? 1 : 0; | var isTouch = Modernizr.touch ? 1 : 0; | ||||||
| var filter = ''; | var filter = ''; | ||||||
|  | var scrobbler = ''; | ||||||
|  |  | ||||||
| var app = $.sammy(function () { | var app = $.sammy(function () { | ||||||
|     function runBrowse() { |     function runBrowse() { | ||||||
| @@ -264,6 +265,7 @@ function webSocketConnect() { | |||||||
|             app.run(); |             app.run(); | ||||||
|             /* emit initial request for output names */ |             /* emit initial request for output names */ | ||||||
|             socket.send('MPD_API_GET_OUTPUTS'); |             socket.send('MPD_API_GET_OUTPUTS'); | ||||||
|  |             socket.send('MPD_API_GET_CHANNELS'); | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|         socket.onmessage = function got_packet(msg) { |         socket.onmessage = function got_packet(msg) { | ||||||
| @@ -815,6 +817,22 @@ function webSocketConnect() { | |||||||
|                     }); |                     }); | ||||||
|                     last_outputs = obj; |                     last_outputs = obj; | ||||||
|                     break; |                     break; | ||||||
|  |                 case 'channels': | ||||||
|  |                     scrobbler = ''; | ||||||
|  |                     $('#love').addClass('hide'); | ||||||
|  |                     if (Object.keys(obj.data).length) { | ||||||
|  |                         $.each(obj.data, function (id, name) { | ||||||
|  |                             switch (name) { | ||||||
|  |                                 case 'mpdas': | ||||||
|  |                                 case 'mpdscribble': | ||||||
|  |                                     scrobbler = name; | ||||||
|  |                                     $('#love').removeClass('hide'); | ||||||
|  |                                 default: | ||||||
|  |                                     break; | ||||||
|  |                             } | ||||||
|  |                         }); | ||||||
|  |                     } | ||||||
|  |                     break; | ||||||
|                 case 'disconnected': |                 case 'disconnected': | ||||||
|                     if ($('.top-right').has('div').length == 0) |                     if ($('.top-right').has('div').length == 0) | ||||||
|                         $('.top-right') |                         $('.top-right') | ||||||
| @@ -1082,11 +1100,9 @@ function basename(path) { | |||||||
|  |  | ||||||
| function clickLove() { | function clickLove() { | ||||||
|     socket.send( |     socket.send( | ||||||
|         'MPD_API_SEND_MESSAGE,mpdas,' + |         'MPD_API_SEND_MESSAGE,' + | ||||||
|             ($('#btnlove').hasClass('active') ? 'unlove' : 'love') |             scrobbler + | ||||||
|     ); |             ',' + | ||||||
|     socket.send( |  | ||||||
|         'MPD_API_SEND_MESSAGE,mpdscribble,' + |  | ||||||
|             ($('#btnlove').hasClass('active') ? 'unlove' : 'love') |             ($('#btnlove').hasClass('active') ? 'unlove' : 'love') | ||||||
|     ); |     ); | ||||||
|     if ($('#btnlove').hasClass('active')) $('#btnlove').removeClass('active'); |     if ($('#btnlove').hasClass('active')) $('#btnlove').removeClass('active'); | ||||||
|   | |||||||
| @@ -259,6 +259,11 @@ int callback_mpd(struct mg_connection *c) { | |||||||
|         out_send_message: |         out_send_message: | ||||||
|             free(p_charbuf); |             free(p_charbuf); | ||||||
|             break; |             break; | ||||||
|  |         case MPD_API_GET_CHANNELS: | ||||||
|  |             mpd.buf_size = mpd_put_channels(mpd.buf); | ||||||
|  |             c->callback_param = NULL; | ||||||
|  |             mpd_notify_callback(c, MG_POLL); | ||||||
|  |             break; | ||||||
| #ifdef WITH_MPD_HOST_CHANGE | #ifdef WITH_MPD_HOST_CHANGE | ||||||
|         /* Commands allowed when disconnected from MPD server */ |         /* Commands allowed when disconnected from MPD server */ | ||||||
|         case MPD_API_SET_MPDHOST: |         case MPD_API_SET_MPDHOST: | ||||||
| @@ -550,6 +555,32 @@ int mpd_put_outputs(char *buffer, int names) { | |||||||
|     return str - buffer; |     return str - buffer; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | int mpd_put_channels(char *buffer) { | ||||||
|  |     struct mpd_pair *channel; | ||||||
|  |     int nchan; | ||||||
|  |     char *str, *strend; | ||||||
|  |  | ||||||
|  |     str = buffer; | ||||||
|  |     strend = buffer + MAX_SIZE; | ||||||
|  |     str += snprintf(str, strend - str, "{\"type\":\"%s\", \"data\":{", "channels"); | ||||||
|  |  | ||||||
|  |     mpd_send_channels(mpd.conn); | ||||||
|  |     nchan = 0; | ||||||
|  |     while ((channel = mpd_recv_channel_pair(mpd.conn)) != NULL) { | ||||||
|  |         if (nchan++) | ||||||
|  |             *str++ = ','; | ||||||
|  |         str += snprintf(str, strend - str, " \"%d\":\"%s\"", nchan, channel->value); | ||||||
|  |         mpd_return_pair(mpd.conn, channel); | ||||||
|  |     } | ||||||
|  |     if (!mpd_response_finish(mpd.conn)) { | ||||||
|  |         fprintf(stderr, "MPD outputs: %s\n", mpd_connection_get_error_message(mpd.conn)); | ||||||
|  |         mpd_connection_clear_error(mpd.conn); | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
|  |     str += snprintf(str, strend - str, " }}"); | ||||||
|  |     return str - buffer; | ||||||
|  | } | ||||||
|  |  | ||||||
| int mpd_put_current_song(char *buffer) { | int mpd_put_current_song(char *buffer) { | ||||||
|     char *cur = buffer; |     char *cur = buffer; | ||||||
|     const char *end = buffer + MAX_SIZE; |     const char *end = buffer + MAX_SIZE; | ||||||
|   | |||||||
| @@ -50,6 +50,7 @@ | |||||||
|     X(MPD_API_RM_ALL)           \ |     X(MPD_API_RM_ALL)           \ | ||||||
|     X(MPD_API_MOVE_TRACK)       \ |     X(MPD_API_MOVE_TRACK)       \ | ||||||
|     X(MPD_API_SEARCH)           \ |     X(MPD_API_SEARCH)           \ | ||||||
|  |     X(MPD_API_GET_CHANNELS)     \ | ||||||
|     X(MPD_API_SEND_MESSAGE)     \ |     X(MPD_API_SEND_MESSAGE)     \ | ||||||
|     X(MPD_API_SET_VOLUME)       \ |     X(MPD_API_SET_VOLUME)       \ | ||||||
|     X(MPD_API_SET_PAUSE)        \ |     X(MPD_API_SET_PAUSE)        \ | ||||||
| @@ -109,6 +110,7 @@ int callback_mpd(struct mg_connection *c); | |||||||
| int mpd_close_handler(struct mg_connection *c); | int mpd_close_handler(struct mg_connection *c); | ||||||
| int mpd_put_state(char *buffer, int *current_song_id, unsigned *queue_version); | int mpd_put_state(char *buffer, int *current_song_id, unsigned *queue_version); | ||||||
| int mpd_put_outputs(char *buffer, int putnames); | int mpd_put_outputs(char *buffer, int putnames); | ||||||
|  | int mpd_put_channels(char *buffer); | ||||||
| int mpd_put_current_song(char *buffer); | int mpd_put_current_song(char *buffer); | ||||||
| int mpd_put_queue(char *buffer, unsigned int offset); | int mpd_put_queue(char *buffer, unsigned int offset); | ||||||
| int mpd_put_browse(char *buffer, char *path, unsigned int offset); | int mpd_put_browse(char *buffer, char *path, unsigned int offset); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 SuperBFG7
					SuperBFG7