From 8fb96f3cbf325ae9e7f3823d02296e1916af0351 Mon Sep 17 00:00:00 2001 From: claudemiro Date: Thu, 1 Sep 2016 23:42:18 -0300 Subject: [PATCH] Simpler logic --- ipe/channel.go | 86 +++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/ipe/channel.go b/ipe/channel.go index aafec9e..98a603e 100644 --- a/ipe/channel.go +++ b/ipe/channel.go @@ -74,51 +74,51 @@ func (c *channel) Subscribe(a *app, conn *connection, channelData string) error subscription := newSubscription(conn, channelData) c.Subscriptions[conn.SocketID] = subscription - if c.IsPresence() { - // User Info Data - var info struct { - UserID string `json:"user_id"` - UserInfo json.RawMessage `json:"user_info"` - } - - log.Infof("%+v", channelData) - - if err := json.Unmarshal([]byte(channelData), &info); err != nil { - log.Error(err) - return err - } - - js, err := info.UserInfo.MarshalJSON() - - if err != nil { - log.Error(err) - return err - } - - // Update the Subscription - subscription.ID = info.UserID - subscription.Data = string(js) - - // Publish pusher_internal:member_added - c.PublishMemberAddedEvent(a, channelData, subscription) - // WebHook - a.TriggerMemberAddedHook(c, subscription) - - // pusher_internal:subscription_succeeded - data := make(map[string]subscriptionSucceeedEventPresenceData) - data["presence"] = newSubscriptionSucceedEventPresenceData(c) - - js, err = json.Marshal(data) - - if err != nil { - log.Error(err) - return err - } - - conn.Publish(newSubscriptionSucceededEvent(c.ChannelID, string(js))) - } else { + if !c.IsPresence() { conn.Publish(newSubscriptionSucceededEvent(c.ChannelID, "{}")) + return nil } + // User Info Data + var info struct { + UserID string `json:"user_id"` + UserInfo json.RawMessage `json:"user_info"` + } + + log.Infof("%+v", channelData) + + if err := json.Unmarshal([]byte(channelData), &info); err != nil { + log.Error(err) + return err + } + + js, err := info.UserInfo.MarshalJSON() + + if err != nil { + log.Error(err) + return err + } + + // Update the Subscription + subscription.ID = info.UserID + subscription.Data = string(js) + + // Publish pusher_internal:member_added + c.PublishMemberAddedEvent(a, channelData, subscription) + // WebHook + a.TriggerMemberAddedHook(c, subscription) + + // pusher_internal:subscription_succeeded + data := make(map[string]subscriptionSucceeedEventPresenceData) + data["presence"] = newSubscriptionSucceedEventPresenceData(c) + + js, err = json.Marshal(data) + + if err != nil { + log.Error(err) + return err + } + + conn.Publish(newSubscriptionSucceededEvent(c.ChannelID, string(js))) // WebHook if c.TotalSubscriptions() == 1 {