|
|
|
@ -96,11 +96,14 @@ func (stateHandler *clientAuthorizer) Close() {
|
|
|
|
|
|
|
|
|
|
// Connect starts TDlib connection
|
|
|
|
|
func (c *Client) Connect(resource string) error {
|
|
|
|
|
log.Warn("Attempting to connect to Telegram network...")
|
|
|
|
|
|
|
|
|
|
// avoid conflict if another authorization is pending already
|
|
|
|
|
c.locks.authorizationReady.Wait()
|
|
|
|
|
c.locks.authorizationReady.Lock()
|
|
|
|
|
|
|
|
|
|
if c.Online() {
|
|
|
|
|
c.roster(resource)
|
|
|
|
|
c.locks.authorizationReady.Unlock()
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -116,15 +119,13 @@ func (c *Client) Connect(resource string) error {
|
|
|
|
|
LastName: make(chan string, 1),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
c.locks.authorizationReady.Add(1)
|
|
|
|
|
|
|
|
|
|
go c.interactor()
|
|
|
|
|
|
|
|
|
|
c.authorizer.TdlibParameters <- c.parameters
|
|
|
|
|
|
|
|
|
|
tdlibClient, err := client.NewClient(c.authorizer, c.options...)
|
|
|
|
|
if err != nil {
|
|
|
|
|
c.locks.authorizationReady.Done()
|
|
|
|
|
c.locks.authorizationReady.Unlock()
|
|
|
|
|
return errors.Wrap(err, "Couldn't initialize a Telegram client instance")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -142,7 +143,7 @@ func (c *Client) Connect(resource string) error {
|
|
|
|
|
|
|
|
|
|
go c.updateHandler()
|
|
|
|
|
c.online = true
|
|
|
|
|
c.locks.authorizationReady.Done()
|
|
|
|
|
c.locks.authorizationReady.Unlock()
|
|
|
|
|
c.addResource(resource)
|
|
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|