This commit is contained in:
Seth Call 2014-03-07 01:31:13 -06:00
commit adb37e06a6
10 changed files with 577 additions and 108 deletions

13
db/geodata/ca_region.csv Normal file
View File

@ -0,0 +1,13 @@
AB,Alberta
BC,British Columbia
MB,Manitoba
NB,New Brunswick
NL,Newfoundland and Labrador
NS,Nova Scotia
NT,Northwest Territories
NU,Nunavut
ON,Ontario
PE,Prince Edward Island
QC,Quebec
SK,Saskatchewan
YT,Yukon
1 AB Alberta
2 BC British Columbia
3 MB Manitoba
4 NB New Brunswick
5 NL Newfoundland and Labrador
6 NS Nova Scotia
7 NT Northwest Territories
8 NU Nunavut
9 ON Ontario
10 PE Prince Edward Island
11 QC Quebec
12 SK Saskatchewan
13 YT Yukon

254
db/geodata/iso3166.csv Normal file
View File

@ -0,0 +1,254 @@
A1,"Anonymous Proxy"
A2,"Satellite Provider"
O1,"Other Country"
AD,"Andorra"
AE,"United Arab Emirates"
AF,"Afghanistan"
AG,"Antigua and Barbuda"
AI,"Anguilla"
AL,"Albania"
AM,"Armenia"
AO,"Angola"
AP,"Asia/Pacific Region"
AQ,"Antarctica"
AR,"Argentina"
AS,"American Samoa"
AT,"Austria"
AU,"Australia"
AW,"Aruba"
AX,"Aland Islands"
AZ,"Azerbaijan"
BA,"Bosnia and Herzegovina"
BB,"Barbados"
BD,"Bangladesh"
BE,"Belgium"
BF,"Burkina Faso"
BG,"Bulgaria"
BH,"Bahrain"
BI,"Burundi"
BJ,"Benin"
BL,"Saint Bartelemey"
BM,"Bermuda"
BN,"Brunei Darussalam"
BO,"Bolivia"
BQ,"Bonaire, Saint Eustatius and Saba"
BR,"Brazil"
BS,"Bahamas"
BT,"Bhutan"
BV,"Bouvet Island"
BW,"Botswana"
BY,"Belarus"
BZ,"Belize"
CA,"Canada"
CC,"Cocos (Keeling) Islands"
CD,"Congo, The Democratic Republic of the"
CF,"Central African Republic"
CG,"Congo"
CH,"Switzerland"
CI,"Cote d'Ivoire"
CK,"Cook Islands"
CL,"Chile"
CM,"Cameroon"
CN,"China"
CO,"Colombia"
CR,"Costa Rica"
CU,"Cuba"
CV,"Cape Verde"
CW,"Curacao"
CX,"Christmas Island"
CY,"Cyprus"
CZ,"Czech Republic"
DE,"Germany"
DJ,"Djibouti"
DK,"Denmark"
DM,"Dominica"
DO,"Dominican Republic"
DZ,"Algeria"
EC,"Ecuador"
EE,"Estonia"
EG,"Egypt"
EH,"Western Sahara"
ER,"Eritrea"
ES,"Spain"
ET,"Ethiopia"
EU,"Europe"
FI,"Finland"
FJ,"Fiji"
FK,"Falkland Islands (Malvinas)"
FM,"Micronesia, Federated States of"
FO,"Faroe Islands"
FR,"France"
GA,"Gabon"
GB,"United Kingdom"
GD,"Grenada"
GE,"Georgia"
GF,"French Guiana"
GG,"Guernsey"
GH,"Ghana"
GI,"Gibraltar"
GL,"Greenland"
GM,"Gambia"
GN,"Guinea"
GP,"Guadeloupe"
GQ,"Equatorial Guinea"
GR,"Greece"
GS,"South Georgia and the South Sandwich Islands"
GT,"Guatemala"
GU,"Guam"
GW,"Guinea-Bissau"
GY,"Guyana"
HK,"Hong Kong"
HM,"Heard Island and McDonald Islands"
HN,"Honduras"
HR,"Croatia"
HT,"Haiti"
HU,"Hungary"
ID,"Indonesia"
IE,"Ireland"
IL,"Israel"
IM,"Isle of Man"
IN,"India"
IO,"British Indian Ocean Territory"
IQ,"Iraq"
IR,"Iran, Islamic Republic of"
IS,"Iceland"
IT,"Italy"
JE,"Jersey"
JM,"Jamaica"
JO,"Jordan"
JP,"Japan"
KE,"Kenya"
KG,"Kyrgyzstan"
KH,"Cambodia"
KI,"Kiribati"
KM,"Comoros"
KN,"Saint Kitts and Nevis"
KP,"Korea, Democratic People's Republic of"
KR,"Korea, Republic of"
KW,"Kuwait"
KY,"Cayman Islands"
KZ,"Kazakhstan"
LA,"Lao People's Democratic Republic"
LB,"Lebanon"
LC,"Saint Lucia"
LI,"Liechtenstein"
LK,"Sri Lanka"
LR,"Liberia"
LS,"Lesotho"
LT,"Lithuania"
LU,"Luxembourg"
LV,"Latvia"
LY,"Libyan Arab Jamahiriya"
MA,"Morocco"
MC,"Monaco"
MD,"Moldova, Republic of"
ME,"Montenegro"
MF,"Saint Martin"
MG,"Madagascar"
MH,"Marshall Islands"
MK,"Macedonia"
ML,"Mali"
MM,"Myanmar"
MN,"Mongolia"
MO,"Macao"
MP,"Northern Mariana Islands"
MQ,"Martinique"
MR,"Mauritania"
MS,"Montserrat"
MT,"Malta"
MU,"Mauritius"
MV,"Maldives"
MW,"Malawi"
MX,"Mexico"
MY,"Malaysia"
MZ,"Mozambique"
NA,"Namibia"
NC,"New Caledonia"
NE,"Niger"
NF,"Norfolk Island"
NG,"Nigeria"
NI,"Nicaragua"
NL,"Netherlands"
NO,"Norway"
NP,"Nepal"
NR,"Nauru"
NU,"Niue"
NZ,"New Zealand"
OM,"Oman"
PA,"Panama"
PE,"Peru"
PF,"French Polynesia"
PG,"Papua New Guinea"
PH,"Philippines"
PK,"Pakistan"
PL,"Poland"
PM,"Saint Pierre and Miquelon"
PN,"Pitcairn"
PR,"Puerto Rico"
PS,"Palestinian Territory"
PT,"Portugal"
PW,"Palau"
PY,"Paraguay"
QA,"Qatar"
RE,"Reunion"
RO,"Romania"
RS,"Serbia"
RU,"Russian Federation"
RW,"Rwanda"
SA,"Saudi Arabia"
SB,"Solomon Islands"
SC,"Seychelles"
SD,"Sudan"
SE,"Sweden"
SG,"Singapore"
SH,"Saint Helena"
SI,"Slovenia"
SJ,"Svalbard and Jan Mayen"
SK,"Slovakia"
SL,"Sierra Leone"
SM,"San Marino"
SN,"Senegal"
SO,"Somalia"
SR,"Suriname"
SS,"South Sudan"
ST,"Sao Tome and Principe"
SV,"El Salvador"
SX,"Sint Maarten"
SY,"Syrian Arab Republic"
SZ,"Swaziland"
TC,"Turks and Caicos Islands"
TD,"Chad"
TF,"French Southern Territories"
TG,"Togo"
TH,"Thailand"
TJ,"Tajikistan"
TK,"Tokelau"
TL,"Timor-Leste"
TM,"Turkmenistan"
TN,"Tunisia"
TO,"Tonga"
TR,"Turkey"
TT,"Trinidad and Tobago"
TV,"Tuvalu"
TW,"Taiwan"
TZ,"Tanzania, United Republic of"
UA,"Ukraine"
UG,"Uganda"
UM,"United States Minor Outlying Islands"
US,"United States"
UY,"Uruguay"
UZ,"Uzbekistan"
VA,"Holy See (Vatican City State)"
VC,"Saint Vincent and the Grenadines"
VE,"Venezuela"
VG,"Virgin Islands, British"
VI,"Virgin Islands, U.S."
VN,"Vietnam"
VU,"Vanuatu"
WF,"Wallis and Futuna"
WS,"Samoa"
YE,"Yemen"
YT,"Mayotte"
ZA,"South Africa"
ZM,"Zambia"
ZW,"Zimbabwe"
1 A1 Anonymous Proxy
2 A2 Satellite Provider
3 O1 Other Country
4 AD Andorra
5 AE United Arab Emirates
6 AF Afghanistan
7 AG Antigua and Barbuda
8 AI Anguilla
9 AL Albania
10 AM Armenia
11 AO Angola
12 AP Asia/Pacific Region
13 AQ Antarctica
14 AR Argentina
15 AS American Samoa
16 AT Austria
17 AU Australia
18 AW Aruba
19 AX Aland Islands
20 AZ Azerbaijan
21 BA Bosnia and Herzegovina
22 BB Barbados
23 BD Bangladesh
24 BE Belgium
25 BF Burkina Faso
26 BG Bulgaria
27 BH Bahrain
28 BI Burundi
29 BJ Benin
30 BL Saint Bartelemey
31 BM Bermuda
32 BN Brunei Darussalam
33 BO Bolivia
34 BQ Bonaire, Saint Eustatius and Saba
35 BR Brazil
36 BS Bahamas
37 BT Bhutan
38 BV Bouvet Island
39 BW Botswana
40 BY Belarus
41 BZ Belize
42 CA Canada
43 CC Cocos (Keeling) Islands
44 CD Congo, The Democratic Republic of the
45 CF Central African Republic
46 CG Congo
47 CH Switzerland
48 CI Cote d'Ivoire
49 CK Cook Islands
50 CL Chile
51 CM Cameroon
52 CN China
53 CO Colombia
54 CR Costa Rica
55 CU Cuba
56 CV Cape Verde
57 CW Curacao
58 CX Christmas Island
59 CY Cyprus
60 CZ Czech Republic
61 DE Germany
62 DJ Djibouti
63 DK Denmark
64 DM Dominica
65 DO Dominican Republic
66 DZ Algeria
67 EC Ecuador
68 EE Estonia
69 EG Egypt
70 EH Western Sahara
71 ER Eritrea
72 ES Spain
73 ET Ethiopia
74 EU Europe
75 FI Finland
76 FJ Fiji
77 FK Falkland Islands (Malvinas)
78 FM Micronesia, Federated States of
79 FO Faroe Islands
80 FR France
81 GA Gabon
82 GB United Kingdom
83 GD Grenada
84 GE Georgia
85 GF French Guiana
86 GG Guernsey
87 GH Ghana
88 GI Gibraltar
89 GL Greenland
90 GM Gambia
91 GN Guinea
92 GP Guadeloupe
93 GQ Equatorial Guinea
94 GR Greece
95 GS South Georgia and the South Sandwich Islands
96 GT Guatemala
97 GU Guam
98 GW Guinea-Bissau
99 GY Guyana
100 HK Hong Kong
101 HM Heard Island and McDonald Islands
102 HN Honduras
103 HR Croatia
104 HT Haiti
105 HU Hungary
106 ID Indonesia
107 IE Ireland
108 IL Israel
109 IM Isle of Man
110 IN India
111 IO British Indian Ocean Territory
112 IQ Iraq
113 IR Iran, Islamic Republic of
114 IS Iceland
115 IT Italy
116 JE Jersey
117 JM Jamaica
118 JO Jordan
119 JP Japan
120 KE Kenya
121 KG Kyrgyzstan
122 KH Cambodia
123 KI Kiribati
124 KM Comoros
125 KN Saint Kitts and Nevis
126 KP Korea, Democratic People's Republic of
127 KR Korea, Republic of
128 KW Kuwait
129 KY Cayman Islands
130 KZ Kazakhstan
131 LA Lao People's Democratic Republic
132 LB Lebanon
133 LC Saint Lucia
134 LI Liechtenstein
135 LK Sri Lanka
136 LR Liberia
137 LS Lesotho
138 LT Lithuania
139 LU Luxembourg
140 LV Latvia
141 LY Libyan Arab Jamahiriya
142 MA Morocco
143 MC Monaco
144 MD Moldova, Republic of
145 ME Montenegro
146 MF Saint Martin
147 MG Madagascar
148 MH Marshall Islands
149 MK Macedonia
150 ML Mali
151 MM Myanmar
152 MN Mongolia
153 MO Macao
154 MP Northern Mariana Islands
155 MQ Martinique
156 MR Mauritania
157 MS Montserrat
158 MT Malta
159 MU Mauritius
160 MV Maldives
161 MW Malawi
162 MX Mexico
163 MY Malaysia
164 MZ Mozambique
165 NA Namibia
166 NC New Caledonia
167 NE Niger
168 NF Norfolk Island
169 NG Nigeria
170 NI Nicaragua
171 NL Netherlands
172 NO Norway
173 NP Nepal
174 NR Nauru
175 NU Niue
176 NZ New Zealand
177 OM Oman
178 PA Panama
179 PE Peru
180 PF French Polynesia
181 PG Papua New Guinea
182 PH Philippines
183 PK Pakistan
184 PL Poland
185 PM Saint Pierre and Miquelon
186 PN Pitcairn
187 PR Puerto Rico
188 PS Palestinian Territory
189 PT Portugal
190 PW Palau
191 PY Paraguay
192 QA Qatar
193 RE Reunion
194 RO Romania
195 RS Serbia
196 RU Russian Federation
197 RW Rwanda
198 SA Saudi Arabia
199 SB Solomon Islands
200 SC Seychelles
201 SD Sudan
202 SE Sweden
203 SG Singapore
204 SH Saint Helena
205 SI Slovenia
206 SJ Svalbard and Jan Mayen
207 SK Slovakia
208 SL Sierra Leone
209 SM San Marino
210 SN Senegal
211 SO Somalia
212 SR Suriname
213 SS South Sudan
214 ST Sao Tome and Principe
215 SV El Salvador
216 SX Sint Maarten
217 SY Syrian Arab Republic
218 SZ Swaziland
219 TC Turks and Caicos Islands
220 TD Chad
221 TF French Southern Territories
222 TG Togo
223 TH Thailand
224 TJ Tajikistan
225 TK Tokelau
226 TL Timor-Leste
227 TM Turkmenistan
228 TN Tunisia
229 TO Tonga
230 TR Turkey
231 TT Trinidad and Tobago
232 TV Tuvalu
233 TW Taiwan
234 TZ Tanzania, United Republic of
235 UA Ukraine
236 UG Uganda
237 UM United States Minor Outlying Islands
238 US United States
239 UY Uruguay
240 UZ Uzbekistan
241 VA Holy See (Vatican City State)
242 VC Saint Vincent and the Grenadines
243 VE Venezuela
244 VG Virgin Islands, British
245 VI Virgin Islands, U.S.
246 VN Vietnam
247 VU Vanuatu
248 WF Wallis and Futuna
249 WS Samoa
250 YE Yemen
251 YT Mayotte
252 ZA South Africa
253 ZM Zambia
254 ZW Zimbabwe

57
db/geodata/us_region.csv Normal file
View File

@ -0,0 +1,57 @@
AA,Armed Forces America
AE,Armed Forces
AP,Armed Forces Pacific
AK,Alaska
AL,Alabama
AR,Arkansas
AZ,Arizona
CA,California
CO,Colorado
CT,Connecticut
DC,District of Columbia
DE,Delaware
FL,Florida
GA,Georgia
GU,Guam
HI,Hawaii
IA,Iowa
ID,Idaho
IL,Illinois
IN,Indiana
KS,Kansas
KY,Kentucky
LA,Louisiana
MA,Massachusetts
MD,Maryland
ME,Maine
MI,Michigan
MN,Minnesota
MO,Missouri
MS,Mississippi
MT,Montana
NC,North Carolina
ND,North Dakota
NE,Nebraska
NH,New Hampshire
NJ,New Jersey
NM,New Mexico
NV,Nevada
NY,New York
OH,Ohio
OK,Oklahoma
OR,Oregon
PA,Pennsylvania
PR,Puerto Rico
RI,Rhode Island
SC,South Carolina
SD,South Dakota
TN,Tennessee
TX,Texas
UT,Utah
VA,Virginia
VI,Virgin Islands
VT,Vermont
WA,Washington
WI,Wisconsin
WV,West Virginia
WY,Wyoming
1 AA Armed Forces America
2 AE Armed Forces
3 AP Armed Forces Pacific
4 AK Alaska
5 AL Alabama
6 AR Arkansas
7 AZ Arizona
8 CA California
9 CO Colorado
10 CT Connecticut
11 DC District of Columbia
12 DE Delaware
13 FL Florida
14 GA Georgia
15 GU Guam
16 HI Hawaii
17 IA Iowa
18 ID Idaho
19 IL Illinois
20 IN Indiana
21 KS Kansas
22 KY Kentucky
23 LA Louisiana
24 MA Massachusetts
25 MD Maryland
26 ME Maine
27 MI Michigan
28 MN Minnesota
29 MO Missouri
30 MS Mississippi
31 MT Montana
32 NC North Carolina
33 ND North Dakota
34 NE Nebraska
35 NH New Hampshire
36 NJ New Jersey
37 NM New Mexico
38 NV Nevada
39 NY New York
40 OH Ohio
41 OK Oklahoma
42 OR Oregon
43 PA Pennsylvania
44 PR Puerto Rico
45 RI Rhode Island
46 SC South Carolina
47 SD South Dakota
48 TN Tennessee
49 TX Texas
50 UT Utah
51 VA Virginia
52 VI Virgin Islands
53 VT Vermont
54 WA Washington
55 WI Wisconsin
56 WV West Virginia
57 WY Wyoming

View File

@ -307,9 +307,12 @@ message TracksChanged {
message MusicianSessionJoin {
optional string session_id = 1;
optional string photo_url = 2;
optional string msg = 3;
optional string notification_id = 4;
optional string created_at = 5;
optional bool fan_access = 3;
optional bool musician_access = 4;
optional bool approval_required = 5;
optional string msg = 6;
optional string notification_id = 7;
optional string created_at = 8;
}
message MusicianRecordingSaved {
@ -370,9 +373,12 @@ message BandInvitationAccepted {
message BandSessionJoin {
optional string session_id = 1;
optional string photo_url = 2;
optional string msg = 3;
optional string notification_id = 4;
optional string created_at = 5;
optional bool fan_access = 3;
optional bool musician_access = 4;
optional bool approval_required = 5;
optional string msg = 6;
optional string notification_id = 7;
optional string created_at = 8;
}
// route_to: client:

View File

@ -413,11 +413,13 @@ module JamRuby
)
end
def musician_session_join(receiver_id, session_id, photo_url, msg, notification_id, created_at)
def musician_session_join(receiver_id, session_id, photo_url, fan_access, musician_access, approval_required, msg, notification_id, created_at)
musician_session_join = Jampb::MusicianSessionJoin.new(
:session_id => session_id,
:photo_url => photo_url,
:fan_access => fan_access,
:musician_access => musician_access,
:approval_required => approval_required,
:msg => msg,
:notification_id => notification_id,
:created_at => created_at
@ -430,10 +432,13 @@ module JamRuby
)
end
def band_session_join(receiver_id, session_id, photo_url, msg, notification_id, created_at)
def band_session_join(receiver_id, session_id, photo_url, fan_access, musician_access, approval_required, msg, notification_id, created_at)
band_session_join = Jampb::BandSessionJoin.new(
:session_id => session_id,
:photo_url => photo_url,
:fan_access => fan_access,
:musician_access => musician_access,
:approval_required => approval_required,
:msg => msg,
:notification_id => notification_id,
:created_at => created_at

View File

@ -19,6 +19,10 @@ module JamRuby
Notification.where(:target_user_id => user_id).limit(50)
end
def created_date
self.created_at.getutc.iso8601.to_s
end
def photo_url
unless self.source_user.nil?
self.source_user.photo_url
@ -224,7 +228,7 @@ module JamRuby
user.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(friend_id, msg)
@ -252,7 +256,7 @@ module JamRuby
friend.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(user.id, msg)
@ -279,7 +283,7 @@ module JamRuby
follower.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(user.id, msg)
@ -313,7 +317,7 @@ module JamRuby
follower.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(bm.user_id, msg)
@ -342,7 +346,7 @@ module JamRuby
session_id,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(receiver.id, msg)
@ -383,7 +387,7 @@ module JamRuby
join_request.user.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(music_session.creator.id, msg)
@ -406,7 +410,7 @@ module JamRuby
music_session.creator.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(join_request.user.id, msg)
@ -429,7 +433,7 @@ module JamRuby
music_session.creator.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(join_request.user.id, msg)
@ -489,34 +493,35 @@ module JamRuby
notifications, online_ff, offline_ff = [], [], []
notification_msg = format_msg(NotificationTypes::MUSICIAN_SESSION_JOIN, user)
friends_and_followers.each do |ff|
if (ff.musician && music_session.musician_access) || (!ff.musician && music_session.fan_access)
notification = Notification.new
notification.description = NotificationTypes::MUSICIAN_SESSION_JOIN
notification.source_user_id = user.id
notification.target_user_id = ff.id
notification.session_id = music_session.id
notification.save
friends_and_followers.each do |ff|
notification = Notification.new
notification.description = NotificationTypes::MUSICIAN_SESSION_JOIN
notification.source_user_id = user.id
notification.target_user_id = ff.id
notification.session_id = music_session.id
notification.save
if ff.online
msg = @@message_factory.musician_session_join(
ff.id,
music_session.id,
user.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
)
if ff.online
msg = @@message_factory.musician_session_join(
ff.id,
music_session.id,
user.photo_url,
music_session.fan_access,
music_session.musician_access,
music_session.approval_required,
notification_msg,
notification.id,
notification.created_date
)
@@mq_router.publish_to_user(ff.id, msg)
else
offline_ff << ff
end
@@mq_router.publish_to_user(ff.id, msg)
else
offline_ff << ff
end
end
# send email notifications
unless offline_ff.empty?
if !offline_ff.empty? && music_session.fan_access
begin
UserMailer.musician_session_join(offline_ff.map! {|f| f.email}, notification_msg, music_session.id).deliver if APP_CONFIG.send_join_session_email_notifications
rescue => e
@ -529,40 +534,41 @@ module JamRuby
def send_band_session_join(music_session, band)
# if the session is private, don't send any notifications
if music_session.musician_access || music_session.fan_access
if music_session.musician_access || music_session.fan_access
notifications, online_followers, offline_followers = [], [], []
notification_msg = format_msg(NotificationTypes::BAND_SESSION_JOIN, nil, band)
band.followers.each do |bf|
follower = bf.user
if (follower.musician && music_session.musician_access) || (!follower.musician && music_session.fan_access)
notification = Notification.new
notification.band_id = band.id
notification.description = NotificationTypes::BAND_SESSION_JOIN
notification.target_user_id = follower.id
notification.session_id = music_session.id
notification.save
notification = Notification.new
notification.band_id = band.id
notification.description = NotificationTypes::BAND_SESSION_JOIN
notification.target_user_id = follower.id
notification.session_id = music_session.id
notification.save
if follower.online
msg = @@message_factory.band_session_join(
follower.id,
music_session.id,
band.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
)
if follower.online
msg = @@message_factory.band_session_join(
follower.id,
music_session.id,
band.photo_url,
music_session.fan_access,
music_session.musician_access,
music_session.approval_required,
notification_msg,
notification.id,
notification.created_date
)
@@mq_router.publish_to_user(follower.id, msg)
else
offline_followers << follower
end
@@mq_router.publish_to_user(follower.id, msg)
else
offline_followers << follower
end
end
# send email notifications
unless offline_followers.empty?
if !offline_ff.empty? && music_session.fan_access
UserMailer.band_session_join(offline_followers.map! {|f| f.email}, notification_msg, music_session.id).deliver if APP_CONFIG.send_join_session_email_notifications
end
end
@ -598,7 +604,7 @@ module JamRuby
user.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(ff.id, notification_msg)
@ -633,7 +639,7 @@ module JamRuby
band.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(of.id, notification_msg)
@ -696,7 +702,13 @@ module JamRuby
notification_msg = format_msg(notification.description, nil, recording.band)
msg = @@message_factory.recording_master_mix_complete(claimed_recording.user_id, recording.id, notification.band_id, notification_msg, notification.id, notification.created_at.to_s)
msg = @@message_factory.recording_master_mix_complete(
claimed_recording.user_id,
recording.id,
notification.band_id,
notification_msg,
notification.id,
notification.created_date)
@@mq_router.publish_to_user(claimed_recording.user_id, msg)
end
@ -722,7 +734,7 @@ module JamRuby
sender.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(receiver.id, msg)
@ -750,7 +762,7 @@ module JamRuby
sender.photo_url,
notification_msg,
notification.id,
notification.created_at.to_s
notification.created_date
)
@@mq_router.publish_to_user(receiver.id, msg)

View File

@ -146,7 +146,7 @@
sessionId: val.sessionId,
avatar_url: context.JK.resolveAvatarUrl(val.photo_url),
text: val.formatted_msg,
date: context.JK.formatDateTime(val.created_at)
date: $.timeago(val.created_at)
});
$('#sidebar-notification-list').append(notificationHtml);
@ -169,7 +169,7 @@
var $action_btn = $notification.find($btnNotificationAction);
$action_btn.text('ACCEPT');
$action_btn.click(function() {
acceptFriendRequest({ "friend_request_id": payload.friend_request_id, "notification_id": payload.notification_id });
acceptFriendRequest(payload);
});
}
@ -185,7 +185,7 @@
var $action_btn = $notification.find($btnNotificationAction);
$action_btn.text('JOIN');
$action_btn.click(function() {
openTerms({ "session_id": payload.session_id, "notification_id": payload.notification_id });
openTerms(payload);
});
}
@ -193,7 +193,7 @@
var $action_btn = $notification.find($btnNotificationAction);
$action_btn.text('APPROVE');
$action_btn.click(function() {
approveJoinRequest({ "join_request_id": payload.join_request_id, "notification_id": payload.notification_id });
approveJoinRequest(payload);
});
}
@ -201,7 +201,7 @@
var $action_btn = $notification.find($btnNotificationAction);
$action_btn.text('JOIN');
$action_btn.click(function() {
openTerms({ "session_id": payload.session_id, "notification_id": payload.notification_id });
openTerms(payload);
});
}
@ -210,12 +210,33 @@
}
else if (type === context.JK.MessageType.MUSICIAN_SESSION_JOIN || type === context.JK.MessageType.BAND_SESSION_JOIN) {
var actionText = '';
var callback;
if (context.JK.currentUserMusician) {
// user is MUSICIAN; musician_access = TRUE
if (payload.musician_access) {
actionText = "JOIN";
callback = joinSession;
}
// user is MUSICIAN; fan_access = TRUE
else if (payload.fan_access) {
actionText = "LISTEN";
callback = listenToSession;
}
}
else {
// user is FAN; fan_access = TRUE
if (payload.fan_access) {
actionText = "LISTEN";
callback = listenToSession;
}
}
var $action_btn = $notification.find($btnNotificationAction);
$action_btn.text('LISTEN');
$action_btn.attr('href', '/sessions/' + payload.session_id);
$action_btn.attr('rel', 'external');
$action_btn.text(actionText);
$action_btn.click(function() {
listenToSession({ "session_id": payload.session_id, "notification_id": payload.notification_id });
callback(payload);
});
}
@ -223,7 +244,7 @@
var $action_btn = $notification.find($btnNotificationAction);
$action_btn.text('LISTEN');
$action_btn.click(function() {
listenToRecording({ "recording_id": payload.recording_id, "notification_id": payload.notification_id });
listenToRecording(payload);
});
}
@ -236,7 +257,7 @@
var $action_btn = $notification.find($btnNotificationAction);
$action_btn.text('ACCEPT');
$action_btn.click(function() {
acceptBandInvitation({ "band_invitation_id": payload.band_invitation_id, "band_id": payload.band_id, "notification_id": payload.notification_id });
acceptBandInvitation(payload);
});
}
else if (type === context.JK.MessageType.BAND_INVITATION_ACCEPTED) {
@ -342,7 +363,7 @@
sessionId: payload.session_id,
avatar_url: context.JK.resolveAvatarUrl(payload.photo_url),
text: sidebarText,
date: context.JK.formatDateTime(payload.created_at)
date: $.timeago(payload.created_at)
});
$('#sidebar-notification-list').prepend(notificationHtml);
@ -606,7 +627,6 @@
// remove all notifications for this session
function deleteSessionNotifications(sessionId) {
console.log("sessionId=%o", sessionId);
$('li[session-id=' + sessionId + ']').hide();
decrementNotificationCount();
}
@ -714,20 +734,52 @@
context.JK.JamServer.registerMessageCallback(context.JK.MessageType.MUSICIAN_SESSION_JOIN, function(header, payload) {
logger.debug("Handling MUSICIAN_SESSION_JOIN msg " + JSON.stringify(payload));
handleNotification(payload, header.type);
var okText = '';
var showNotification = false;
var callback;
if (context.JK.currentUserMusician) {
// user is MUSICIAN; musician_access = TRUE
if (payload.musician_access) {
showNotification = true;
okText = "JOIN";
callback = joinSession;
}
// user is MUSICIAN; fan_access = TRUE
else if (payload.fan_access) {
showNotification = true;
okText = "LISTEN";
callback = listenToSession;
}
}
else {
// user is FAN; fan_access = TRUE
if (payload.fan_access) {
showNotification = true;
okText = "LISTEN";
callback = listenToSession;
}
}
app.notify({
"title": "Musician Joined Session",
"text": payload.msg,
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
}, {
"ok_text": "LISTEN",
"ok_callback": listenToSession,
"ok_callback_args": {
"session_id": payload.session_id,
"notification_id": payload.notification_id
if (showNotification) {
handleNotification(payload, header.type);
app.notify({
"title": "Musician Joined Session",
"text": payload.msg,
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
}, {
"ok_text": okText,
"ok_callback": callback,
"ok_callback_args": {
"session_id": payload.session_id,
"fan_access": payload.fan_access,
"musician_access": payload.musician_access,
"approval_required": payload.approval_required,
"notification_id": payload.notification_id
}
}
});
);
}
});
}
@ -735,20 +787,52 @@
context.JK.JamServer.registerMessageCallback(context.JK.MessageType.BAND_SESSION_JOIN, function(header, payload) {
logger.debug("Handling BAND_SESSION_JOIN msg " + JSON.stringify(payload));
handleNotification(payload, header.type);
var okText = '';
var showNotification = false;
var callback;
if (context.JK.currentUserMusician) {
// user is MUSICIAN; musician_access = TRUE
if (payload.musician_access) {
showNotification = true;
okText = "JOIN";
callback = joinSession;
}
// user is MUSICIAN; fan_access = TRUE
else if (payload.fan_access) {
showNotification = true;
okText = "LISTEN";
callback = listenToSession;
}
}
else {
// user is FAN; fan_access = TRUE
if (payload.fan_access) {
showNotification = true;
okText = "LISTEN";
callback = listenToSession;
}
}
app.notify({
"title": "Band Joined Session",
"text": payload.msg,
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
}, {
"ok_text": "LISTEN",
"ok_callback": listenToSession,
"ok_callback_args": {
"session_id": payload.session_id,
"notification_id": payload.notification_id
if (showNotification) {
handleNotification(payload, header.type);
app.notify({
"title": "Band Joined Session",
"text": payload.msg,
"icon_url": context.JK.resolveAvatarUrl(payload.photo_url)
}, {
"ok_text": "LISTEN",
"ok_callback": callback,
"ok_callback_args": {
"session_id": payload.session_id,
"fan_access": payload.fan_access,
"musician_access": payload.musician_access,
"approval_required": payload.approval_required,
"notification_id": payload.notification_id
}
}
});
);
}
});
}
@ -757,6 +841,43 @@
context.JK.popExternalLink('/sessions/' + args.session_id);
}
/*********** TODO: THE NEXT 3 FUNCTIONS ARE COPIED FROM sessionList.js. REFACTOR TO COMMON PLACE. *************/
function joinSession(args) {
// NOTE: invited musicians get their own notification, so no need to check if user has invitation here
// like other places because an invited user would never get this notification
if (args.musician_access) {
if (args.approval_required) {
openAlert(args.session_id);
}
else {
openTerms(args);
}
}
deleteNotification(args.notification_id);
}
function openAlert(sessionId) {
var alertDialog = new context.JK.AlertDialog(context.JK.app, "YES",
"You must be approved to join this session. Would you like to send a request to join?",
sessionId, onCreateJoinRequest);
alertDialog.initialize();
context.JK.app.layout.showDialog('alert');
}
function onCreateJoinRequest(sessionId) {
var joinRequest = {};
joinRequest.music_session = sessionId;
joinRequest.user = context.JK.currentUserId;
rest.createJoinRequest(joinRequest)
.done(function(response) {
}).error(context.JK.app.ajaxError);
context.JK.app.layout.closeDialog('alert');
}
//////////////////////////////////////////////////////////////////////////////////////////
function registerMusicianRecordingSaved() {
context.JK.JamServer.registerMessageCallback(context.JK.MessageType.MUSICIAN_RECORDING_SAVED, function(header, payload) {
logger.debug("Handling MUSICIAN_RECORDING_SAVED msg " + JSON.stringify(payload));
@ -776,7 +897,6 @@
}
});
});
}
function registerBandRecordingSaved() {

View File

@ -201,8 +201,8 @@
<li session-id="{sessionId}" notification-id="{notificationId}">
<div class="avatar-small"><img src="{avatar_url}" /></div>
<div class="note-text">
{text}
<em>({date})</em>
{text}&nbsp;&nbsp;
<em>{date}</em>
<div class="note-delete">
<a>
<img id="img-delete-notification" notification-id="{notificationId}" src="/assets/shared/icon_delete_sm.png" width="13" height="13" />

View File

@ -97,10 +97,12 @@
JK.currentUserId = '<%= current_user.id %>';
JK.currentUserAvatarUrl = JK.resolveAvatarUrl('<%= current_user.photo_url %>');
JK.currentUserName = '<%= current_user.name %>';
JK.currentUserMusician = '<%= current_user.musician %>';
<% else %>
JK.currentUserId = null;
JK.currentUserAvatarUrl = null;
JK.currentUserName = null;
JK.currentUserMusician = null;
<% end %>
// Some things can't be initialized until we're connected. Put them here.

View File

@ -58,7 +58,7 @@ MusicSessionManager < BaseManager
user.update_progression_field(:first_music_session_at)
MusicSessionUserHistory.save(music_session.id, user.id, client_id, tracks)
# only send this notification if it's a band session
unless band.nil?
Notification.send_band_session_join(music_session, band)
end
@ -133,7 +133,7 @@ MusicSessionManager < BaseManager
user.update_progression_field(:first_music_session_at)
MusicSessionUserHistory.save(music_session_id, user.id, client_id, tracks)
if as_musician && music_session.musician_access
if as_musician
# send to session participants
Notification.send_session_join(music_session, connection, user)