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
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 57s
This commit is contained in:
1 parent
d45b3cd0b3
commit
177b69234c
6 files changed
+558
-767
No files matched your search
+12
-20
@@ -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(`
|
||||
|
||||
Reference in new issue
Block a user