Browse Source

feat: add pair code

pull/171/head
Aldino Kemal 2 years ago
parent
commit
3bb912d28c
  1. 4
      src/internal/rest/app.go
  2. 8
      src/services/app.go
  3. 5
      src/views/components/AppLogin.js
  4. 17
      src/views/components/AppLoginWithCode.js
  5. 2
      src/views/index.html

4
src/internal/rest/app.go

@ -38,7 +38,7 @@ func (handler *App) Login(c *fiber.Ctx) error {
}
func (handler *App) LoginWithCode(c *fiber.Ctx) error {
loginCode, err := handler.Service.LoginWithCode(c.UserContext(), c.Query("phone"))
pairCode, err := handler.Service.LoginWithCode(c.UserContext(), c.Query("phone"))
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -46,7 +46,7 @@ func (handler *App) LoginWithCode(c *fiber.Ctx) error {
Code: "SUCCESS",
Message: "Login with code success",
Results: map[string]any{
"login_code": loginCode,
"pair_code": pairCode,
},
})
}

8
src/services/app.go

@ -7,7 +7,6 @@ import (
"github.com/aldinokemal/go-whatsapp-web-multidevice/config"
domainApp "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/app"
pkgError "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/error"
"github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/whatsapp"
"github.com/aldinokemal/go-whatsapp-web-multidevice/validations"
fiberUtils "github.com/gofiber/fiber/v2/utils"
"github.com/sirupsen/logrus"
@ -103,12 +102,7 @@ func (service serviceApp) LoginWithCode(ctx context.Context, phoneNumber string)
return loginCode, pkgError.ErrAlreadyLoggedIn
}
// check if on whatsapp
if exist := whatsapp.IsOnWhatsapp(service.WaCli, phoneNumber+"@s.whatsapp.net"); !exist {
return loginCode, pkgError.InvalidJID(fmt.Sprintf("Phone %s is not on whatsapp", phoneNumber))
}
loginCode, err = service.WaCli.PairPhone(phoneNumber, true, whatsmeow.PairClientChrome, "Chrome")
loginCode, err = service.WaCli.PairPhone(phoneNumber, true, whatsmeow.PairClientChrome, "Chrome (Linux)")
if err != nil {
return loginCode, err
}

5
src/views/components/AppLogin.js

@ -1,5 +1,8 @@
export default {
name: 'AppLogin',
props: {
connected: null,
},
data() {
return {
login_link: '',
@ -9,6 +12,8 @@ export default {
methods: {
async openModal() {
try {
if (this.connected) throw Error('you already logged in :)');
await this.submitApi();
$('#modalLogin').modal({
onApprove: function () {

17
src/views/components/AppLoginWithCode.js

@ -3,6 +3,17 @@ export default {
props: {
connected: null,
},
watch: {
connected: function(val) {
if (val) {
// reset form
this.phone = '';
this.pair_code = null;
$('#modalLoginWithCode').modal('hide');
}
},
},
data: () => {
return {
phone: '',
@ -13,6 +24,8 @@ export default {
methods: {
async openModal() {
try {
if (this.connected) throw Error('you already logged in :)');
$('#modalLoginWithCode').modal({
onApprove: function() {
return false;
@ -26,8 +39,8 @@ export default {
if (this.submitting) return;
try {
this.submitting = true;
const { response } = await this.submitApi();
this.pair_code = response.pair_code;
const { data } = await this.submitApi();
this.pair_code = data.results.pair_code;
} catch (err) {
showErrorInfo(err);
} finally {

2
src/views/index.html

@ -41,7 +41,7 @@
</div>
<div class="ui three column stackable grid cards">
<app-login></app-login>
<app-login :connected="connected_devices"></app-login>
<app-logout @reload-devices="handleReloadDevice"></app-logout>
<app-reconnect @reload-devices="handleReloadDevice"></app-reconnect>
<app-login-with-code :connected="connected_devices"></app-login-with-code>

Loading…
Cancel
Save