 558897fe53
			
		
	
	
		558897fe53
		
			
		
	
	
	
	
		
			
			* Migrates Dialog to ui package * Migrates Alert to ui * Migrate Button to ui * UI and lib migrations * Add missing imports * Update Error.tsx
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import showToast from "@calcom/lib/notification";
 | |
| 
 | |
| import { trpc, inferQueryOutput } from "@lib/trpc";
 | |
| 
 | |
| import TeamListItem from "./TeamListItem";
 | |
| 
 | |
| interface Props {
 | |
|   teams: inferQueryOutput<"viewer.teams.list">;
 | |
| }
 | |
| 
 | |
| export default function TeamList(props: Props) {
 | |
|   const utils = trpc.useContext();
 | |
| 
 | |
|   function selectAction(action: string, teamId: number) {
 | |
|     switch (action) {
 | |
|       case "disband":
 | |
|         deleteTeam(teamId);
 | |
|         break;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   const deleteTeamMutation = trpc.useMutation("viewer.teams.delete", {
 | |
|     async onSuccess() {
 | |
|       await utils.invalidateQueries(["viewer.teams.list"]);
 | |
|     },
 | |
|     async onError(err) {
 | |
|       showToast(err.message, "error");
 | |
|     },
 | |
|   });
 | |
| 
 | |
|   function deleteTeam(teamId: number) {
 | |
|     deleteTeamMutation.mutate({ teamId });
 | |
|   }
 | |
| 
 | |
|   return (
 | |
|     <div>
 | |
|       <ul className="mb-2 divide-y divide-neutral-200 rounded border bg-white">
 | |
|         {props.teams.map((team) => (
 | |
|           <TeamListItem
 | |
|             key={team?.id as number}
 | |
|             team={team}
 | |
|             onActionSelect={(action: string) => selectAction(action, team?.id as number)}></TeamListItem>
 | |
|         ))}
 | |
|       </ul>
 | |
|     </div>
 | |
|   );
 | |
| }
 |