Sha256: d8321042df42dd5902e314ba785f0857af8237e2e9628067ed35a18dadbdcd10

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 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!
        room.drop_client! self
      end

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

      def to_s
        name
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whatup-0.3.5 lib/whatup/server/models/client.rb