diff --git a/native/chat/chat.react.js b/native/chat/chat.react.js --- a/native/chat/chat.react.js +++ b/native/chat/chat.react.js @@ -29,7 +29,7 @@ import MessageStorePruner from 'lib/components/message-store-pruner.react.js'; import ThreadDraftUpdater from 'lib/components/thread-draft-updater.react.js'; import { isLoggedIn } from 'lib/selectors/user-selectors.js'; -import { threadIsPending } from 'lib/shared/thread-utils.js'; +import { threadIsPending, threadIsSidebar } from 'lib/shared/thread-utils.js'; import BackgroundChatThreadList from './background-chat-thread-list.react.js'; import ChatHeader from './chat-header.react.js'; @@ -47,6 +47,7 @@ import PinnedMessagesScreen from './pinned-messages-screen.react.js'; import DeleteThread from './settings/delete-thread.react.js'; import EmojiThreadAvatarCreation from './settings/emoji-thread-avatar-creation.react.js'; +import ThreadSettingsNotifications from './settings/thread-settings-notifications.react.js'; import ThreadSettings from './settings/thread-settings.react.js'; import ThreadScreenPruner from './thread-screen-pruner.react.js'; import ThreadSettingsButton from './thread-settings-button.react.js'; @@ -73,6 +74,7 @@ ChatThreadListRouteName, HomeChatThreadListRouteName, BackgroundChatThreadListRouteName, + ThreadSettingsNotificationsRouteName, type ScreenParamList, type ChatParamList, type ChatTopTabsParamList, @@ -324,6 +326,17 @@ headerTitle: 'Pinned Messages', headerBackTitleVisible: false, }; +const threadSettingsNotificationsOptions = ({ + route, +}: { + +route: NavigationRoute<'ThreadSettingsNotifications'>, + ... +}) => ({ + headerTitle: threadIsSidebar(route.params.threadInfo) + ? 'Thread notifications' + : 'Channel notifications', + headerBackTitleVisible: false, +}); const changeRolesScreenOptions = ({ route, }: { @@ -473,6 +486,11 @@ component={ChangeRolesScreen} options={changeRolesScreenOptions} /> + diff --git a/native/chat/settings/thread-settings-notifications.react.js b/native/chat/settings/thread-settings-notifications.react.js new file mode 100644 --- /dev/null +++ b/native/chat/settings/thread-settings-notifications.react.js @@ -0,0 +1,39 @@ +// @flow + +import * as React from 'react'; + +import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; + +import HeaderRightTextButton from '../../navigation/header-right-text-button.react.js'; +import type { NavigationRoute } from '../../navigation/route-names.js'; +import type { ChatNavigationProp } from '../chat.react.js'; + +export type ThreadSettingsNotificationsParams = { + +threadInfo: ThreadInfo, +}; + +type Props = { + +navigation: ChatNavigationProp<'ThreadSettingsNotifications'>, + +route: NavigationRoute<'ThreadSettingsNotifications'>, +}; + +function ThreadSettingsNotifications(props: Props): React.Node { + const { + navigation: { setOptions }, + } = props; + const onPressSave = React.useCallback(() => { + // TODO: implement this + }, []); + + React.useEffect(() => { + setOptions({ + headerRight: () => ( + + ), + }); + }, [onPressSave, setOptions]); + + return null; +} + +export default ThreadSettingsNotifications; diff --git a/native/navigation/route-names.js b/native/navigation/route-names.js --- a/native/navigation/route-names.js +++ b/native/navigation/route-names.js @@ -31,6 +31,7 @@ import type { DeleteThreadParams } from '../chat/settings/delete-thread.react.js'; import type { EmojiThreadAvatarCreationParams } from '../chat/settings/emoji-thread-avatar-creation.react.js'; import type { ThreadSettingsMemberTooltipModalParams } from '../chat/settings/thread-settings-member-tooltip-modal.react.js'; +import type { ThreadSettingsNotificationsParams } from '../chat/settings/thread-settings-notifications.react.js'; import type { ThreadSettingsParams } from '../chat/settings/thread-settings.react.js'; import type { SidebarListModalParams } from '../chat/sidebar-list-modal.react.js'; import type { SubchannelListModalParams } from '../chat/subchannels-list-modal.react.js'; @@ -163,6 +164,8 @@ 'TagFarcasterChannelNavigator'; export const TagFarcasterChannelRouteName = 'TagFarcasterChannel'; export const TagFarcasterChannelByNameRouteName = 'TagFarcasterChannelByName'; +export const ThreadSettingsNotificationsRouteName = + 'ThreadSettingsNotifications'; export type RootParamList = { +LoggedOutModal: void, @@ -240,6 +243,7 @@ +PinnedMessagesScreen: PinnedMessagesScreenParams, +MessageSearch: MessageSearchParams, +ChangeRolesScreen: ChangeRolesScreenParams, + +ThreadSettingsNotifications: ThreadSettingsNotificationsParams, }; export type ChatTopTabsParamList = { @@ -372,4 +376,5 @@ MessageSearchRouteName, EmojiThreadAvatarCreationRouteName, CommunityRolesScreenRouteName, + ThreadSettingsNotificationsRouteName, ];