Handle connecion failure error

master
Hugo Thunnissen 4 years ago
parent 910dc27eee
commit 99f05220aa

@ -12,6 +12,20 @@ type WhappHandler struct {
}
func (h *WhappHandler) HandleError(err error) {
if _, connectionFailed := err.(*whatsapp.ErrConnectionFailed); connectionFailed {
err = RestoreWhappSessionFromStorage(
h.BridgeContext.Config.App.DataFolder,
h.BridgeContext.WhappConn,
)
if err != nil {
logString := "Failed to restore whatsapp connection: " + err.Error()
log.Println(logString)
h.BridgeContext.SendLog(logString)
return
}
}
logString := "Whatsapp Error: " + err.Error()
log.Println(logString)

@ -27,34 +27,46 @@ func CreateAndLoginWhappConnection(
var session whatsapp.Session
sessionFile := storageDir + "/whapp-session.json"
sessionFile := WhappSessionFileName(storageDir)
if _, err := os.Stat(sessionFile); os.IsNotExist(err) {
session, err = WhappQrLogin(storageDir, ctx)
if err != nil {
return err
}
} else {
session = whatsapp.Session{}
sessionJson, err := ioutil.ReadFile(sessionFile)
err = json.Unmarshal(sessionJson, &session)
return StoreWhappSession(session, storageDir)
}
if err != nil {
return err
}
return RestoreWhappSessionFromStorage(storageDir, wac)
}
session, err = wac.RestoreWithSession(session)
func RestoreWhappSessionFromStorage(storageDir string, wac *whatsapp.Conn) error {
storedSession, err := GetStoredWhappSession(storageDir)
if err != nil {
return err
}
if err != nil {
return err
}
session, err := wac.RestoreWithSession(*storedSession)
if err != nil {
return err
}
err = StoreWhappSession(session, storageDir)
return StoreWhappSession(session, storageDir)
}
return err
func WhappSessionFileName(storageDir string) string {
return storageDir + "/whapp-session.json"
}
func GetStoredWhappSession(storageDir string) (*whatsapp.Session, error) {
session := &whatsapp.Session{}
sessionJson, err := ioutil.ReadFile(WhappSessionFileName(storageDir))
err = json.Unmarshal(sessionJson, session)
return session, err
}
func WhappQrLogin(

Loading…
Cancel
Save