VRFS-1020 share dialog work
This commit is contained in:
parent
42930fe95e
commit
edebf42e73
|
|
@ -95,4 +95,5 @@ ms_recording_anonymous_likes.sql
|
|||
ms_user_history_add_instruments.sql
|
||||
icecast_config_changed.sql
|
||||
invited_users_facebook_support.sql
|
||||
first_recording_at.sql
|
||||
first_recording_at.sql
|
||||
share_token.sql
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
alter table music_sessions_history add column share_token varchar(15);
|
||||
alter table claimed_recordings add column share_token varchar(15);
|
||||
|
|
@ -15,6 +15,10 @@ module JamRuby
|
|||
has_many :recorded_tracks, :through => :recording, :class_name => "JamRuby::RecordedTrack"
|
||||
has_many :playing_sessions, :class_name => "JamRuby::MusicSession"
|
||||
|
||||
before_create :generate_share_token
|
||||
|
||||
SHARE_TOKEN_LENGTH = 8
|
||||
|
||||
# user must own this object
|
||||
# params is a hash, and everything is optional
|
||||
def update_fields(user, params)
|
||||
|
|
@ -42,5 +46,14 @@ module JamRuby
|
|||
self.destroy
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def generate_share_token
|
||||
self.share_token = loop do
|
||||
token = SecureRandom.urlsafe_base64(SHARE_TOKEN_LENGTH, false)
|
||||
token.gsub!(/[^0-9A-Za-z]/, '').upcase!
|
||||
break token unless MusicSessionHistory.exists?(share_token: token)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ module JamRuby
|
|||
belongs_to :claimed_recording, :class_name => "JamRuby::ClaimedRecording", :foreign_key => "claimed_recording_id", :inverse_of => :playing_sessions
|
||||
belongs_to :claimed_recording_initiator, :class_name => "JamRuby::User", :inverse_of => :playing_claimed_recordings, :foreign_key => "claimed_recording_initiator_id"
|
||||
|
||||
has_one :music_session_history, :class_name => "JamRuby::MusicSessionHistory"
|
||||
has_one :mount, :class_name => "JamRuby::IcecastMount", :inverse_of => :music_session, :foreign_key => 'music_session_id'
|
||||
|
||||
has_many :connections, :class_name => "JamRuby::Connection"
|
||||
|
|
|
|||
|
|
@ -15,10 +15,18 @@ module JamRuby
|
|||
:foreign_key => :band_id,
|
||||
:inverse_of => :music_session_history)
|
||||
|
||||
belongs_to(:music_session,
|
||||
:class_name => 'JamRuby::MusicSession',
|
||||
:foreign_key => 'music_session_id')
|
||||
|
||||
has_many :music_session_user_histories, :class_name => "JamRuby::MusicSessionUserHistory", :foreign_key => "music_session_id"
|
||||
has_many :comments, :class_name => "JamRuby::MusicSessionComment", :foreign_key => "music_session_id"
|
||||
has_many :likes, :class_name => "JamRuby::MusicSessionLiker", :foreign_key => "music_session_id"
|
||||
|
||||
before_create :generate_share_token
|
||||
|
||||
SHARE_TOKEN_LENGTH = 8
|
||||
|
||||
SEPARATOR = '|'
|
||||
|
||||
def comment_count
|
||||
|
|
@ -79,11 +87,33 @@ module JamRuby
|
|||
.where(%Q{ music_sessions_user_history.music_session_id = '#{music_session_id}'})
|
||||
end
|
||||
|
||||
def duration_minutes
|
||||
end_time = self.session_removed_at || Time.now
|
||||
(end_time - self.created_at) / 60.0
|
||||
end
|
||||
|
||||
def music_session_user_histories
|
||||
@msuh ||= JamRuby::MusicSessionUserHistory
|
||||
.where(:music_session_id => self.music_session_id)
|
||||
.order('created_at DESC')
|
||||
end
|
||||
|
||||
def comments
|
||||
@comments ||= JamRuby::MusicSessionComment
|
||||
.where(:music_session_id => self.music_session_id)
|
||||
.order('created_at DESC')
|
||||
end
|
||||
|
||||
def likes
|
||||
@likes ||= JamRuby::MusicSessionLiker
|
||||
.where(:music_session_id => self.music_session_id)
|
||||
end
|
||||
|
||||
def self.save(music_session)
|
||||
session_history = MusicSessionHistory.find_by_music_session_id(music_session.id)
|
||||
|
||||
if session_history.nil?
|
||||
session_history = MusicSessionHistory.new()
|
||||
session_history = MusicSessionHistory.new
|
||||
end
|
||||
|
||||
session_history.music_session_id = music_session.id
|
||||
|
|
@ -119,26 +149,13 @@ module JamRuby
|
|||
hist.end_history if hist
|
||||
end
|
||||
|
||||
def duration_minutes
|
||||
end_time = self.session_removed_at || Time.now
|
||||
(end_time - self.created_at) / 60.0
|
||||
end
|
||||
|
||||
def music_session_user_histories
|
||||
@msuh ||= JamRuby::MusicSessionUserHistory
|
||||
.where(:music_session_id => self.music_session_id)
|
||||
.order('created_at DESC')
|
||||
end
|
||||
|
||||
def comments
|
||||
@comments ||= JamRuby::MusicSessionComment
|
||||
.where(:music_session_id => self.music_session_id)
|
||||
.order('created_at DESC')
|
||||
end
|
||||
|
||||
def likes
|
||||
@likes ||= JamRuby::MusicSessionLiker
|
||||
.where(:music_session_id => self.music_session_id)
|
||||
private
|
||||
def generate_share_token
|
||||
self.share_token = loop do
|
||||
token = SecureRandom.urlsafe_base64(SHARE_TOKEN_LENGTH, false)
|
||||
token.gsub!(/[^0-9A-Za-z]/, '').upcase!
|
||||
break token unless MusicSessionHistory.exists?(share_token: token)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,15 @@ body.widgets {
|
|||
padding:20px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size:20px;
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
.share-overlay {
|
||||
|
||||
}
|
||||
|
||||
.widget {
|
||||
width:430px;
|
||||
height:180px;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#profile {
|
||||
float: right;
|
||||
height: 54px;
|
||||
margin-top: 30px;
|
||||
text-align: right;
|
||||
|
||||
ul {
|
||||
|
|
|
|||
|
|
@ -292,6 +292,10 @@ class ApiMusicSessionsController < ApiController
|
|||
end
|
||||
end
|
||||
|
||||
def history_show
|
||||
@history = MusicSessionHistory.find_by_music_session_id(params[:id])
|
||||
end
|
||||
|
||||
def claimed_recording_start
|
||||
@music_session.claimed_recording_start(current_user, ClaimedRecording.find(params[:claimed_recording_id]))
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
object @history
|
||||
|
||||
attributes :music_session_id, :description, :genres
|
||||
|
||||
child(:user => :creator) {
|
||||
attributes :name, :photo_url
|
||||
}
|
||||
|
||||
child(:band => :band) {
|
||||
attributes :name, :photo_url
|
||||
}
|
||||
|
||||
child(:music_session_user_histories => :users) {
|
||||
attributes :instruments
|
||||
|
||||
child(:user => :user) {
|
||||
attributes :name, :photo_url
|
||||
}
|
||||
}
|
||||
|
|
@ -73,4 +73,4 @@ child({:mount => :mount}, :if => lambda { |music_session| music_session.fan_acce
|
|||
node(:mime_type) { |mount| mount.resolve_string(:mime_type) }
|
||||
node(:bitrate) { |mount| mount.resolve_string(:bitrate) }
|
||||
node(:subtype) { |mount| mount.resolve_string(:subtype) }
|
||||
}
|
||||
}
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
<%= render "addNewGear" %>
|
||||
<%= render "error" %>
|
||||
<%= render "sessionSettings" %>
|
||||
<%= render :partial => "shareDialog", :locals => {} %>
|
||||
<%= render :partial => "shareDialog" %>
|
||||
|
||||
<!-- Track Template -->
|
||||
<script type="text/template" id="template-session-track">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<!-- Share dialog -->
|
||||
<div class="dialog" layout="dialog" layout-id="share-dialog" style="width:800px; height:auto;">
|
||||
<div class="dialog share-overlay" layout="dialog" layout-id="share-dialog" style="width:800px; height:auto;">
|
||||
<div class="content-head"><h1>share this session</h1></div>
|
||||
<div class="dialog-inner">
|
||||
<div class="right"> <a class="button-orange" layout-action="close">X CLOSE</a></div>
|
||||
|
|
@ -19,7 +19,8 @@
|
|||
</td>
|
||||
<td valign="top" width="48%">
|
||||
<div class="ml10">
|
||||
<h3>Share a Link:</h3><br />http://jamkazam.com/TD48JKZ1<br /><br />
|
||||
<h3>Share a Link:</h3><br />
|
||||
<%= "#{root_url}#{share_token}" %>
|
||||
<div class="right"><a class="button-orange">COPY LINK</a></div>
|
||||
</div>
|
||||
</td>
|
||||
|
|
@ -94,7 +95,7 @@
|
|||
<a href="javascript:void(0)" class="widget-playbutton" title="play"></a>
|
||||
<!-- song title -->
|
||||
<div class="widget-title">You Hurt Me Bad</div>
|
||||
<!-- band member avatars -->
|
||||
<!-- avatars -->
|
||||
<div class="widget-members">
|
||||
<div class="widget-avatar-small"><%= image_tag "shared/avatar_david.jpg", :alt => "" %></div>
|
||||
<div class="widget-avatar-small"><%= image_tag "shared/avatar_silverfox.jpg", :alt => "" %></div>
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
|
||||
<%= javascript_include_tag "web/sessions" %>
|
||||
|
||||
<%= render :partial => "clients/shareDialog", :locals => {:session => @music_session} %>
|
||||
<%= render :partial => "clients/shareDialog", :locals => {:session => @music_session, :share_token => @music_session.share_token} %>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@
|
|||
|
||||
<%= javascript_include_tag "web/recordings" %>
|
||||
|
||||
<%= render :partial => "clients/shareDialog", :locals => {:recording => @claimed_recording} %>
|
||||
<%= render :partial => "clients/shareDialog", :locals => {:recording => @claimed_recording, :share_token => @claimed_recording.share_token} %>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ SampleApp::Application.routes.draw do
|
|||
match '/sessions/:id/perf' => 'api_music_sessions#perf_upload', :via => :put
|
||||
match '/sessions/:id/comments' => 'api_music_sessions#add_comment', :via => :post
|
||||
match '/sessions/:id/likes' => 'api_music_sessions#add_like', :via => :post
|
||||
match '/sessions/:id/history' => 'api_music_sessions#history_show', :via => :get
|
||||
|
||||
# music session tracks
|
||||
match '/sessions/:id/tracks' => 'api_music_sessions#track_create', :via => :post
|
||||
|
|
|
|||
Loading…
Reference in New Issue