appview/strings: allow extensionless filenames #516

merged
opened by harperandrews.org targeting master from [deleted fork]: allow-extensionless-strings
Changed files
+2 -21
appview
db
pages
templates
strings
fragments
strings
+1 -9
appview/db/strings.go
···
func (s String) Validate() error {
var err error
-
if !strings.Contains(s.Filename, ".") {
-
err = errors.Join(err, fmt.Errorf("missing filename extension"))
-
}
-
-
if strings.HasSuffix(s.Filename, ".") {
-
err = errors.Join(err, fmt.Errorf("filename ends with `.`"))
-
}
-
if utf8.RuneCountInString(s.Filename) > 140 {
err = errors.Join(err, fmt.Errorf("filename too long"))
}
···
filename = excluded.filename,
description = excluded.description,
content = excluded.content,
-
edited = case
+
edited = case
when
strings.content != excluded.content
or strings.filename != excluded.filename
+1 -1
appview/pages/templates/strings/fragments/form.html
···
type="text"
id="filename"
name="filename"
-
placeholder="Filename with extension"
+
placeholder="Filename"
required
value="{{ .String.Filename }}"
class="md:max-w-64 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400 px-3 py-2 border rounded"
-11
appview/strings/strings.go
···
"path"
"slices"
"strconv"
-
"strings"
"time"
"tangled.sh/tangled.sh/core/api/tangled"
···
fail("Empty filename.", nil)
return
}
-
if !strings.Contains(filename, ".") {
-
// TODO: make this a htmx form validation
-
fail("No extension provided for filename.", nil)
-
return
-
}
content := r.FormValue("content")
if content == "" {
···
fail("Empty filename.", nil)
return
}
-
if !strings.Contains(filename, ".") {
-
// TODO: make this a htmx form validation
-
fail("No extension provided for filename.", nil)
-
return
-
}
content := r.FormValue("content")
if content == "" {