Limited message size on client side
continuous-integration/drone/push Build is passing Details

This commit is contained in:
DutchEllie 2022-03-13 16:17:27 +01:00
parent 081b58bb16
commit d54fff9c85
Signed by: DutchEllie
SSH Key Fingerprint: SHA256:dKq6ZSgN5E3Viqrw/+xAdf2VdR6hdRGNyrYqXXwfjTY
2 changed files with 81 additions and 2 deletions

View File

@ -12,7 +12,8 @@ type guestbookForm struct {
name string
message string
OnSubmit func(
gbModalOpen bool
OnSubmit func(
name string,
message string,
) // Handler to implement which calls the api
@ -45,9 +46,23 @@ func (g *guestbookForm) Render() app.UI {
if g.name == "" || g.message == "" {
fmt.Printf("Error: one or more field(s) are empty. For now unhandled\n")
}
g.OnSubmit(g.name, g.message)
if len(g.name) > 40 || len(g.message) > 360 {
fmt.Printf("Error: Your message is too long fucker\n")
g.gbModalOpen = true
return
}
g.clear()
g.OnSubmit(g.name, g.message)
}),
app.If(
g.gbModalOpen,
&guestbookAlertModal{
OnClose: func() {
g.gbModalOpen = false
g.Update()
},
},
),
).Class("content")
}
@ -55,3 +70,32 @@ func (g *guestbookForm) clear() {
g.name = ""
g.message = ""
}
type guestbookAlertModal struct {
app.Compo
PreviousAttempts int
OnClose func() // For when we close the modal
}
func (g *guestbookAlertModal) Render() app.UI {
return app.Div().
Class("gb-modal").
ID("gbModal").
OnClick(func(ctx app.Context, e app.Event) {
g.OnClose()
}).
Body(
app.Div().
Class("gb-modal-content").
Body(
app.Span().Class("close").Text("X").
OnClick(func(ctx app.Context, e app.Event) {
//modal := app.Window().GetElementByID("gbModal")
//modal.Set("style", "none")
g.OnClose()
}),
app.P().Text("Your name must be <= 40 and your message must be <= 360 characters"),
),
)
}

View File

@ -101,6 +101,41 @@ div .date {
color:white;
}
.gb-modal {
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.gb-modal-content {
background-color: #fefefe;
color: black;
margin: 15% auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: black;
text-decoration: none;
cursor: pointer;
}
.friend-frame {
width: 290px;
height: 200px;