parent
f4fdb8a902
commit
fa7c87ec5b
@ -0,0 +1,2 @@ |
||||
console.log 'setting up guests' |
||||
AccountsGuest.forced = false |
||||
@ -0,0 +1,3 @@ |
||||
console.log 'setting up guests' |
||||
AccountsGuest.name = true |
||||
AccountsGuest.forced = false |
||||
@ -0,0 +1,70 @@ |
||||
@MsgTyping = do -> |
||||
stream = new Meteor.Stream 'typing' |
||||
timeout = 15000 |
||||
timeouts = {} |
||||
renew = true |
||||
renewTimeout = 10000 |
||||
selfTyping = new ReactiveVar false |
||||
usersTyping = {} |
||||
dep = new Tracker.Dependency |
||||
|
||||
addStream = (room) -> |
||||
if _.isEmpty usersTyping[room]?.users |
||||
usersTyping[room] = { users: {} } |
||||
stream.on room, (typing) -> |
||||
unless typing?.username is Meteor.user()?.username |
||||
if typing.start |
||||
users = usersTyping[room].users |
||||
users[typing.username] = Meteor.setTimeout -> |
||||
delete users[typing.username] |
||||
usersTyping[room].users = users |
||||
dep.changed() |
||||
, timeout |
||||
usersTyping[room].users = users |
||||
dep.changed() |
||||
else if typing.stop |
||||
users = usersTyping[room].users |
||||
delete users[typing.username] |
||||
usersTyping[room].users = users |
||||
dep.changed() |
||||
|
||||
Tracker.autorun -> |
||||
if visitor.getRoom() |
||||
addStream visitor.getRoom() |
||||
|
||||
start = (room) -> |
||||
return unless renew |
||||
|
||||
setTimeout -> |
||||
renew = true |
||||
, renewTimeout |
||||
|
||||
renew = false |
||||
selfTyping.set true |
||||
stream.emit 'typing', { room: room, username: Meteor.user()?.username, start: true } |
||||
clearTimeout timeouts[room] |
||||
timeouts[room] = Meteor.setTimeout -> |
||||
stop(room) |
||||
, timeout |
||||
|
||||
stop = (room) -> |
||||
renew = true |
||||
selfTyping.set false |
||||
if timeouts?[room]? |
||||
clearTimeout(timeouts[room]) |
||||
timeouts[room] = null |
||||
stream.emit 'typing', { room: room, username: Meteor.user()?.username, stop: true } |
||||
|
||||
get = (room) -> |
||||
dep.depend() |
||||
unless usersTyping[room] |
||||
usersTyping[room] = { users: {} } |
||||
users = usersTyping[room].users |
||||
return _.keys(users) or [] |
||||
|
||||
return { |
||||
start: start |
||||
stop: stop |
||||
get: get |
||||
selfTyping: selfTyping |
||||
} |
||||
@ -0,0 +1,30 @@ |
||||
@header-min-height: 60px; |
||||
@footer-min-height: 70px; |
||||
|
||||
@rooms-box-width: 260px; |
||||
@flex-tab-width: 400px; |
||||
@flex-tab-webrtc-width: 400px; |
||||
@flex-tab-webrtc-2-width: 850px; |
||||
|
||||
// Colors |
||||
// -------------- |
||||
|
||||
//@primary-background-color: #045080; |
||||
//@primary-background-color: #38393d; |
||||
|
||||
@primary-background-color: #04436a; |
||||
@secondary-background-color: #F4F4F4; |
||||
@tertiary-background-color: #EAEAEA; |
||||
|
||||
@link-font-color: #008CE3; |
||||
|
||||
@primary-font-color: #444444; |
||||
@secondary-font-color: #7f7f7f; |
||||
@tertiary-font-color: rgba(255, 255, 255, 0.6); |
||||
@quaternary-font-color: rgba(255, 255, 255, 0.85); |
||||
@info-font-color: #AAAAAA; |
||||
|
||||
@status-online: #35AC19; |
||||
@status-offline: rgba(150, 150, 150, 0.50); |
||||
@status-busy: #D30230; |
||||
@status-away: #fcb316; |
||||
@ -1,5 +1,5 @@ |
||||
#!/bin/sh |
||||
|
||||
DDP_DEFAULT_CONNECTION_URL=http://localhost:3000 |
||||
MONGO_URL=mongodb://localhost:3001 |
||||
export DDP_DEFAULT_CONNECTION_URL=http://localhost:3000 |
||||
export MONGO_URL=mongodb://localhost:3001 |
||||
meteor -p 5000 |
||||
|
||||
@ -0,0 +1,3 @@ |
||||
console.log 'desativa guest ->',AccountsGuest |
||||
AccountsGuest.forced = false |
||||
console.log 'desativado guest ->',@AccountsGuest |
||||
@ -1,55 +1,73 @@ |
||||
@Visitor = new Meteor.Collection 'rocketchat_visitor' |
||||
# @Visitor = new Meteor.Collection 'rocketchat_visitor' |
||||
console.log 'registering sendMessageExternal' |
||||
Meteor.methods |
||||
sendMessageExternal: (data) -> |
||||
sendMessageExternal: (message) -> |
||||
console.log 'sendMessageExternal ->',arguments |
||||
|
||||
check message.rid, String |
||||
check message.token, String |
||||
|
||||
# validate visitor and room |
||||
visitor = Visitor.findOne token: data.token |
||||
# visitor = Visitor.findOne token: message.token |
||||
|
||||
# if not visitor? |
||||
# visitor = |
||||
# token: message.token |
||||
# name: 'guest' |
||||
# room: message.rid |
||||
|
||||
if not visitor? |
||||
visitor = |
||||
token: data.token |
||||
name: 'guest' |
||||
room: data.rid |
||||
# visitor._id = Visitor.insert visitor |
||||
|
||||
visitor._id = Visitor.insert visitor |
||||
# console.log visitor.room,'isnt', message.rid |
||||
|
||||
console.log visitor.room,'isnt', data.rid |
||||
# if visitor.room isnt message.rid |
||||
# throw new Meteor.Error 'invalid-visitor-room', 'Invalid visitor room' |
||||
|
||||
if visitor.room isnt data.rid |
||||
throw new Meteor.Error 'invalid-visitor-room', 'Invalid visitor room' |
||||
user = Meteor.users.findOne Meteor.userId(), fields: username: 1 |
||||
console.log 'visitor ->',user |
||||
|
||||
room = ChatRoom.findOne data.rid |
||||
room = ChatRoom.findOne message.rid |
||||
|
||||
if not room? |
||||
|
||||
# find an online user |
||||
user = Meteor.users.findOne { status: 'online' } |
||||
operator = Meteor.users.findOne { status: 'online' } |
||||
|
||||
ChatRoom.insert |
||||
_id: data.rid |
||||
name: 'guest '+data.rid |
||||
_id: message.rid |
||||
name: 'guest '+message.rid |
||||
msgs: 1 |
||||
lm: new Date() |
||||
usernames: [ user.username ] |
||||
t: 'c' |
||||
usernames: [ operator.username, user.username ] |
||||
t: 'p' |
||||
ts: new Date() |
||||
v: |
||||
token: data.token |
||||
token: message.token |
||||
|
||||
ChatSubscription.insert |
||||
rid: data.rid |
||||
name: 'guest '+data.rid |
||||
rid: message.rid |
||||
name: 'guest '+message.rid |
||||
alert: true |
||||
open: true |
||||
unread: 1 |
||||
u: |
||||
_id: user._id |
||||
username: user.username |
||||
t: 'c' |
||||
|
||||
ChatMessage.insert |
||||
_id: data._id |
||||
ts: new Date() |
||||
rid: data.rid |
||||
msg: data.msg |
||||
_id: operator._id |
||||
username: operator.username |
||||
t: 'p' |
||||
|
||||
room = Meteor.call 'canAccessRoom', message.rid, user._id |
||||
|
||||
if not room |
||||
# console.log 'cannot Access Room' |
||||
throw new Meteor.Error 'cannot-acess-room' |
||||
# return false |
||||
|
||||
RocketChat.sendMessage user, message, room |
||||
|
||||
# Meteor.call 'sendMessage', message |
||||
|
||||
# ChatMessage.insert |
||||
# _id: message._id |
||||
# ts: new Date() |
||||
# rid: message.rid |
||||
# msg: message.msg |
||||
|
||||
Loading…
Reference in new issue