Page MenuHomePhorge

D8431.1765128721.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D8431.1765128721.diff

diff --git a/native/roles/create-roles-screen.react.js b/native/roles/create-roles-screen.react.js
--- a/native/roles/create-roles-screen.react.js
+++ b/native/roles/create-roles-screen.react.js
@@ -1,8 +1,17 @@
// @flow
import * as React from 'react';
-import { View, Text, TouchableOpacity, ScrollView } from 'react-native';
-
+import {
+ View,
+ Text,
+ TouchableOpacity,
+ ScrollView,
+ ActivityIndicator,
+} from 'react-native';
+
+import { modifyCommunityRoleActionTypes } from 'lib/actions/thread-actions.js';
+import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js';
+import type { LoadingStatus } from 'lib/types/loading-types.js';
import {
userSurfacedPermissionOptions,
type UserSurfacedPermissionOption,
@@ -16,6 +25,7 @@
import SWMansionIcon from '../components/swmansion-icon.react.js';
import TextInput from '../components/text-input.react.js';
import type { NavigationRoute } from '../navigation/route-names.js';
+import { useSelector } from '../redux/redux-utils.js';
import { useStyles } from '../themes/colors.js';
export type CreateRolesScreenParams = {
@@ -30,6 +40,10 @@
+route: NavigationRoute<'CreateRolesScreen'>,
};
+const createRolesLoadingStatusSelector = createLoadingStatusSelector(
+ modifyCommunityRoleActionTypes,
+);
+
function CreateRolesScreen(props: CreateRolesScreenProps): React.Node {
const {
threadInfo,
@@ -38,6 +52,10 @@
rolePermissions: defaultRolePermissions,
} = props.route.params;
+ const createRolesLoadingStatus: LoadingStatus = useSelector(
+ createRolesLoadingStatusSelector,
+ );
+
const [customRoleName, setCustomRoleName] =
React.useState<string>(defaultRoleName);
const [selectedPermissions, setSelectedPermissions] = React.useState<
@@ -128,9 +146,26 @@
() =>
props.navigation.setOptions({
// eslint-disable-next-line react/display-name
- headerRight: () => <CreateRolesHeaderRightButton route={props.route} />,
+ headerRight: () => {
+ if (createRolesLoadingStatus === 'loading') {
+ return (
+ <ActivityIndicator
+ size="small"
+ color="white"
+ style={styles.activityIndicator}
+ />
+ );
+ }
+
+ return <CreateRolesHeaderRightButton route={props.route} />;
+ },
}),
- [props.navigation, props.route],
+ [
+ createRolesLoadingStatus,
+ props.navigation,
+ styles.activityIndicator,
+ props.route,
+ ],
);
return (
@@ -210,6 +245,9 @@
backgroundColor: 'panelForeground',
marginTop: 10,
},
+ activityIndicator: {
+ paddingRight: 15,
+ },
};
export default CreateRolesScreen;

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 5:32 PM (19 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5845180
Default Alt Text
D8431.1765128721.diff (2 KB)

Event Timeline