Page MenuHomePhabricator

D12642.id41920.diff
No OneTemporary

D12642.id41920.diff

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}
/>
+ <Chat.Screen
+ name={ThreadSettingsNotificationsRouteName}
+ component={ThreadSettingsNotifications}
+ options={threadSettingsNotificationsOptions}
+ />
</Chat.Navigator>
<MessageStorePruner frozen={frozen} activeThreadID={activeThreadID} />
<ThreadScreenPruner />
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: () => (
+ <HeaderRightTextButton label="Save" onPress={onPressSave} />
+ ),
+ });
+ }, [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,
];

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 6, 9:55 PM (21 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2251096
Default Alt Text
D12642.id41920.diff (5 KB)

Event Timeline