aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telegram/connect.go7
-rw-r--r--xmpp/handlers.go4
2 files changed, 9 insertions, 2 deletions
diff --git a/telegram/connect.go b/telegram/connect.go
index 400c706..c30f9a0 100644
--- a/telegram/connect.go
+++ b/telegram/connect.go
@@ -3,6 +3,7 @@ package telegram
import (
"github.com/pkg/errors"
+ log "github.com/sirupsen/logrus"
"github.com/zelenin/go-tdlib/client"
)
@@ -12,6 +13,8 @@ func (c *Client) Connect() error {
return nil
}
+ log.Warn("Connecting to Telegram network...")
+
authorizer := client.ClientAuthorizer()
go func() {
for {
@@ -48,6 +51,10 @@ func (c *Client) Disconnect() {
return
}
+ log.Warn("Disconnecting from Telegram network...")
+
+ // TODO: send unavailable presence to cached chats
+
c.client.Stop()
c.online = false
}
diff --git a/xmpp/handlers.go b/xmpp/handlers.go
index 70f985d..ba93a11 100644
--- a/xmpp/handlers.go
+++ b/xmpp/handlers.go
@@ -96,7 +96,7 @@ func handlePresence(s xmpp.Sender, p stanza.Presence) {
}
switch p.Type {
- case "unsubscribed":
+ case "unsubscribed", "unsubscribe":
session.Disconnect()
delete(sessions, bareFromJid)
case "unavailable", "error":
@@ -105,7 +105,7 @@ func handlePresence(s xmpp.Sender, p stanza.Presence) {
// due to the weird implentation of go-tdlib wrapper, it won't
// return the client instance until successful authorization
go func() {
- session.Connect()
+ err = session.Connect()
if err != nil {
log.Error(errors.Wrap(err, "TDlib connection failure"))
}