diff --git a/client/src/client/page/login.gleam b/client/src/client/page/login.gleam index 806d22d..e7e61cb 100644 --- a/client/src/client/page/login.gleam +++ b/client/src/client/page/login.gleam @@ -3,7 +3,6 @@ import client/ui/input import glaze/oat/alert import glaze/oat/card import glaze/oat/form -import gleam/string import lustre/attribute.{class} as attr import lustre/effect.{type Effect} import lustre/element @@ -70,10 +69,6 @@ pub type LoginStep { pub fn update(model: Model, msg: Msg) -> LoginStep { case msg { UserTypedEmail(value:) -> { - let value = - string.trim(value) - |> string.lowercase() - let email = case email.parse(value) { _ if value == "" -> { let is_valid = False @@ -99,7 +94,7 @@ pub fn update(model: Model, msg: Msg) -> LoginStep { } UserTypedPassword(value:) -> { - let password = case string.trim(value) { + let password = case value { "" -> { let is_valid = False let hint = "Password cant be empty" diff --git a/client/src/client/page/signup.gleam b/client/src/client/page/signup.gleam index 495a5e4..2e8181f 100644 --- a/client/src/client/page/signup.gleam +++ b/client/src/client/page/signup.gleam @@ -3,7 +3,6 @@ import client/ui/input import glaze/oat/card import glaze/oat/form import gleam/list -import gleam/string import lustre/attribute.{class} as attr import lustre/effect.{type Effect} import lustre/element @@ -133,10 +132,6 @@ pub fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) { } UserTypedEmail(value:) -> { - let value = - string.trim(value) - |> string.lowercase() - let user_email = case email.parse(value) { _ if value == "" -> { let is_valid = False @@ -162,7 +157,7 @@ pub fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) { } UserTypedPhone(value:) -> { - let user_phone = case string.trim(value) { + let user_phone = case value { "" -> { let hint = "Phone cannot be empty" let is_valid = False @@ -186,7 +181,6 @@ pub fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) { } UserTypedPassword(value:) -> { - let value = string.trim(value) let match = value == model.user_confirm_password.value let user_password = case value { @@ -223,7 +217,6 @@ pub fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) { } UserTypedConfirmPassword(value:) -> { - let value = string.trim(value) let match = value == model.user_password.value let user_confirm_password = case value { diff --git a/shared/src/shared/user/email.gleam b/shared/src/shared/user/email.gleam index 91dbe22..021286f 100644 --- a/shared/src/shared/user/email.gleam +++ b/shared/src/shared/user/email.gleam @@ -1,54 +1,17 @@ import gleam/dynamic/decode -import gleam/list -import gleam/result import gleam/string -pub fn parse(str: String) -> Result(Nil, Nil) { - use str <- result.try(find_invalid_characters(str)) - use #(first, second) <- result.try(require_separator(str)) - - case string.is_empty(first) || string.is_empty(second) { - True -> Error(Nil) - False -> Ok(Nil) +pub fn parse(input: String) -> Result(String, Nil) { + case string.contains(input, "@") { + True -> Ok(input) + False -> Error(Nil) } } pub fn decoder() -> decode.Decoder(String) { - use str <- decode.then(decode.string) - case parse(str) { - Ok(_) -> decode.success(str) + use input <- decode.then(decode.string) + case parse(input) { + Ok(value) -> decode.success(value) Error(_) -> decode.failure("example@email.com", "email") } } - -// helpers - -fn require_separator(str: String) -> Result(#(String, String), Nil) { - use str <- result.try(limit_separator_amount(str)) - let pairs = string.split_once(str, "@") - - case pairs { - Ok(value) -> Ok(value) - Error(_) -> Error(Nil) - } -} - -fn limit_separator_amount(str: String) -> Result(String, Nil) { - let found = - string.to_graphemes(str) - |> list.count(fn(char) { char == "@" }) - - case found { - 1 -> Ok(str) - _ -> Error(Nil) - } -} - -fn find_invalid_characters(value: String) -> Result(String, Nil) { - let invalid = ["\"", "'", "-"] - - case list.any(invalid, string.contains(value, _)) { - True -> Error(Nil) - False -> Ok(value) - } -}