feat: unify sharing modal and clean up team share duplication in lists
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 57s

This commit is contained in:
sandrodach committed 2026-10-25 17:41:18 +01:00
1 parent d45b3cd0b3
commit 177b69234c
6 files changed
+558 -767

No files matched your search

+12 -20
View File
@@ -2374,21 +2374,6 @@ func (s *Store) CreateSpaceTeamShare(currentUserID, spaceID, teamID, role string
return nil, err
}
// Add team members as space members, but preserve owner role!
members, _ := s.GetTeamMembers(cleanTeamID)
for _, tm := range members {
var curRole string
_ = s.db.QueryRow(`SELECT role FROM space_members WHERE space_id = ? AND user_id = ?`, spaceID, tm.UserID).Scan(&curRole)
if curRole == "owner" {
continue
}
_, _ = s.db.Exec(
`INSERT INTO space_members (space_id, user_id, role, joined_at) VALUES (?, ?, ?, ?)
ON CONFLICT(space_id, user_id) DO UPDATE SET role = excluded.role`,
spaceID, tm.UserID, role, now,
)
}
return &domain.SpaceShare{
ID: shareID,
SpaceID: spaceID,
@@ -2596,12 +2581,13 @@ func (s *Store) GetListsForSpace(spaceID string) ([]domain.SharedList, error) {
func (s *Store) GetAllListsForUser(userID string) ([]domain.SharedList, error) {
rows, err := s.db.Query(
`SELECT l.id, l.space_id, l.title, l.icon, l.list_type, l.updated_at, l.created_at
`SELECT DISTINCT l.id, l.space_id, l.title, l.icon, l.list_type, l.updated_at, l.created_at
FROM lists l
JOIN space_members sm ON sm.space_id = l.space_id
WHERE sm.user_id = ?
LEFT JOIN space_members sm ON sm.space_id = l.space_id AND sm.user_id = ?
LEFT JOIN space_team_shares sts ON sts.space_id = l.space_id AND sts.team_id IN (SELECT team_id FROM team_members WHERE user_id = ?)
WHERE sm.user_id = ? OR sts.team_id IS NOT NULL
ORDER BY l.updated_at DESC`,
userID,
userID, userID, userID,
)
if err != nil {
return nil, err
@@ -2840,7 +2826,13 @@ func (s *Store) GetDashboardStats(userID string) (*domain.DashboardStats, error)
_ = s.db.QueryRow(`SELECT COUNT(*) FROM thoughts WHERE user_id = ? AND (status = 'kept' OR (status = 'converted' AND converted_type = 'task')) AND is_completed = 1`, userID).Scan(&st.TasksDoneCount)
_ = s.db.QueryRow(`SELECT COUNT(*) FROM documents WHERE user_id = ? AND is_archived = 0`, userID).Scan(&st.DocsCount)
_ = s.db.QueryRow(`SELECT COUNT(*) FROM thoughts WHERE user_id = ? AND status = 'discarded'`, userID).Scan(&st.DiscardedCount)
_ = s.db.QueryRow(`SELECT COUNT(*) FROM lists l JOIN space_members sm ON sm.space_id = l.space_id WHERE sm.user_id = ?`, userID).Scan(&st.ListsCount)
_ = s.db.QueryRow(`
SELECT COUNT(DISTINCT l.id)
FROM lists l
LEFT JOIN space_members sm ON sm.space_id = l.space_id AND sm.user_id = ?
LEFT JOIN space_team_shares sts ON sts.space_id = l.space_id AND sts.team_id IN (SELECT team_id FROM team_members WHERE user_id = ?)
WHERE sm.user_id = ? OR sts.team_id IS NOT NULL`,
userID, userID, userID).Scan(&st.ListsCount)
// Count open (uncompleted) To-Dos across accessible workspace documents (owned or shared)
docRows, err := s.db.Query(`