/
githubmirror
/
client
Обзор
Документация
Войти
/
githubmirror
/
client
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
shared/teams/container.tsx
98 строк
3 KB
chrisnojima
build(mobile): harden gobuild.sh and go bind pipeline 2 (#29364)
08 июл 2026, 15:25
Не верифицирован
08 июл 2026, 15:25
19b55b3
Код
Авторство
О чём код?
import * as C from '@/constants' import * as Teams from '@/constants/teams' import {useNotifState} from '@/stores/notifications' import * as Kb from '@/common-adapters' import type * as T from '@/constants/types' import Main from './main' import {ActivityLevelsProvider, useActivityLevels} from './common' import {useTeamsList} from './use-teams-list' import {useHeaderActions} from './get-options' import {useNavigation} from '@react-navigation/native' const orderTeams = ( teams: ReadonlyArray<T.Teams.TeamMeta>, newRequests: ReadonlyMap<T.Teams.TeamID, ReadonlySet<string>>, teamIDToResetUsers: ReadonlyMap<T.Teams.TeamID, ReadonlySet<string>>, newTeams: ReadonlySet<T.Teams.TeamID>, sortOrder: T.Immutable<T.Teams.TeamListSort>, activityLevels: T.Immutable<T.Teams.ActivityLevels>, filter: string ): Array<T.Teams.TeamMeta> => { const filterLC = filter.toLowerCase().trim() const teamsFiltered = filter ? teams.filter(meta => meta.teamname.toLowerCase().includes(filterLC)) : [...teams] return teamsFiltered.sort((a, b) => { const sizeDiff = Teams.getTeamRowBadgeCount(newRequests, teamIDToResetUsers, b.id) - Teams.getTeamRowBadgeCount(newRequests, teamIDToResetUsers, a.id) if (sizeDiff !== 0) return sizeDiff const newTeamsDiff = (newTeams.has(b.id) ? 1 : 0) - (newTeams.has(a.id) ? 1 : 0) if (newTeamsDiff !== 0) return newTeamsDiff const nameCompare = a.teamname.localeCompare(b.teamname) switch (sortOrder) { case 'role': return Teams.compareTeamRoles(a.role, b.role) || nameCompare case 'activity': { const activityA = activityLevels.teams.get(a.id) const activityB = activityLevels.teams.get(b.id) return Teams.compareActivityLevels(activityA, activityB) || nameCompare } default: return nameCompare } }) } type Props = { filter?: string sort?: T.Teams.TeamListSort } const TeamsRoot = ({filter = '', sort = 'role'}: Props) => { const {reload, teams} = useTeamsList() const activityLevels = useActivityLevels() const {deletedTeams, newTeamRequests, newTeams, teamIDToResetUsers} = useNotifState( C.useShallow(s => { return { deletedTeams: s.deletedTeams, newTeamRequests: s.newTeamRequests, newTeams: s.newTeams, teamIDToResetUsers: s.teamIDToResetUsers, } }) ) const orderedTeams = orderTeams(teams, newTeamRequests, teamIDToResetUsers, newTeams, sort, activityLevels, filter) const teamItems = orderedTeams.map(teamMeta => ({ activityLevel: activityLevels.teams.get(teamMeta.id) || 'none', badgeCount: Teams.getTeamRowBadgeCount(newTeamRequests, teamIDToResetUsers, teamMeta.id), id: teamMeta.id, isNew: newTeams.has(teamMeta.id), teamMeta, })) const navigation = useNavigation('teamsRoot') const {onCreateTeam, onJoinTeam} = useHeaderActions() return ( <Kb.Reloadable waitingKeys={C.waitingKeyTeamsLoaded} onReload={reload}> <Main onCreateTeam={onCreateTeam} onJoinTeam={onJoinTeam} deletedTeams={deletedTeams} onChangeSort={sortOrder => navigation.setParams({filter, sort: sortOrder})} sortOrder={sort} teams={teamItems} /> </Kb.Reloadable> ) } const TeamsRootContainer = (props: Props) => ( <ActivityLevelsProvider> <TeamsRoot {...props} /> </ActivityLevelsProvider> ) export default TeamsRootContainer