diff --git a/db/manifest b/db/manifest
index 9407c2a3f..4ec0efd8d 100755
--- a/db/manifest
+++ b/db/manifest
@@ -215,5 +215,7 @@ fix_find_session_sorting_2216b.sql
fix_find_session_sorting_2216c.sql
entabulate_current_network_scores.sql
discard_scores_changed.sql
+emails_from_update.sql
+add_active_feed.sql
video_sources.sql
recorded_videos.sql
diff --git a/db/up/add_active_feed.sql b/db/up/add_active_feed.sql
new file mode 100644
index 000000000..725b36ec6
--- /dev/null
+++ b/db/up/add_active_feed.sql
@@ -0,0 +1 @@
+alter table feeds add column active BOOLEAN DEFAULT FALSE;
\ No newline at end of file
diff --git a/db/up/emails_from_update.sql b/db/up/emails_from_update.sql
new file mode 100644
index 000000000..a06e645ec
--- /dev/null
+++ b/db/up/emails_from_update.sql
@@ -0,0 +1,2 @@
+ALTER TABLE email_batches ALTER from_email SET DEFAULT 'JamKazam ';
+
diff --git a/ruby/Gemfile b/ruby/Gemfile
index 8352f613f..8457d4649 100644
--- a/ruby/Gemfile
+++ b/ruby/Gemfile
@@ -31,7 +31,7 @@ gem 'sendgrid', '1.2.0'
gem 'aws-sdk' #, '1.29.1'
gem 'carrierwave', '0.9.0'
gem 'aasm', '3.0.16'
-gem 'devise', '>= 1.1.2'
+gem 'devise', '3.3.0' # 3.4.0 causes: uninitialized constant ActionController::Metal (NameError)
gem 'postgres-copy'
gem 'geokit'
gem 'geokit-rails'
diff --git a/ruby/lib/jam_ruby/app/mailers/corp_mailer.rb b/ruby/lib/jam_ruby/app/mailers/corp_mailer.rb
index 0c829c149..1c9239c8b 100644
--- a/ruby/lib/jam_ruby/app/mailers/corp_mailer.rb
+++ b/ruby/lib/jam_ruby/app/mailers/corp_mailer.rb
@@ -11,7 +11,7 @@ module JamRuby
layout "user_mailer"
- DEFAULT_SENDER = "noreply@jamkazam.com"
+ DEFAULT_SENDER = "JamKazam "
default :from => DEFAULT_SENDER
diff --git a/ruby/lib/jam_ruby/app/mailers/invited_user_mailer.rb b/ruby/lib/jam_ruby/app/mailers/invited_user_mailer.rb
index e01846424..ed772126b 100644
--- a/ruby/lib/jam_ruby/app/mailers/invited_user_mailer.rb
+++ b/ruby/lib/jam_ruby/app/mailers/invited_user_mailer.rb
@@ -9,7 +9,7 @@ module JamRuby
class InvitedUserMailer < ActionMailer::Base
include SendGrid
- DEFAULT_SENDER = "noreply@jamkazam.com"
+ DEFAULT_SENDER = "JamKazam "
default :from => DEFAULT_SENDER
diff --git a/ruby/lib/jam_ruby/app/mailers/user_mailer.rb b/ruby/lib/jam_ruby/app/mailers/user_mailer.rb
index dc1cc3a8d..ccc0cf52c 100644
--- a/ruby/lib/jam_ruby/app/mailers/user_mailer.rb
+++ b/ruby/lib/jam_ruby/app/mailers/user_mailer.rb
@@ -11,7 +11,7 @@
layout "user_mailer"
- DEFAULT_SENDER = "noreply@jamkazam.com"
+ DEFAULT_SENDER = "JamKazam "
default :from => DEFAULT_SENDER
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/gear_notsess.html.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/gear_notsess.html.erb
index 43be52177..75b82aa15 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/gear_notsess.html.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/gear_notsess.html.erb
@@ -10,7 +10,7 @@
It’s still very early in our company’s development, so we don’t have zillions of users online on our service yet. If you click Find Session, you will often not find a good session to join, both due to the number of musicians online at any given time, and also because you won’t see private sessions where groups of musicians don’t want to be interrupted in their sessions.
-If you are having trouble getting into sessions, we’d suggest you click the Musicians tile on the home screen of the app or the website: Go To Musicians Page
+
If you are having trouble getting into sessions, we’d suggest you click the Musicians tile on the home screen of the app or the website: Go To Musicians Page
This will display the JamKazam musicians sorted by latency to you - in other words, you can see which musicians have good network connections to you. Any musicians with green and yellow latency scores have good enough connections to support a play session with you. We recommend that read the profiles of these musicians to find others with shared musical interests and good network connections to you, and then use the Message button to say hi and see if they are interested in playing with you. If they are, use the Connect button to “friend” them on JamKazam, and use the Message button to set up a time to meet online for a session.
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/reg_notconnect.html.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/reg_notconnect.html.erb
index 10eeeb0da..59254f3ab 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/reg_notconnect.html.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/progress_mailer/reg_notconnect.html.erb
@@ -7,7 +7,7 @@
Find Other Musicians on JamKazam
-To find and connect with other musicians who are already on JamKazam, we’d suggest you click the Musicians tile on the home screen of the app or the website: Go To Musicians Page
+To find and connect with other musicians who are already on JamKazam, we’d suggest you click the Musicians tile on the home screen of the app or the website: Go To Musicians Page
This will display the JamKazam musicians sorted by latency to you - in other words, you can see which musicians have good network connections to you. Any musicians with green and yellow latency scores have good enough connections to support a play session with you. We recommend that you read the profiles of these musicians to find others with shared musical interests and good network connections to you, and then use the Message button to say hi and see if they are interested in playing with you. If they are, use the Connect button to “friend” them on JamKazam, and use the Message button to set up a time to meet online for a session.
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/friend_request.html.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/friend_request.html.erb
index 81de23226..56b9c3623 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/friend_request.html.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/friend_request.html.erb
@@ -2,4 +2,4 @@
<%= @body %>
-To accept this friend request, click here.
\ No newline at end of file
+To accept this friend request, click here.
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/new_musicians.html.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/new_musicians.html.erb
index 8551c23df..bf5f12c0e 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/new_musicians.html.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/new_musicians.html.erb
@@ -24,7 +24,7 @@ Hi <%= @user.first_name %>,
<% end %>
-There are currently <%= @new_musicians.size%> musicians on JamKazam with low enough latency Internet connections to you to support a good online session. To see ALL the JamKazam musicians with whom you may want to connect and play, view our Musicians page at: http://www.jamkazam.com/client#/musicians.
+
There are currently <%= @new_musicians.size%> musicians on JamKazam with low enough latency Internet connections to you to support a good online session. To see ALL the JamKazam musicians with whom you may want to connect and play, view our Musicians page at: http://www.jamkazam.com/client#/musicians.
Best Regards,
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/password_reset.text.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/password_reset.text.erb
index 4cbcc6646..7f4ae462d 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/password_reset.text.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/password_reset.text.erb
@@ -1 +1 @@
-Visit this link so that you can change your JamKazam password: Reset Password.
\ No newline at end of file
+Visit this link so that you can change your JamKazam password: <%= @password_reset_url %>..
\ No newline at end of file
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/scheduled_session_daily.html.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/scheduled_session_daily.html.erb
index 221c06839..5fb602b24 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/scheduled_session_daily.html.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/scheduled_session_daily.html.erb
@@ -68,7 +68,7 @@
<%= sess.genre.description %> |
<%= sess.name %>
- ">Details
+ ">Details
|
<%= sess.description %> |
@@ -86,7 +86,7 @@
- To see ALL the scheduled sessions that you might be interested in joining, view our Find Session page.
+To see ALL the scheduled sessions that you might be interested in joining, view our Find Session page.
Best Regards,
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/text_message.html.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/text_message.html.erb
index e18666bf3..cb083ca1b 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/text_message.html.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/text_message.html.erb
@@ -4,5 +4,5 @@
<% content_for :note do %>
<%= @note %>
- To reply to this message, click here.
-<% end %>
\ No newline at end of file
+ To reply to this message, click here.
+<% end %>
diff --git a/ruby/lib/jam_ruby/models/email_batch.rb b/ruby/lib/jam_ruby/models/email_batch.rb
index 06a248300..5fcc93543 100644
--- a/ruby/lib/jam_ruby/models/email_batch.rb
+++ b/ruby/lib/jam_ruby/models/email_batch.rb
@@ -12,7 +12,7 @@ module JamRuby
VAR_FIRST_NAME = '@FIRSTNAME'
VAR_LAST_NAME = '@LASTNAME'
- DEFAULT_SENDER = "noreply@jamkazam.com"
+ DEFAULT_SENDER = "JamKazam "
BATCH_SIZE = 500
BODY_TEMPLATE =< 'plays')
feeds.length.should == 4
- feeds[0].recording.should == claimed_recording2.recording
- feeds[1].recording.should == claimed_recording1.recording
+ feeds[2].recording.should == claimed_recording2.recording
+ feeds[3].recording.should == claimed_recording1.recording
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user1)
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user2)
@@ -88,11 +88,11 @@ describe Feed do
feeds, start = Feed.index(user1, :sort => 'plays')
feeds.length.should == 4
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
- feeds[1].recording.should == claimed_recording2.recording
- feeds[2].recording.should == claimed_recording1.recording
+ feeds[2].recording.should == claimed_recording2.recording
+ feeds[3].recording.should == claimed_recording1.recording
end
- it "sort by likes DESC" do
+ it "sort by active flag / likes DESC" do
claimed_recording1 = FactoryGirl.create(:claimed_recording)
claimed_recording2 = FactoryGirl.create(:claimed_recording)
@@ -106,6 +106,7 @@ describe Feed do
feeds, start = Feed.index(user1, :sort => 'likes')
feeds.length.should == 4
+ feeds = feeds.where("feeds.music_session_id is null")
feeds[0].recording.should == claimed_recording2.recording
feeds[1].recording.should == claimed_recording1.recording
@@ -116,8 +117,8 @@ describe Feed do
feeds, start = Feed.index(user1, :sort => 'likes')
feeds.length.should == 4
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
- feeds[1].recording.should == claimed_recording2.recording
- feeds[2].recording.should == claimed_recording1.recording
+ feeds[2].recording.should == claimed_recording2.recording
+ feeds[3].recording.should == claimed_recording1.recording
end
end
@@ -195,6 +196,8 @@ describe Feed do
it "supports date pagination" do
claimed_recording = FactoryGirl.create(:claimed_recording)
+ MusicSession.removed_music_session(claimed_recording.recording.music_session.music_session.id)
+
options = {limit: 1}
feeds, start = Feed.index(user1, options)
feeds.length.should == 1
diff --git a/web/Gemfile b/web/Gemfile
index ad080e413..c97941bd1 100644
--- a/web/Gemfile
+++ b/web/Gemfile
@@ -18,7 +18,7 @@ else
gem 'jam_websockets', "0.1.#{ENV["BUILD_NUMBER"]}"
ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] ||= "true"
end
-gem 'oj'
+gem 'oj', '2.10.2'
gem 'builder'
gem 'rails', '~>3.2.11'
gem 'railties', '~>3.2.11'
@@ -55,7 +55,7 @@ gem 'carrierwave_direct'
gem 'fog'
gem 'haml-rails'
gem 'unf' #optional fog dependency
-gem 'devise', '>= 1.1.2'
+gem 'devise', '3.3.0' #3.4.0 causes uninitialized constant ActionController::Metal (NameError)
gem 'postgres-copy'
#group :libv8 do
# gem 'libv8', "~> 3.11.8"
diff --git a/web/app/assets/javascripts/accounts_session_detail.js b/web/app/assets/javascripts/accounts_session_detail.js
index 65ec07db8..a93d0b1c7 100644
--- a/web/app/assets/javascripts/accounts_session_detail.js
+++ b/web/app/assets/javascripts/accounts_session_detail.js
@@ -101,7 +101,18 @@
rest.updateRsvpRequest(rsvpId, params)
.done(refreshSessionDetail)
- .fail(app.ajaxError);
+ .fail(function(jqXHR, textStatus, errorMessage) {
+ if (jqXHR.status === 400) {
+ app.notify(
+ {
+ title: "Unable to Approve RSVP",
+ text: jqXHR.responseJSON.message
+ });
+ }
+ else {
+ app.ajaxError(jqXHR, textStatus, errorMessage);
+ }
+ });
}
function declineRsvpRequest(e) {
@@ -130,6 +141,11 @@
rsvpCancelDlg.initialize();
context.JK.app.layout.showDialog('rsvp-cancel-dialog');
});
+
+ context.JK.bindHoverEvents();
+ // context.JK.bindInstrumentHover($('#pendingRSVPs'));
+ // context.JK.bindInstrumentHover($('#session-rsvps'));
+ // context.JK.bindInstrumentHover($('#still-needed'));
}
function loadSessionData() {
@@ -241,7 +257,7 @@
$.each(pending_rsvp_request.instrument_list, function (index, instrument) {
var instrumentId = instrument == null ? null : instrument.id;
var inst = context.JK.getInstrumentIcon24(instrumentId);
- instrumentLogoHtml += ' ';
+ instrumentLogoHtml += ' ';
})
}
@@ -279,7 +295,7 @@
$.each(approved_rsvp.instrument_list, function(index, instrument) {
var instrumentId = instrument == null ? null : instrument.id;
var inst = context.JK.getInstrumentIcon24(instrumentId);
- instrumentLogoHtml += ' ';
+ instrumentLogoHtml += ' ';
});
}
@@ -344,7 +360,7 @@
resultHtml += context._.template(
$("#template-account-invited").html(),
- {avatar_url: avatar_url, user_id: invitation.reciever_id},
+ {avatar_url: avatar_url, user_id: invitation.receiver_id},
{variable: 'data'}
);
});
diff --git a/web/app/assets/javascripts/findSession.js b/web/app/assets/javascripts/findSession.js
index df765fb3a..98db4761f 100644
--- a/web/app/assets/javascripts/findSession.js
+++ b/web/app/assets/javascripts/findSession.js
@@ -85,6 +85,9 @@
context.JK.bindHoverEvents();
$ssSpinner.hide();
});
+
+ // context.JK.bindInstrumentHover($(CATEGORY.ACTIVE.id));
+ // context.JK.bindInstrumentHover($(CATEGORY.SCHEDULED.id));
}
/***************** ACTIVE SESSIONS *****************/
diff --git a/web/app/assets/javascripts/jamkazam.js b/web/app/assets/javascripts/jamkazam.js
index 08d79d34a..d8fb6e4aa 100644
--- a/web/app/assets/javascripts/jamkazam.js
+++ b/web/app/assets/javascripts/jamkazam.js
@@ -123,11 +123,11 @@
*/
function ajaxError(jqXHR, textStatus, errorMessage) {
- if (jqXHR.status == 404) {
+ if (jqXHR.status === 404) {
logger.error("Unexpected ajax error: " + textStatus + ", msg:" + errorMessage);
app.notify({title: "Oops!", text: "What you were looking for is gone now."});
}
- else if (jqXHR.status = 422) {
+ else if (jqXHR.status === 422) {
logger.error("Unexpected ajax error: " + textStatus + ", msg: " + errorMessage + ", response: " + jqXHR.responseText);
// present a nicer message
try {
diff --git a/web/app/assets/javascripts/sessionList.js b/web/app/assets/javascripts/sessionList.js
index 06d26efa6..d58218dbf 100644
--- a/web/app/assets/javascripts/sessionList.js
+++ b/web/app/assets/javascripts/sessionList.js
@@ -369,7 +369,7 @@
var track = participant.tracks[j];
logger.debug("Find:Finding instruments. Participant tracks:", participant.tracks);
var inst = context.JK.getInstrumentIcon24(track.instrument_id);
- instrumentLogoHtml += ' ';
+ instrumentLogoHtml += ' ';
}
var id = participant.user.id;
@@ -400,7 +400,7 @@
for (j=0; j < user.instrument_list.length; j++) {
var instrument = user.instrument_list[j];
var inst = context.JK.getInstrumentIcon24(instrument.id);
- instrumentLogoHtml += ' ';
+ instrumentLogoHtml += ' ';
}
}
diff --git a/web/app/assets/javascripts/utils.js b/web/app/assets/javascripts/utils.js
index 904b12084..2afdd2f53 100644
--- a/web/app/assets/javascripts/utils.js
+++ b/web/app/assets/javascripts/utils.js
@@ -232,6 +232,24 @@
});
}
+ context.JK.bindInstrumentHover = function($parent, options) {
+ context._.each($parent.find("[hoveraction='instrument']"), function(element) {
+ var $element = $(element);
+
+ var instrumentId = $element.attr('data-instrument-id');
+
+ if(instrumentId) {
+ if (instrumentId === "null") {
+ instrumentId = "not specified";
+ }
+ context.JK.hoverBubble($element, instrumentId, options);
+ }
+ else {
+ logger.warn("no instrument-id on hoveraction=instrument element")
+ }
+ });
+ }
+
context.JK.bindHoverEvents = function ($parent) {
var timeout = 300;
var fadeoutValue = 100;
diff --git a/web/app/assets/stylesheets/client/account.css.scss b/web/app/assets/stylesheets/client/account.css.scss
index 4717dc86d..81d700c12 100644
--- a/web/app/assets/stylesheets/client/account.css.scss
+++ b/web/app/assets/stylesheets/client/account.css.scss
@@ -325,7 +325,6 @@
}
td.rsvp-buttons {
float:right;
- width:242px;
text-align:right;
}
diff --git a/web/app/assets/stylesheets/dialogs/base_dialog.css.scss b/web/app/assets/stylesheets/dialogs/base_dialog.css.scss
index a4d5e964c..4a183d9d3 100644
--- a/web/app/assets/stylesheets/dialogs/base_dialog.css.scss
+++ b/web/app/assets/stylesheets/dialogs/base_dialog.css.scss
@@ -6,7 +6,6 @@
border: 1px solid $ColorScreenPrimary;
color: #fff;
min-width: 400px;
- min-height: 375px;
z-index: 100;
h2 {
diff --git a/web/app/views/clients/_account_session_detail.html.haml b/web/app/views/clients/_account_session_detail.html.haml
index 396dd2c24..28fc61218 100644
--- a/web/app/views/clients/_account_session_detail.html.haml
+++ b/web/app/views/clients/_account_session_detail.html.haml
@@ -85,7 +85,7 @@
%script{type: 'text/template', id: 'template-account-pending-rsvp'}
%tr
%td.avatar-cell
- %a{href: "#", 'user-id' => "{{data.user_id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
+ %a{href: "/client#/profile/{{data.user_id}}", 'user-id' => "{{data.user_id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
%img{src: "{{data.avatar_url}}"}
%td
{{data.user_name}}
@@ -103,7 +103,7 @@
%script{type: 'text/template', id: 'template-account-session-rsvp'}
%tr
%td.avatar-cell
- %a{href: "#", 'user-id' => "{{data.user_id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
+ %a{href: "/client#/profile/{{data.id}}", 'user-id' => "{{data.id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
%img{src: "{{data.avatar_url}}"}
%td
{{data.user_name}}
diff --git a/web/spec/controllers/api_feeds_controller_spec.rb b/web/spec/controllers/api_feeds_controller_spec.rb
index e6b73e23f..2437e5d14 100644
--- a/web/spec/controllers/api_feeds_controller_spec.rb
+++ b/web/spec/controllers/api_feeds_controller_spec.rb
@@ -94,6 +94,8 @@ describe ApiFeedsController do
claimed_recording.recording.created_at = 3.days.ago
claimed_recording.recording.save!
+ MusicSession.removed_music_session(claimed_recording.recording.music_session.music_session.id)
+
get :index, { limit: 1 }
json = JSON.parse(response.body, :symbolize_names => true)
json[:entries].length.should == 1
diff --git a/websocket-gateway/Gemfile b/websocket-gateway/Gemfile
index b0f63d310..06d45c942 100644
--- a/websocket-gateway/Gemfile
+++ b/websocket-gateway/Gemfile
@@ -34,7 +34,7 @@ gem 'rb-readline'
gem 'aasm', '3.0.16'
gem 'carrierwave'
gem 'fog'
-gem 'devise'
+gem 'devise', '3.3.0' # 3.4.0 causes uninitialized constant ActionController::Metal (NameError)
gem 'postgres-copy'
gem 'aws-sdk' #, '1.29.1'
gem 'bugsnag'
|