chatrix 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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