Cache clear hooks, track length update fix
This commit is contained in:
		
							parent
							
								
									549e27e0df
								
							
						
					
					
						commit
						94ae2ff3b0
					
				@ -91,9 +91,9 @@ class window.Player
 | 
			
		||||
    _vk_music.search track.artist, track.name, track.length, (audio) ->
 | 
			
		||||
      if audio is null
 | 
			
		||||
        _session.query '/track/report', { id: track.id }, (r) ->
 | 
			
		||||
          if r.status is 'success'
 | 
			
		||||
            $('.playlist li[data-id="'+track.id+'"]').addClass("unavailable")
 | 
			
		||||
            $($('.album div[data-id="'+track.id+'"]').siblings()[0]).addClass("unavailable")
 | 
			
		||||
          if r.result is 'success'
 | 
			
		||||
            $(".playlist li[data-id='#{track.id}']").addClass("unavailable")
 | 
			
		||||
            $($(".album div[data-id='#{track.id}']").siblings()[0]).addClass("unavailable")
 | 
			
		||||
        _player.setTrack _player.nextTrack()
 | 
			
		||||
      else
 | 
			
		||||
        _player.playSource audio.url
 | 
			
		||||
@ -103,18 +103,15 @@ class window.Player
 | 
			
		||||
          s = len - Math.floor(len / 60) * 60
 | 
			
		||||
          duration = m + ':' + (if s < 10 then '0' else '') + s
 | 
			
		||||
          _session.query '/track/update_length', { track_id: track.id, length: len }, (r) ->
 | 
			
		||||
            if r.status is 'success'
 | 
			
		||||
              $('.playlist li[data-id="'+track.id+'"] .song-duration').text(duration)
 | 
			
		||||
              $($('.album div[data-id="'+track.id+'"]').siblings()[0]).text(duration)
 | 
			
		||||
            if r.result is 'success'
 | 
			
		||||
              $(".playlist li[data-id='#{track.id}'] .song-duration").text(duration)
 | 
			
		||||
              $($(".album div[data-id='#{track.id}']").siblings()[0]).text(duration)
 | 
			
		||||
        _player.updateNowListening track
 | 
			
		||||
      false
 | 
			
		||||
    false
 | 
			
		||||
  
 | 
			
		||||
  getTrackInfo: (id) ->
 | 
			
		||||
    for track in _player.playlist
 | 
			
		||||
      if parseInt(track.id, 10) == parseInt(id, 10)
 | 
			
		||||
        return track
 | 
			
		||||
    false
 | 
			
		||||
    @library[id]
 | 
			
		||||
  
 | 
			
		||||
  getAlbumInfo: (id) ->
 | 
			
		||||
    for album in _player.albums
 | 
			
		||||
 | 
			
		||||
@ -59,7 +59,7 @@ class window.VkontakteMusic
 | 
			
		||||
    data
 | 
			
		||||
  
 | 
			
		||||
  prepareQuery: (artist, track) ->
 | 
			
		||||
    artist+" "+this.trim(/[\w\d\s]+/.exec(track)[0]).replace(/\(.*\)/i, '').split('/')[0]
 | 
			
		||||
    artist+" "+this.trim(/[a-zA-Zа-яА-Я0-9\s-]+/.exec(track)[0]).replace(/\(.*\)/i, '').split('/')[0]
 | 
			
		||||
  
 | 
			
		||||
  trim: (str) ->
 | 
			
		||||
    while str.indexOf('  ') isnt -1
 | 
			
		||||
 | 
			
		||||
@ -32,7 +32,7 @@ class ArtistController < ApplicationController
 | 
			
		||||
      title: @artist.name,
 | 
			
		||||
      status: @artist.status_str,
 | 
			
		||||
      callback: {object: :player, action: :updateLibrary},
 | 
			
		||||
      cache_for: 1.day
 | 
			
		||||
      cache_for: (1.day if @artist.status_str == "ok")
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,7 @@ class Album < ActiveRecord::Base
 | 
			
		||||
  has_many :release_formats, :through => :album_formats
 | 
			
		||||
  
 | 
			
		||||
  default_scope where(:master => true)
 | 
			
		||||
  after_save :clear_artist_cache
 | 
			
		||||
  
 | 
			
		||||
  def self.with_format f
 | 
			
		||||
    joins(:release_formats).where(:release_formats => { :hash => f.to_s })
 | 
			
		||||
@ -18,4 +19,10 @@ class Album < ActiveRecord::Base
 | 
			
		||||
      tracks: tracks.map(&:serialize)
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
private
 | 
			
		||||
 | 
			
		||||
  def clear_artist_cache
 | 
			
		||||
    artist.clear_cache
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ class Artist < ActiveRecord::Base
 | 
			
		||||
  has_many :playlists
 | 
			
		||||
  
 | 
			
		||||
  after_initialize :prepare_description
 | 
			
		||||
  after_save :clear_cache
 | 
			
		||||
  
 | 
			
		||||
  def status_str
 | 
			
		||||
    %w(loading ok fail)[self.status]
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,8 @@ class Track < ActiveRecord::Base
 | 
			
		||||
  has_many :artists, :through => :track_artists
 | 
			
		||||
  has_many :playlist_items
 | 
			
		||||
  
 | 
			
		||||
  after_save :clear_artist_cache
 | 
			
		||||
  
 | 
			
		||||
  def duration
 | 
			
		||||
    if self.length
 | 
			
		||||
      time = self.length
 | 
			
		||||
@ -28,4 +30,10 @@ class Track < ActiveRecord::Base
 | 
			
		||||
      album_pic: album.pic_url
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
private
 | 
			
		||||
 | 
			
		||||
  def clear_artist_cache
 | 
			
		||||
    artists.each(&:clear_cache)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -155,7 +155,7 @@ class Discogs
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    ap albums
 | 
			
		||||
    albums
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def self.search_for_artist name
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user