group selector dialog: loading indicator, tracking
This commit is contained in:
		
							parent
							
								
									f35799c129
								
							
						
					
					
						commit
						d2471e2a02
					
				| 
						 | 
					@ -10,6 +10,8 @@ import { Modal } from 'web/components/layout/modal'
 | 
				
			||||||
import { PillButton } from 'web/components/buttons/pill-button'
 | 
					import { PillButton } from 'web/components/buttons/pill-button'
 | 
				
			||||||
import { Button } from 'web/components/button'
 | 
					import { Button } from 'web/components/button'
 | 
				
			||||||
import { Group } from 'common/group'
 | 
					import { Group } from 'common/group'
 | 
				
			||||||
 | 
					import { LoadingIndicator } from '../loading-indicator'
 | 
				
			||||||
 | 
					import { withTracking } from 'web/lib/service/analytics'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default function GroupSelectorDialog(props: {
 | 
					export default function GroupSelectorDialog(props: {
 | 
				
			||||||
  open: boolean
 | 
					  open: boolean
 | 
				
			||||||
| 
						 | 
					@ -65,20 +67,26 @@ export default function GroupSelectorDialog(props: {
 | 
				
			||||||
        </p>
 | 
					        </p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <div className="scrollbar-hide items-start gap-2 overflow-x-auto">
 | 
					        <div className="scrollbar-hide items-start gap-2 overflow-x-auto">
 | 
				
			||||||
          {user &&
 | 
					          {!user || displayedGroups.length === 0 ? (
 | 
				
			||||||
 | 
					            <LoadingIndicator spinnerClassName="h-12 w-12" />
 | 
				
			||||||
 | 
					          ) : (
 | 
				
			||||||
            displayedGroups.map((group) => (
 | 
					            displayedGroups.map((group) => (
 | 
				
			||||||
              <PillButton
 | 
					              <PillButton
 | 
				
			||||||
                selected={memberGroupIds.includes(group.id)}
 | 
					                selected={memberGroupIds.includes(group.id)}
 | 
				
			||||||
                onSelect={() =>
 | 
					                onSelect={withTracking(
 | 
				
			||||||
                  memberGroupIds.includes(group.id)
 | 
					                  () =>
 | 
				
			||||||
                    ? leaveGroup(group, user.id)
 | 
					                    memberGroupIds.includes(group.id)
 | 
				
			||||||
                    : joinGroup(group, user.id)
 | 
					                      ? leaveGroup(group, user.id)
 | 
				
			||||||
                }
 | 
					                      : joinGroup(group, user.id),
 | 
				
			||||||
 | 
					                  'toggle group pill',
 | 
				
			||||||
 | 
					                  { group: group.slug }
 | 
				
			||||||
 | 
					                )}
 | 
				
			||||||
                className="mr-1 mb-2 max-w-[12rem] truncate"
 | 
					                className="mr-1 mb-2 max-w-[12rem] truncate"
 | 
				
			||||||
              >
 | 
					              >
 | 
				
			||||||
                {group.name}
 | 
					                {group.name}
 | 
				
			||||||
              </PillButton>
 | 
					              </PillButton>
 | 
				
			||||||
            ))}
 | 
					            ))
 | 
				
			||||||
 | 
					          )}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
      </Col>
 | 
					      </Col>
 | 
				
			||||||
      <Col>
 | 
					      <Col>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user