'use strict';

module.exports = (core, io) => {

	// tell all the users in this room that someone is joining it
	core.on('station-joined', user => {
		io.sockets.clients().forEach(socket => {
			if (socket.request.user.id != user.user.id && socket.request.user.roomId === id) {
				socket.emit('station-joined', user);
			}
		});
	});

	io.on('connection', socket => {

		socket.on('disconnect', () => {
			console.log('User has disconnected');
		});

		socket.on('/users/login', (user, cb) => {
			core['/users/login'](user, result => {
				cb(result);
			});
		});

		socket.on('/users/register', (user, cb) => {
			core['/users/register'](user, result => {
				cb(result);
			});
		});

		socket.on('/stations', cb => {
			core['/stations'](result => {
				cb(result);
			});
		});

		socket.on('/stations/join/:id', (id, cb) => {
			core['/stations/join/:id'](id, result => {
				cb(result);
			});
		});

		socket.on('/stations/search/:query', (query, cb) => {
			core['/stations/search/:query'](query, result => {
				cb(result);
			});
		});

		// this lets the client socket know that they can start making request
		socket.emit('ready');
	});
};