Sha256: 91551de0ff52052d9522ae3188c9cdb84387771d8db8260239d2fe6cd9bf90f6

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require 'whatup/server/models/application_record'

module Whatup
  module Server
    class Client < ApplicationRecord
      has_many :sent_messages, class_name: 'Message',
                               foreign_key: 'sender_id'
      has_many :received_messages, class_name: 'Message',
                                   foreign_key: 'recipient_id'

      belongs_to :room, optional: true

      validates_uniqueness_of :name

      attr_accessor *%i[socket composing_dm deleted]

      def puts msg
        socket.puts msg
      end

      def gets
        socket.gets
      end

      def input!
        loop while (msg = gets).blank?
        msg.chomp
      end

      def chatting?
        !room_id.nil?
      end

      def composing_dm?
        !composing_dm.nil?
      end

      def status
        "#{name}#{chatting? ? " (#{room.name})" : ''}"
      end

      def broadcast msg
        room.broadcast(except: self) { "#{name}> #{msg}" }
      end

      def leave_room!
        broadcast 'LEFT'
        room.drop_client! self
      end

      def exit!
        puts 'END'
        socket.close
        @deleted = true
        destroy!
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
whatup-0.3.1 lib/whatup/server/models/client.rb
whatup-0.3.0 lib/whatup/server/models/client.rb
whatup-0.2.5 lib/whatup/server/models/client.rb