41 lines
980 B
Go
41 lines
980 B
Go
//go:build mysql
|
|
// +build mysql
|
|
|
|
package mysql
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/nyaruka/phonenumbers"
|
|
t "github.com/tinode/chat/server/store/types"
|
|
)
|
|
|
|
func normalizeUserPhone(value string) (string, error) {
|
|
value = strings.TrimSpace(strings.TrimPrefix(strings.TrimPrefix(value, "tel:"), "basic:"))
|
|
if value == "" {
|
|
return "", t.ErrMalformed
|
|
}
|
|
number, err := phonenumbers.Parse(value, "CN")
|
|
if err != nil || !phonenumbers.IsValidNumber(number) {
|
|
return "", t.ErrMalformed
|
|
}
|
|
numberType := phonenumbers.GetNumberType(number)
|
|
if numberType != phonenumbers.MOBILE && numberType != phonenumbers.FIXED_LINE_OR_MOBILE {
|
|
return "", t.ErrMalformed
|
|
}
|
|
return phonenumbers.Format(number, phonenumbers.E164), nil
|
|
}
|
|
|
|
func withoutUserTags(update map[string]any) map[string]any {
|
|
if update == nil {
|
|
return nil
|
|
}
|
|
clean := make(map[string]any, len(update))
|
|
for key, value := range update {
|
|
if key != "Tags" && key != "tags" {
|
|
clean[key] = value
|
|
}
|
|
}
|
|
return clean
|
|
}
|