feat(lists): replace category buttons with dynamic hashtag categories and group open items by hashtag
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 59s
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 59s
This commit is contained in:
1 parent
7bc5fbe001
commit
51244c736c
2 files changed
+187
-79
No files matched your search
@@ -7,6 +7,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -1887,12 +1888,28 @@ func (s *Store) CreateListItem(listID, content, category, quantity string, sortO
|
||||
if content == "" {
|
||||
return nil, errors.New("item content cannot be empty")
|
||||
}
|
||||
|
||||
category = strings.TrimSpace(category)
|
||||
// Auto-extract hashtag if category is empty
|
||||
if category == "" && strings.Contains(content, "#") {
|
||||
re := regexp.MustCompile(`#([a-zA-Z0-9äöüÄÖÜß_-]+)`)
|
||||
if m := re.FindStringSubmatch(content); len(m) > 1 {
|
||||
category = m[1]
|
||||
cleaned := strings.TrimSpace(re.ReplaceAllString(content, ""))
|
||||
if cleaned != "" {
|
||||
content = cleaned
|
||||
}
|
||||
}
|
||||
} else if category != "" {
|
||||
category = strings.TrimPrefix(category, "#")
|
||||
}
|
||||
|
||||
now := domain.NowISO()
|
||||
it := &domain.ListItem{
|
||||
ID: domain.NewID("itm"),
|
||||
ListID: listID,
|
||||
Content: content,
|
||||
Category: strings.TrimSpace(category),
|
||||
Category: category,
|
||||
Quantity: strings.TrimSpace(quantity),
|
||||
IsCompleted: false,
|
||||
SortOrder: sortOrder,
|
||||
|
||||
Reference in new issue
Block a user