mirror of
https://github.com/mautrix/whatsapp.git
synced 2025-03-14 14:15:38 +00:00
startchat: implement ValidateUserID and CreateChatWithGhost interfaces
This commit is contained in:
parent
ca0e070f57
commit
f311f323b5
1 changed files with 28 additions and 0 deletions
|
@ -25,6 +25,7 @@ import (
|
|||
"go.mau.fi/whatsmeow/types"
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/mautrix/bridgev2"
|
||||
"maunium.net/go/mautrix/bridgev2/networkid"
|
||||
|
||||
"go.mau.fi/mautrix-whatsapp/pkg/waid"
|
||||
)
|
||||
|
@ -33,6 +34,8 @@ var (
|
|||
_ bridgev2.IdentifierResolvingNetworkAPI = (*WhatsAppClient)(nil)
|
||||
_ bridgev2.ContactListingNetworkAPI = (*WhatsAppClient)(nil)
|
||||
_ bridgev2.UserSearchingNetworkAPI = (*WhatsAppClient)(nil)
|
||||
_ bridgev2.GhostDMCreatingNetworkAPI = (*WhatsAppClient)(nil)
|
||||
_ bridgev2.IdentifierValidatingNetwork = (*WhatsAppConnector)(nil)
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -69,6 +72,31 @@ func (wa *WhatsAppClient) validateIdentifer(number string) (types.JID, error) {
|
|||
}
|
||||
}
|
||||
|
||||
func isOnlyNumbers(user string) bool {
|
||||
for _, char := range user {
|
||||
if char < '0' || char > '9' {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (wa *WhatsAppConnector) ValidateUserID(id networkid.UserID) bool {
|
||||
jid := waid.ParseUserID(id)
|
||||
switch jid.Server {
|
||||
case types.DefaultUserServer:
|
||||
return len(jid.User) <= 13 && (jid.User == "0" || len(jid.User) >= 7) && isOnlyNumbers(jid.User)
|
||||
case types.HiddenUserServer:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func (wa *WhatsAppClient) CreateChatWithGhost(ctx context.Context, ghost *bridgev2.Ghost) (*bridgev2.CreateChatResponse, error) {
|
||||
return &bridgev2.CreateChatResponse{PortalKey: wa.makeWAPortalKey(waid.ParseUserID(ghost.ID))}, nil
|
||||
}
|
||||
|
||||
func (wa *WhatsAppClient) ResolveIdentifier(ctx context.Context, identifier string, startChat bool) (*bridgev2.ResolveIdentifierResponse, error) {
|
||||
jid, err := wa.validateIdentifer(identifier)
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Reference in a new issue