diff --git a/.env.default b/.env.default index 33c9528..7106001 100644 --- a/.env.default +++ b/.env.default @@ -25,5 +25,5 @@ # ----------------------------------- # WhatsApp Configuration # ----------------------------------- -# WHATSAPP_DB_TYPE=sqlite3 -# WHATSAPP_DB_URI=file:dbs/WhatsApp.db?_foreign_keys=on +# WHATSAPP_DATASTORE_TYPE=sqlite3 +# WHATSAPP_DATASTORE_URI=file:dbs/WhatsApp.db?_foreign_keys=on diff --git a/.env.development b/.env.development index 507b0d8..b6eade6 100644 --- a/.env.development +++ b/.env.development @@ -25,5 +25,5 @@ AUTH_JWT_EXPIRED_HOUR=24 # ----------------------------------- # WhatsApp Configuration # ----------------------------------- -WHATSAPP_DB_TYPE=sqlite3 -WHATSAPP_DB_URI=file:dbs/WhatsApp.db?_foreign_keys=on +WHATSAPP_DATASTORE_TYPE=sqlite3 +WHATSAPP_DATASTORE_URI=file:dbs/WhatsApp.db?_foreign_keys=on diff --git a/.env.production b/.env.production index ff18fea..8a01c52 100644 --- a/.env.production +++ b/.env.production @@ -25,5 +25,5 @@ AUTH_JWT_EXPIRED_HOUR=24 # ----------------------------------- # WhatsApp Configuration # ----------------------------------- -WHATSAPP_DB_TYPE=sqlite3 -WHATSAPP_DB_URI=file:dbs/WhatsApp.db?_foreign_keys=on +WHATSAPP_DATASTORE_TYPE=sqlite3 +WHATSAPP_DATASTORE_URI=file:dbs/WhatsApp.db?_foreign_keys=on diff --git a/internal/startup.go b/internal/startup.go index d219a8f..f821d82 100644 --- a/internal/startup.go +++ b/internal/startup.go @@ -8,22 +8,27 @@ import ( func Startup() { log.Print(nil).Info("Running Startup Tasks") + // Load All WhatsApp Client Devices from Datastore devices, err := pkgWhatsApp.WhatsAppDatastore.GetAllDevices() if err != nil { log.Print(nil).Error("Failed to Load WhatsApp Client Devices from Datastore") } + // Do Reconnect for Every Device in Datastore for _, device := range devices { - jid := pkgWhatsApp.WhatsAppDecomposeJID(device.ID.String()) + // Get JID from Datastore + jid := pkgWhatsApp.WhatsAppDecomposeJID(device.ID.User) + + // Mask JID for Logging Information maskJID := jid[0:len(jid)-4] + "xxxx" + // Print Restore Log log.Print(nil).Info("Restoring WhatsApp Client for " + maskJID) - err := pkgWhatsApp.WhatsAppInitClient(device, jid) - if err != nil { - log.Print(nil).Error(err.Error()) - } + // Initialize WhatsApp Client + pkgWhatsApp.WhatsAppInitClient(device, jid) + // Reconnect WhatsApp Client WebSocket err = pkgWhatsApp.WhatsAppReconnect(jid) if err != nil { log.Print(nil).Error(err.Error()) diff --git a/internal/whatsapp/whatsapp.go b/internal/whatsapp/whatsapp.go index ff78e0e..f0540ce 100644 --- a/internal/whatsapp/whatsapp.go +++ b/internal/whatsapp/whatsapp.go @@ -125,10 +125,7 @@ func Login(c echo.Context) error { } // Initialize WhatsApp Client - err = pkgWhatsApp.WhatsAppInitClient(nil, jid) - if err != nil { - return router.ResponseInternalError(c, err.Error()) - } + pkgWhatsApp.WhatsAppInitClient(nil, jid) // Get WhatsApp QR Code Image qrCodeImage, qrCodeTimeout, err := pkgWhatsApp.WhatsAppLogin(jid) diff --git a/pkg/whatsapp/whatsapp.go b/pkg/whatsapp/whatsapp.go index 03fa8fc..a961ba9 100644 --- a/pkg/whatsapp/whatsapp.go +++ b/pkg/whatsapp/whatsapp.go @@ -23,18 +23,14 @@ var WhatsAppDatastore *sqlstore.Container var WhatsAppClient = make(map[string]*whatsmeow.Client) func init() { - WhatsAppInitDB() -} - -func WhatsAppInitDB() { var err error - dbType, err := env.GetEnvString("WHATSAPP_DB_TYPE") + dbType, err := env.GetEnvString("WHATSAPP_DATASTORE_TYPE") if err != nil { log.Print(nil).Fatal("Error Parse Environment Variable for WhatsApp Client Datastore Type") } - dbURI, err := env.GetEnvString("WHATSAPP_DB_URI") + dbURI, err := env.GetEnvString("WHATSAPP_DATASTORE_URI") if err != nil { log.Print(nil).Fatal("Error Parse Environment Variable for WhatsApp Client Datastore URI") } @@ -47,7 +43,7 @@ func WhatsAppInitDB() { WhatsAppDatastore = datastore } -func WhatsAppInitClient(device *store.Device, jid string) error { +func WhatsAppInitClient(device *store.Device, jid string) { if WhatsAppClient[jid] == nil { if device == nil { // Initialize New WhatsApp Client Device in Datastore @@ -62,8 +58,6 @@ func WhatsAppInitClient(device *store.Device, jid string) error { // And Save it to The Map WhatsAppClient[jid] = whatsmeow.NewClient(device, nil) } - - return nil } func WhatsAppGenerateQR(qrChan <-chan whatsmeow.QRChannelItem) (string, int) {