Skip to content

Commit

Permalink
🍔 add anonymous tips
Browse files Browse the repository at this point in the history
  • Loading branch information
persilee committed Dec 11, 2018
1 parent 35a602b commit ab6b6d3
Show file tree
Hide file tree
Showing 13 changed files with 227 additions and 98 deletions.
9 changes: 3 additions & 6 deletions app/Controllers/Http/ActivityController.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,13 @@ class ActivityController {

const user = await auth.getUser()

console.log(user)
const activityUser = await Activity.findByOrFail('username', auth.user.username)

try {
if (activityUser) {
Event.emit('activity.leaveRoom', user)
await Activity.query().where('username', user.username).delete()
} catch (error) {
console.log(error)
}

Event.emit('activity.leaveRoom', user)

return 'success'
}

Expand Down
9 changes: 9 additions & 0 deletions app/Controllers/Http/AuthController.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
'use strict'

const Event = use('Event')
const Activity = use('App/models/Activity')
class AuthController {
async logout ({ auth, response }) {

const activityUser = await Activity.findByOrFail('username', auth.user.username)

if (activityUser) {
Event.emit('activity.leaveRoom', auth.user)
await Activity.query().where('username', auth.user.username).delete()
}

await auth.logout()

return response.redirect('back')
Expand Down
30 changes: 21 additions & 9 deletions app/Controllers/Http/ChatRoomController.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
/** @typedef {import('@adonisjs/framework/src/View')} View */

const Activity = use('App/models/Activity')
const Event = use('Event')
class ChatRoomController {
/**
* Show a list of all chatrooms.
Expand All @@ -15,6 +16,7 @@ class ChatRoomController {
* @param {Response} ctx.response
* @param {View} ctx.view
*/

async index ({ request, response, view, auth }) {
let user = auth.user
? { username: auth.user.username, email: auth.user.email, user_id: auth.user.id }
Expand All @@ -24,12 +26,14 @@ class ChatRoomController {
user.email = user.username
}
const userList = await Activity.all()
if (user.username !== 'Anonymous') {
const isUser = await Activity.findBy('user_id', user.user_id)
if (!isUser) {
await Activity.create(user)
}

if (user.username != 'Anonymous') {
setTimeout(() => {
Activity.create(user)
Event.emit('activity.joinRoom', user)
}, 500)
}

return view.render('ws.ws', { user, userList: userList.toJSON() })
}

Expand Down Expand Up @@ -63,7 +67,17 @@ class ChatRoomController {
* @param {Response} ctx.response
* @param {View} ctx.view
*/
async show ({ params, request, response, view }) {}
async show ({ params, request, response, view }) {

let user = { username: 'Anonymous', email: Math.random().toString(16).substr(2), activity_id: params.id }

setTimeout(() => {
Activity.create(user)
Event.emit('activity.joinRoom', user)
}, 500)

return 'success'
}

/**
* Render a form to update an existing chatroom.
Expand Down Expand Up @@ -94,9 +108,7 @@ class ChatRoomController {
* @param {Request} ctx.request
* @param {Response} ctx.response
*/
async destroy ({ params, request, response }) {

}
async destroy ({ params, request, response }) {}
}

module.exports = ChatRoomController
17 changes: 15 additions & 2 deletions app/Controllers/Ws/WsDemoController.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
'use strict'

const Event = use('Event')
const Activity = use('App/models/Activity')
class WsDemoController {
constructor ({ socket, request, auth }) {
this.socket = socket
this.request = request
this.user = auth.user || { username: 'Anonymous' }
this.user = auth.user
? { username: auth.user.username, email: auth.user.email, user_id: auth.user.id }
: { username: 'Anonymous', email: Math.random().toString(16).substr(2), user_id: '' }
// presence.track(socket, socket.currentUser.id, {})
}

onMessage (message) {
async onMessage (message) {
const { username } = this.user
const { content, email } = message

Expand All @@ -20,6 +24,15 @@ class WsDemoController {
content
})
}

async onClose () {
const activityUser = await Activity.findByOrFail('username', this.user.username)

if (activityUser) {
await Activity.query().where('username', this.user.username).delete()
Event.emit('activity.leaveRoom', activityUser)
}
}
}

module.exports = WsDemoController
39 changes: 26 additions & 13 deletions app/Listeners/Activity.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,34 @@
const Ws = use('Ws')
const md5 = require('js-md5')

const Activity = exports = module.exports = {}
const Activity = (exports = module.exports = {})

Activity.method = async () => {
Activity.method = async () => {}

Activity.leave = async (user) => {
const email = user.email ? user.email : user.username
const activityId = user.activity_id ? user.activity_id.replace(/\./g, '-') : ''
if (Ws.getChannel('demo').topic('demo')) {
Ws.getChannel('demo').topic('demo').broadcast('message', {
type : 'leave',
username : user.username,
email : md5(email),
id : user.id ? user.id : user.user_id,
activityId : user.activity_id ? activityId : '',
content : '<small class="text-muted">just leave room.</small>'
})
}
}


Activity.leave = async (user) => {
console.log('user leave')
Ws.getChannel('demo')
.topic('demo')
.broadcast('message', {
type: 'leave',
username: user.username,
email: md5(user.email),
content: '<small class="text-muted">just leave room.</small>'
})
Activity.join = async (user) => {
const email = user.email ? user.email : user.username
const activityId = user.activity_id ? user.activity_id.replace(/\./g, '-') : ''
Ws.getChannel('demo').topic('demo').broadcast('message', {
type : 'join',
username : user.username,
email : md5(email),
id : user.id ? user.id : user.user_id,
activityId : user.activity_id ? activityId : '',
content : '<small class="text-muted">just join room.</small>'
})
}
3 changes: 2 additions & 1 deletion app/Listeners/User.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ User.method = async () => {
}

User.log = async (user) => {
const email = user.email ? user.email : user.username
Ws.getChannel('demo')
.topic('demo')
.broadcast('message', {
type: 'login',
username: user.username,
email: md5(user.email),
email: md5(email),
listId: user.id,
content: '<small class="text-muted">just logged in.</small>'
})
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class ActivityAddColumnActivityIdSchema extends Schema {
up () {
this.table('activities', (table) => {
table.string('activity_id', 80)
})
}

down () {
this.table('activities', (table) => {
table.dropForeign('activity_id')
})
}
}

module.exports = ActivityAddColumnActivityIdSchema
19 changes: 19 additions & 0 deletions database/migrations/1544549807834_messages_schema.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class MessagesSchema extends Schema {
up () {
this.create('messages', (table) => {
table.increments()
table.timestamps()
})
}

down () {
this.drop('messages')
}
}

module.exports = MessagesSchema
19 changes: 18 additions & 1 deletion public/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -288,5 +288,22 @@
}
})
}
})
})

$('.navbar-nav .nav-link.chatroom').on('click', function () {
let cip = returnCitySN['cip']
cip = encodeURIComponent(cip)
if ($(this).data('isActivityLogged') == 'Anonymous') {
console.log('ajax')
$.ajax({
url: '/chatRooms/' + cip,
method: 'get',
success: (response) => {
if (response == 'success') {

}
}
})
}
})
})()
Loading

0 comments on commit ab6b6d3

Please sign in to comment.