Browse Source

Relogin fix

master
bodqhrohro 3 years ago
parent
commit
18b5bc0935
4 changed files with 23 additions and 7 deletions
  1. +1
    -0
      .gitignore
  2. +10
    -1
      persistence/sessions.go
  3. +11
    -6
      telegram/commands.go
  4. +1
    -0
      telegram/connect.go

+ 1
- 0
.gitignore View File

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

+ 10
- 1
persistence/sessions.go 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


+ 11
- 6
telegram/commands.go 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":
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()
}
for id := range c.cache.chats {
c.unsubscribe(id)
}
c.Session.Login = ""
// set @username
case "setusername":


+ 1
- 0
telegram/connect.go 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


Loading…
Cancel
Save