lib/ably/realtime/presence/presence_manager.rb in ably-1.2.4 vs lib/ably/realtime/presence/presence_manager.rb in ably-1.2.6

- old
+ new

@@ -17,17 +17,23 @@ @presence = presence setup_channel_event_handlers end - # Expect SYNC ProtocolMessages from the server with a list of current members on this channel - # - # @return [void] - # # @api private - def sync_expected - presence.members.change_state :sync_starting + def on_attach(has_presence_flag) + # RTP1 + if has_presence_flag + # Expect SYNC ProtocolMessages from the server with a list of current members on this channel + presence.members.change_state :sync_starting + else + # There server has indicated that there are no SYNC ProtocolMessages to come because + # there are no members on this channel + logger.debug { "#{self.class.name}: Emitting leave events for all members as a SYNC is not expected and thus there are no members on the channel" } + presence.members.change_state :sync_none + end + presence.members.enter_local_members # RTP17f end # Process presence messages from SYNC messages. Sync can be server-initiated or triggered following ATTACH # # @return [void] @@ -43,20 +49,9 @@ presence_messages.each do |presence_message| presence.__incoming_msgbus__.publish :sync, presence_message end presence.members.change_state :finalizing_sync if presence.members.sync_serial_cursor_at_end? - end - - # There server has indicated that there are no SYNC ProtocolMessages to come because - # there are no members on this channel - # - # @return [void] - # - # @api private - def sync_not_expected - logger.debug { "#{self.class.name}: Emitting leave events for all members as a SYNC is not expected and thus there are no members on the channel" } - presence.members.change_state :sync_none end private def_delegators :presence, :members, :channel