chatrix 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5fdbaf53540d109264fd47203f5bf8371b7a0e0d
4
- data.tar.gz: e618549b57e588e22fe091b3f7538053088a97e3
3
+ metadata.gz: 9ba46cb5ec75d859c02dd7ed213b2b21a4e7f5ee
4
+ data.tar.gz: bbf09105a61342db53fd688099b3f5269719aabd
5
5
  SHA512:
6
- metadata.gz: 2ea913a13a9257f27fdccdf36a4a013360bbc2d0c7c0756978f633152351c33aaa7e9e574ae177e050d438f7d3997db41f5d64f2a726dc43e460c5db60188261
7
- data.tar.gz: ccf53b6718e921aa22fc1a6354997155de119baa19a75bb594b8c380e159bfbc7b2a57673e61c48e50645be2badb2d35a26b53cbd1ae1636b6909b3587b09bd2
6
+ metadata.gz: f20497370325083e5a5cc579214c62650dc85b3faed414e5681adf3a22832b56242e0169e68b0e45a998ff311569045b99e03f236e474fc93d849bff1bbae2cc
7
+ data.tar.gz: 95b602dbbf88af113c91072b7e1c21f7fac9a1762b3dee8eb20f93ffdfeeb360ddc6eabdf19c413ab63e7fd992a9ac1be074e4723d96abe05b888dc36419b199
data/Gemfile CHANGED
@@ -8,6 +8,11 @@ gemspec
8
8
 
9
9
  group :development do
10
10
  gem 'pry', '~> 0.10'
11
+
12
+ gem 'guard', '~> 2.14'
13
+ gem 'guard-bundler', '~> 2.1', require: false
14
+ gem 'guard-rspec', '~> 4.7', require: false
15
+ gem 'guard-rubocop', '~> 1.2'
11
16
  end
12
17
 
13
18
  group :test do
data/Guardfile ADDED
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ guard :rspec, cmd: 'bundle exec rspec' do
5
+ require 'guard/rspec/dsl'
6
+ dsl = Guard::RSpec::Dsl.new(self)
7
+
8
+ # Feel free to open issues for suggestions and improvements
9
+
10
+ # RSpec files
11
+ rspec = dsl.rspec
12
+ watch(rspec.spec_helper) { rspec.spec_dir }
13
+ watch(rspec.spec_support) { rspec.spec_dir }
14
+ watch(rspec.spec_files)
15
+
16
+ # Ruby files
17
+ ruby = dsl.ruby
18
+ dsl.watch_spec_files_for(ruby.lib_files)
19
+
20
+ # Turnip features and steps
21
+ watch(%r{^spec/acceptance/(.+)\.feature$})
22
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
23
+ Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance'
24
+ end
25
+ end
26
+
27
+ guard :bundler do
28
+ require 'guard/bundler'
29
+ require 'guard/bundler/verify'
30
+ helper = Guard::Bundler::Verify.new
31
+
32
+ files = ['Gemfile']
33
+ files += Dir['*.gemspec'] if files.any? { |f| helper.uses_gemspec?(f) }
34
+
35
+ # Assume files are symlinked from somewhere
36
+ files.each { |file| watch(helper.real_path(file)) }
37
+ end
38
+
39
+ guard :rubocop do
40
+ watch(/.+\.rb$/)
41
+ watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
42
+ end
@@ -37,6 +37,8 @@ module Chatrix
37
37
  room.on(:invited) { |s, i| broadcast(:invited, room, s, i) }
38
38
  room.timeline.on(:message) { |r, m| broadcast(:room_message, r, m) }
39
39
  end
40
+
41
+ on(:disconnected) { stop_syncing }
40
42
  end
41
43
 
42
44
  # Starts syncing against the homeserver.
@@ -53,7 +55,6 @@ module Chatrix
53
55
  rescue => e
54
56
  broadcast(:connection_error, e)
55
57
  ensure
56
- stop_syncing
57
58
  broadcast(:disconnected)
58
59
  end
59
60
  end
@@ -140,7 +140,7 @@ module Chatrix
140
140
  # @param event [Hash] The member event.
141
141
  def handle_member(event)
142
142
  @users.process_member_event self, event
143
- user = @users[event['sender']]
143
+ user = @users[event['state_key']]
144
144
  membership = event['content']['membership'].to_sym
145
145
 
146
146
  # Don't process invite state change if the user is already a
data/lib/chatrix/user.rb CHANGED
@@ -38,6 +38,14 @@ module Chatrix
38
38
  @memberships[room][:power] || 0
39
39
  end
40
40
 
41
+ # Checks if this user is a member of the specified room.
42
+ # @param room [Room] The room to check.
43
+ # @return [Boolean] `true` if the user is a member in the room,
44
+ # otherwise `false`.
45
+ def member?(room)
46
+ @memberships.key?(room) && @memberships[room][:type] == :join
47
+ end
48
+
41
49
  # Process a member event.
42
50
  #
43
51
  # @param room [Room] The room that sent the event.
data/lib/chatrix/users.rb CHANGED
@@ -35,7 +35,8 @@ module Chatrix
35
35
  # @param event [Hash] Event data.
36
36
  def process_member_event(room, event)
37
37
  return if Events.processed? event
38
- get_user(event['sender']).process_member_event room, event
38
+ id = event['state_key'] || event['sender']
39
+ get_user(id).process_member_event room, event
39
40
  end
40
41
 
41
42
  # Process power level updates.
@@ -3,5 +3,5 @@
3
3
 
4
4
  module Chatrix
5
5
  # The current version of this gem.
6
- VERSION = '1.3.0'.freeze
6
+ VERSION = '1.4.0'.freeze
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chatrix
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hellberg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-14 00:00:00.000000000 Z
11
+ date: 2016-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -66,6 +66,7 @@ files:
66
66
  - ".travis.yml"
67
67
  - ".yardopts"
68
68
  - Gemfile
69
+ - Guardfile
69
70
  - LICENSE
70
71
  - README.md
71
72
  - Rakefile