Changeset View
Changeset View
Standalone View
Standalone View
native/chat/settings/thread-settings-member-tooltip-modal.react.js
// @flow | // @flow | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { Alert } from 'react-native'; | import { Alert } from 'react-native'; | ||||
import { | import { | ||||
removeUsersFromThread, | removeUsersFromThread, | ||||
changeThreadMemberRoles, | changeThreadMemberRoles, | ||||
} from 'lib/actions/thread-actions'; | } from 'lib/actions/thread-actions'; | ||||
import { | import { | ||||
memberIsAdmin, | memberIsAdmin, | ||||
removeMemberFromThread, | removeMemberFromThread, | ||||
switchMemberAdminRoleInThread, | switchMemberAdminRoleInThread, | ||||
} from 'lib/shared/thread-utils'; | } from 'lib/shared/thread-utils'; | ||||
import { stringForUser } from 'lib/shared/user-utils'; | import { stringForUser } from 'lib/shared/user-utils'; | ||||
import type { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types'; | import type { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types'; | ||||
import type { DispatchFunctions, ActionFunc } from 'lib/utils/action-utils'; | import type { DispatchFunctions, BindServerCall } from 'lib/utils/action-utils'; | ||||
import { | import { | ||||
createTooltip, | createTooltip, | ||||
type TooltipParams, | type TooltipParams, | ||||
type TooltipRoute, | type TooltipRoute, | ||||
type BaseTooltipProps, | type BaseTooltipProps, | ||||
} from '../../navigation/tooltip.react'; | } from '../../navigation/tooltip.react'; | ||||
import ThreadSettingsMemberTooltipButton from './thread-settings-member-tooltip-button.react'; | import ThreadSettingsMemberTooltipButton from './thread-settings-member-tooltip-button.react'; | ||||
export type ThreadSettingsMemberTooltipModalParams = TooltipParams<{ | export type ThreadSettingsMemberTooltipModalParams = TooltipParams<{ | ||||
+memberInfo: RelativeMemberInfo, | +memberInfo: RelativeMemberInfo, | ||||
+threadInfo: ThreadInfo, | +threadInfo: ThreadInfo, | ||||
}>; | }>; | ||||
function onRemoveUser( | function onRemoveUser( | ||||
route: TooltipRoute<'ThreadSettingsMemberTooltipModal'>, | route: TooltipRoute<'ThreadSettingsMemberTooltipModal'>, | ||||
dispatchFunctions: DispatchFunctions, | dispatchFunctions: DispatchFunctions, | ||||
bindServerCall: <F>(serverCall: ActionFunc<F>) => F, | bindServerCall: BindServerCall, | ||||
) { | ) { | ||||
const { memberInfo, threadInfo } = route.params; | const { memberInfo, threadInfo } = route.params; | ||||
const boundRemoveUsersFromThread = bindServerCall(removeUsersFromThread); | const boundRemoveUsersFromThread = bindServerCall(removeUsersFromThread); | ||||
const onConfirmRemoveUser = () => | const onConfirmRemoveUser = () => | ||||
removeMemberFromThread( | removeMemberFromThread( | ||||
threadInfo, | threadInfo, | ||||
memberInfo, | memberInfo, | ||||
dispatchFunctions.dispatchActionPromise, | dispatchFunctions.dispatchActionPromise, | ||||
Show All 10 Lines | Alert.alert( | ||||
], | ], | ||||
{ cancelable: true }, | { cancelable: true }, | ||||
); | ); | ||||
} | } | ||||
function onToggleAdmin( | function onToggleAdmin( | ||||
route: TooltipRoute<'ThreadSettingsMemberTooltipModal'>, | route: TooltipRoute<'ThreadSettingsMemberTooltipModal'>, | ||||
dispatchFunctions: DispatchFunctions, | dispatchFunctions: DispatchFunctions, | ||||
bindServerCall: <F>(serverCall: ActionFunc<F>) => F, | bindServerCall: BindServerCall, | ||||
) { | ) { | ||||
const { memberInfo, threadInfo } = route.params; | const { memberInfo, threadInfo } = route.params; | ||||
const isCurrentlyAdmin = memberIsAdmin(memberInfo, threadInfo); | const isCurrentlyAdmin = memberIsAdmin(memberInfo, threadInfo); | ||||
const boundChangeThreadMemberRoles = bindServerCall(changeThreadMemberRoles); | const boundChangeThreadMemberRoles = bindServerCall(changeThreadMemberRoles); | ||||
const onConfirmMakeAdmin = () => | const onConfirmMakeAdmin = () => | ||||
switchMemberAdminRoleInThread( | switchMemberAdminRoleInThread( | ||||
threadInfo, | threadInfo, | ||||
memberInfo, | memberInfo, | ||||
Show All 36 Lines |