Validate aliases, addresses and phone numbers in the send menu #176

Merged
kamikazechaser merged 14 commits from alias-address-validation into master 2024-11-26 07:24:57 +01:00
Showing only changes of commit 2a36b31750 - Show all commits

View File

@ -1,6 +1,7 @@
package common
import (
"errors"
"fmt"
"regexp"
"strings"
@ -48,8 +49,12 @@ func CheckRecipient(recipient string) (string, error) {
return "", fmt.Errorf("invalid recipient: must be a phone number, address or alias")
}
// FormatPhoneNumber formats a Kenyan phone number to "254xxxxxxxx".
// FormatPhoneNumber formats a Kenyan phone number to "+254xxxxxxxx".
kamikazechaser marked this conversation as resolved Outdated

It should be + prefixed. Why? That is how we save it in our common db (graph) and also how most, if not all, API providers expect the phone number.

It should be + prefixed. Why? That is how we save it in our common db (graph) and also how most, if not all, API providers expect the phone number.

Thanks, this has been updated

Thanks, this has been updated
func FormatPhoneNumber(phone string) (string, error) {
if !IsValidPhoneNumber(phone) {
return "", errors.New("invalid phone number")
}
// Remove any leading "+" and spaces
phone = strings.TrimPrefix(phone, "+")
phone = strings.ReplaceAll(phone, " ", "")
@ -59,5 +64,10 @@ func FormatPhoneNumber(phone string) (string, error) {
phone = "254" + phone[1:]
}
return phone, nil
}
// Add "+" if not already present
if !strings.HasPrefix(phone, "254") {
return "", errors.New("unexpected format")
}
return "+" + phone, nil
}