Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion shared/chat/blocking/invitation-to-block.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as C from '@/constants'
import {isAssertion} from '@/constants/chat/helpers'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as Kb from '@/common-adapters'
Expand All @@ -23,7 +24,7 @@ const BlockButtons = () => {
}
const adder = blockButtonInfo.adder
const others = (team ? participantInfo.all : participantInfo.name).filter(
person => person !== currentUser && person !== adder && !Chat.isAssertion(person)
person => person !== currentUser && person !== adder && !isAssertion(person)
)

const onViewProfile = () => navToProfile(adder)
Expand Down
3 changes: 2 additions & 1 deletion shared/chat/conversation/attachment-fullscreen/hooks.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import * as React from 'react'
import * as C from '@/constants'
import {clampImageSize} from '@/constants/chat/helpers'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import type * as T from '@/constants/types'
Expand Down Expand Up @@ -42,7 +43,7 @@ export const useData = (initialOrdinal: T.Chat.Ordinal) => {
const attachmentDownload = ConvoState.useChatContext(s => s.dispatch.attachmentDownload)
const {downloadPath, fileURL: path, fullHeight, fullWidth, fileType} = message
const {previewHeight, previewURL: previewPath, previewWidth, title, transferProgress} = message
const {height: clampedHeight, width: clampedWidth} = Chat.clampImageSize(
const {height: clampedHeight, width: clampedWidth} = clampImageSize(
previewWidth,
previewHeight,
maxWidth,
Expand Down
6 changes: 2 additions & 4 deletions shared/chat/conversation/bot/install.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as C from '@/constants'
import * as ChatCommon from '@/constants/chat/common'
import * as Meta from '@/constants/chat/meta'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as Kb from '@/common-adapters'
import * as Teams from '@/stores/teams'
Expand Down Expand Up @@ -76,7 +75,6 @@ export const useBotConversationIDKey = (inConvIDKey?: T.Chat.ConversationIDKey,
const cleanInConvIDKey = T.Chat.isValidConversationIDKey(inConvIDKey ?? '') ? inConvIDKey : undefined
const [conversationIDKey, setConversationIDKey] = React.useState(cleanInConvIDKey)
const findGeneralConvIDFromTeamID = C.useRPC(T.RPCChat.localFindGeneralConvFromTeamIDRpcPromise)
const metasReceived = Chat.useChatState(s => s.dispatch.metasReceived)
const requestIDRef = React.useRef(0)

React.useEffect(() => {
Expand All @@ -99,7 +97,7 @@ export const useBotConversationIDKey = (inConvIDKey?: T.Chat.ConversationIDKey,
if (!meta) {
return
}
metasReceived([meta])
ConvoState.metasReceived([meta])
setConversationIDKey(meta.conversationIDKey)
Comment thread
chrisnojima marked this conversation as resolved.
},
() => {}
Expand All @@ -109,7 +107,7 @@ export const useBotConversationIDKey = (inConvIDKey?: T.Chat.ConversationIDKey,
requestIDRef.current += 1
}
}
}, [cleanInConvIDKey, findGeneralConvIDFromTeamID, metasReceived, teamID])
}, [cleanInConvIDKey, findGeneralConvIDFromTeamID, teamID])
return conversationIDKey
}

Expand Down
15 changes: 14 additions & 1 deletion shared/chat/conversation/header-area/index.native.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import * as C from '@/constants'
import * as Chat from '@/stores/chat'
import {chatStores} from '@/stores/convo-registry'
import * as ConvoState from '@/stores/convostate'
import {getConvoState} from '@/stores/convostate'
import * as Kb from '@/common-adapters'
Expand All @@ -13,6 +14,7 @@ import {useSafeAreaFrame} from 'react-native-safe-area-context'
import {useUsersState} from '@/stores/users'
import {useCurrentUserState} from '@/stores/current-user'
import {navToProfile} from '@/constants/router'
import * as React from 'react'

export const HeaderAreaRight = () => {
const conversationIDKey = ConvoState.useChatContext(s => s.id)
Expand Down Expand Up @@ -159,7 +161,18 @@ export const useBackBadge = () => {
const visiblePath = C.Router2.getVisiblePath()
const onTopOfInbox = visiblePath[visiblePath.length - 2]?.name === 'chatRoot'
const conversationIDKey = ConvoState.useChatContext(s => s.id)
const badgeNumber = Chat.useChatState(s => s.getBackCount(conversationIDKey))
const badgeStateVersion = Chat.useChatState(s => s.badgeStateVersion)
const badgeNumber = React.useMemo(() => {
void badgeStateVersion
let count = 0
for (const store of chatStores.values()) {
const {badge, id} = store.getState()
if (id !== conversationIDKey) {
count += badge
}
}
return count
}, [badgeStateVersion, conversationIDKey])
if (!onTopOfInbox) return 0
return badgeNumber
}
Expand Down
4 changes: 2 additions & 2 deletions shared/chat/conversation/info-panel/attachments.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as C from '@/constants'
import * as Chat from '@/stores/chat'
import {zoomImage} from '@/constants/chat/helpers'
import * as ConvoState from '@/stores/convostate'
import * as Kb from '@/common-adapters'
import type {StylesTextCrossPlatform} from '@/common-adapters/text.shared'
Expand Down Expand Up @@ -582,7 +582,7 @@ export const useAttachmentSections = (
maxMediaThumbSize,
width: thumb.width,
},
sizing: Chat.zoomImage(thumb.width, thumb.height, maxMediaThumbSize),
sizing: zoomImage(thumb.width, thumb.height, maxMediaThumbSize),
thumb,
}))
const dataChunked = useFlexWrap ? [dataUnchunked] : chunk(dataUnchunked, rowSize)
Expand Down
4 changes: 2 additions & 2 deletions shared/chat/conversation/info-panel/members.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as C from '@/constants'
import * as Chat from '@/stores/chat'
import {getBotsAndParticipants} from '@/constants/chat/helpers'
import * as ConvoState from '@/stores/convostate'
import * as Teams from '@/stores/teams'
import * as React from 'react'
Expand Down Expand Up @@ -47,7 +47,7 @@ const MembersTab = (props: Props) => {
const refreshParticipants = C.useRPC(T.RPCChat.localRefreshParticipantsRpcPromise)
const participantInfo = ConvoState.useChatContext(s => s.participants)
const participants = ConvoState.useChatContext(
C.useShallow(s => Chat.getBotsAndParticipants(s.meta, s.participants, teamMembers).participants)
C.useShallow(s => getBotsAndParticipants(s.meta, s.participants, teamMembers).participants)
)
const [lastTeamName, setLastTeamName] = React.useState('')
React.useEffect(() => {
Expand Down
3 changes: 2 additions & 1 deletion shared/chat/conversation/info-panel/settings/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as C from '@/constants'
import {isAssertion} from '@/constants/chat/helpers'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as Kb from '@/common-adapters'
Expand Down Expand Up @@ -36,7 +37,7 @@ const SettingsPanel = (props: SettingsPanelProps) => {
const teamMembers = Teams.useTeamsState(s => s.teamIDToMembers.get(teamID))
const participantInfo = ConvoState.useChatContext(s => s.participants)
const membersForBlock = (teamMembers?.size ? [...teamMembers.keys()] : participantInfo.name).filter(
u => u !== username && !Chat.isAssertion(u)
u => u !== username && !isAssertion(u)
)

const navigateAppend = ConvoState.useChatNavigateAppend()
Expand Down
2 changes: 1 addition & 1 deletion shared/chat/conversation/input-area/normal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ const ConnectedPlatformInput = function ConnectedPlatformInput() {
React.useEffect(() => {
const rows = [loadIDOnUnloadRef.current]
return () => {
Chat.useChatState.getState().dispatch.unboxRows(rows)
ConvoState.unboxRows(rows)
}
}, [loadIDOnUnloadRef])

Expand Down
4 changes: 2 additions & 2 deletions shared/chat/conversation/messages/attachment/shared.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as C from '@/constants'
import * as Chat from '@/stores/chat'
import {clampImageSize} from '@/constants/chat/helpers'
import * as ConvoState from '@/stores/convostate'
import * as Kb from '@/common-adapters'
import * as React from 'react'
Expand Down Expand Up @@ -174,7 +174,7 @@ export const getAttachmentPreviewSize = (
) => {
const {fileURL, previewHeight, previewWidth} = message
let {previewURL} = message
let {height, width} = Chat.clampImageSize(previewWidth, previewHeight, maxWidth, maxHeight)
let {height, width} = clampImageSize(previewWidth, previewHeight, maxWidth, maxHeight)
// This is mostly a sanity check and also allows us to handle HEIC even though the go side doesn't
// understand.
if (useSquareFallback && (height === 0 || width === 0)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as C from '@/constants'
import {isBigTeam as getIsBigTeam} from '@/constants/chat/helpers'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as T from '@/constants/types'
Expand All @@ -20,7 +21,7 @@ const TeamJourneyConnected = (ownProps: OwnProps) => {
const {cannotWrite, channelname, teamname, teamID} = conv
const welcomeMessage = {display: '', raw: '', set: false}
const canShowcase = Teams.useTeamsState(s => Teams.canShowcase(s, teamID))
const isBigTeam = Chat.useChatState(s => Chat.isBigTeam(s, teamID))
const isBigTeam = Chat.useChatState(s => getIsBigTeam(s.inboxLayout, teamID))
const navigateAppend = C.Router2.navigateAppend
const _onAuthorClick = (teamID: T.Teams.TeamID) => navigateAppend({name: 'team', params: {teamID}})
const dismissJourneycard = ConvoState.useChatContext(s => s.dispatch.dismissJourneycard)
Expand Down
10 changes: 4 additions & 6 deletions shared/chat/conversation/messages/special-top-message.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import * as C from '@/constants'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as T from '@/constants/types'
import * as Kb from '@/common-adapters'
Expand All @@ -17,10 +16,9 @@ import {useCurrentUserState} from '@/stores/current-user'

const ErrorMessage = () => {
const createConversationError = useChatThreadRouteParams()?.createConversationError
const createConversation = Chat.useChatState(s => s.dispatch.createConversation)

const _onCreateWithoutThem = (allowedUsers: ReadonlyArray<string>) => {
createConversation(allowedUsers)
ConvoState.createConversation(allowedUsers)
}

const navigateToInbox = C.Router2.navigateToInbox
Expand Down Expand Up @@ -120,9 +118,9 @@ function SpecialTopMessage() {
const {teamType, supersedes, retentionPolicy, teamRetentionPolicy} = meta
const loadMoreType = s.moreToLoadBack ? 'moreToLoad' : 'noMoreToLoad'
const pendingState =
s.id === Chat.pendingWaitingConversationIDKey
s.id === T.Chat.pendingWaitingConversationIDKey
? 'waiting'
: s.id === Chat.pendingErrorConversationIDKey
: s.id === T.Chat.pendingErrorConversationIDKey
? 'error'
: 'done'

Expand All @@ -132,7 +130,7 @@ function SpecialTopMessage() {
const isSelfConversation = teamType === 'adhoc' && partNum === 1 && partAll.includes(username)
const showTeamOffer =
hasLoadedEver && loadMoreType === 'noMoreToLoad' && teamType === 'adhoc' && partNum > 2
const hasOlderResetConversation = supersedes !== Chat.noConversationIDKey
const hasOlderResetConversation = supersedes !== T.Chat.noConversationIDKey
// don't show default header in the case of the retention notice being visible
const showRetentionNotice =
retentionPolicy.type !== 'retain' &&
Expand Down
4 changes: 2 additions & 2 deletions shared/chat/conversation/messages/text/reply.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as Kb from '@/common-adapters'
import * as React from 'react'
import * as Chat from '@/stores/chat'
import {zoomImage} from '@/constants/chat/helpers'
import {useIsHighlighted} from '../ids-context'
import type * as T from '@/constants/types'

Expand Down Expand Up @@ -38,7 +38,7 @@ const ReplyImage = () => {
if (!imageURL) return null
const imageHeight = replyTo.previewHeight
const imageWidth = replyTo.previewWidth
const sizing = imageWidth && imageHeight ? Chat.zoomImage(imageWidth, imageHeight, 80) : undefined
const sizing = imageWidth && imageHeight ? zoomImage(imageWidth, imageHeight, 80) : undefined
return (
<Kb.Box2 direction="vertical" relative={true} overflow="hidden">
<Kb.Box2 direction="vertical" style={sizing?.margins}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type * as React from 'react'
import * as Kb from '@/common-adapters/index'
import * as Chat from '@/stores/chat'
import {clampImageSize} from '@/constants/chat/helpers'
import {maxWidth} from '@/chat/conversation/messages/attachment/shared'
import {Video} from './video'
import {openURL} from '@/util/misc'
Expand All @@ -24,7 +24,7 @@ const UnfurlImage = (p: Props) => {
linkURL && openURL(linkURL)
}
const maxSize = Math.min(maxWidth, 320) - (widthPadding || 0)
const {height, width} = Chat.clampImageSize(p.width, p.height, maxSize, 320)
const {height, width} = clampImageSize(p.width, p.height, maxSize, 320)

return isVideo ? (
<Video
Expand Down
3 changes: 2 additions & 1 deletion shared/chat/conversation/messages/wrapper/wrapper.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as C from '@/constants'
import {getMessageKey} from '@/constants/chat/helpers'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as Kb from '@/common-adapters'
Expand Down Expand Up @@ -322,7 +323,7 @@ const getCommonMessageData = ({
hasUnfurlList,
hasUnfurlPrompts,
isEditing: editing === ordinal,
messageKey: isExplodingMessage ? Chat.getMessageKey(message) : '',
messageKey: isExplodingMessage ? getMessageKey(message) : '',
reactions,
replyTo,
sendIndicatorFailed:
Expand Down
4 changes: 2 additions & 2 deletions shared/chat/conversation/pinned-message.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as C from '@/constants'
import * as Chat from '@/stores/chat'
import {zoomImage} from '@/constants/chat/helpers'
import * as ConvoState from '@/stores/convostate'
import * as React from 'react'
import * as Teams from '@/stores/teams'
Expand Down Expand Up @@ -60,7 +60,7 @@ const PinnedMessage = function PinnedMessage() {
if (!text) {
return null
}
const sizing = imageWidth && imageHeight ? Chat.zoomImage(imageWidth, imageHeight, 30) : undefined
const sizing = imageWidth && imageHeight ? zoomImage(imageWidth, imageHeight, 30) : undefined
const pin = (
<Kb.ClickableBox className="hover_container" onClick={onClick} style={styles.container}>
<Kb.Box2 direction="horizontal" fullWidth={true} gap="tiny">
Expand Down
4 changes: 2 additions & 2 deletions shared/chat/conversation/reply-preview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as Chat from '@/stores/chat'
import {zoomImage} from '@/constants/chat/helpers'
import * as ConvoState from '@/stores/convostate'
import * as Kb from '@/common-adapters'
import * as T from '@/constants/types'
Expand Down Expand Up @@ -30,7 +30,7 @@ const ReplyPreview = () => {
const imageURL = attachment?.previewURL
const imageWidth = attachment?.previewWidth
const username = message?.author ?? ''
const sizing = imageWidth && imageHeight ? Chat.zoomImage(imageWidth, imageHeight, 80) : null
const sizing = imageWidth && imageHeight ? zoomImage(imageWidth, imageHeight, 80) : null
const setReplyTo = ConvoState.useChatUIContext(s => s.dispatch.setReplyTo)
const onCancel = () => {
setReplyTo(T.Chat.numberToOrdinal(0))
Expand Down
27 changes: 11 additions & 16 deletions shared/chat/inbox/row/teams-divider-container.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import * as C from '@/constants'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as React from 'react'
import type {ChatInboxRowItem} from '../rowitem'
import {useInboxRowsState} from '@/stores/inbox-rows'
import TeamsDivider from './teams-divider'

type Props = Omit<React.ComponentProps<typeof TeamsDivider>, 'badgeCount'> & {
Expand All @@ -11,12 +10,7 @@ type Props = Omit<React.ComponentProps<typeof TeamsDivider>, 'badgeCount'> & {

const TeamsDividerContainer = React.memo(function TeamsDividerContainer(props: Props) {
const {rows, ...rest} = props
const {badgeStateVersion, smallTeamBadgeCount} = Chat.useChatState(
C.useShallow(s => ({
badgeStateVersion: s.badgeStateVersion,
smallTeamBadgeCount: s.smallTeamBadgeCount,
}))
)
const smallTeamBadgeCount = Chat.useChatState(s => s.smallTeamBadgeCount)

const visibleSmallConvIDs = React.useMemo(() => {
const ids: Array<string> = []
Expand All @@ -28,14 +22,15 @@ const TeamsDividerContainer = React.memo(function TeamsDividerContainer(props: P
return ids
}, [rows])

const visibleBadges = React.useMemo(() => {
void badgeStateVersion // we need to trigger on this also
let total = 0
for (const conversationIDKey of visibleSmallConvIDs) {
total += ConvoState.getConvoState(conversationIDKey).badge
}
return total
}, [badgeStateVersion, visibleSmallConvIDs])
const visibleBadges = useInboxRowsState(
React.useCallback(s => {
let total = 0
for (const conversationIDKey of visibleSmallConvIDs) {
total += s.rowsSmall.get(conversationIDKey)?.badgeCount ?? 0
}
return total
}, [visibleSmallConvIDs])
)

const hiddenSmallBadgeCount = Math.max(0, smallTeamBadgeCount - visibleBadges)
return <TeamsDivider {...rest} badgeCount={hiddenSmallBadgeCount} />
Expand Down
5 changes: 2 additions & 3 deletions shared/chat/inbox/use-inbox-search.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import logger from '@/logger'
import {useConfigState} from '@/stores/config'
import {RPCError} from '@/util/errors'
import {isMobile} from '@/constants/platform'
import * as Chat from '@/stores/chat'
import * as ConvoState from '@/stores/convostate'
import * as React from 'react'

Expand Down Expand Up @@ -260,7 +259,7 @@ export function useInboxSearch(): InboxSearchController {
return arr
}, [])
if (missingMetas.length > 0) {
Chat.useChatState.getState().dispatch.unboxRows(missingMetas, true)
ConvoState.unboxRows(missingMetas, true)
}
}

Expand Down Expand Up @@ -316,7 +315,7 @@ export function useInboxSearch(): InboxSearchController {
if (
ConvoState.getConvoState(result.conversationIDKey).meta.conversationIDKey === T.Chat.noConversationIDKey
) {
Chat.useChatState.getState().dispatch.unboxRows([result.conversationIDKey], true)
ConvoState.unboxRows([result.conversationIDKey], true)
}
}

Expand Down
Loading