Relogin fix

This commit is contained in:
bodqhrohro 2019-12-18 23:00:23 +02:00
parent 05a9aca537
commit 18b5bc0935
4 changed files with 24 additions and 8 deletions

1
.gitignore vendored
View file

@ -2,3 +2,4 @@ config.yml
telegabber
sessions/
session.dat
session.dat.new

View file

@ -42,7 +42,16 @@ var sessionDB *SessionsYamlDB
// SessionMarshaller implementation for YamlDB
func SessionMarshaller() ([]byte, error) {
return yaml.Marshal(sessionDB.Data)
cleanedMap := SessionsMap{}
emptySessionsMap(&cleanedMap)
for jid, session := range sessionDB.Data.Sessions {
if session.Login != "" {
cleanedMap.Sessions[jid] = session
}
}
return yaml.Marshal(&cleanedMap)
}
// LoadSessions restores TDlib sessions from the previous run

View file

@ -159,8 +159,12 @@ func (c *Client) ProcessTransportCommand(cmdline string) string {
cmd, args := parseCommand(cmdline)
switch cmd {
case "login", "code", "password":
if cmd == "login" && c.Session.Login != "" {
return ""
if cmd == "login" {
if c.Session.Login != "" {
return ""
} else if !c.Online() {
c.Connect()
}
}
if len(args) < 1 {
@ -184,15 +188,16 @@ func (c *Client) ProcessTransportCommand(cmdline string) string {
}
// sign out
case "logout":
_, err := c.client.LogOut()
if err != nil {
return errors.Wrap(err, "Logout error").Error()
}
for id := range c.cache.chats {
c.unsubscribe(id)
}
_, err := c.client.LogOut()
if err != nil {
c.forceClose()
return errors.Wrap(err, "Logout error").Error()
}
c.Session.Login = ""
// set @username
case "setusername":

View file

@ -207,6 +207,7 @@ func (c *Client) interactor() {
func (c *Client) forceClose() {
c.listener.Close()
c.authorizer = nil
}
// Online checks if the updates listener is alive