main
js 52 lines 1.59 KB
Raw
1 /**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @flow
8 */
9 import * as React from 'react';
10 import {startTransition, useContext} from 'react';
11 import Button from '../Button';
12 import ButtonIcon from '../ButtonIcon';
13 import {StoreContext} from '../context';
14 import {useChangeActivitySliceAction} from '../SuspenseTab/ActivityList';
15 import {TreeDispatcherContext, TreeStateContext} from './TreeContext';
16 import styles from './ActivitySlice.css';
17
18 export default function ActivitySlice(): React.Node {
19 const dispatch = useContext(TreeDispatcherContext);
20 const {activityID} = useContext(TreeStateContext);
21 const store = useContext(StoreContext);
22
23 const activity =
24 activityID === null ? null : store.getElementByID(activityID);
25 const name = activity ? activity.nameProp : null;
26
27 const changeActivitySliceAction = useChangeActivitySliceAction();
28
29 return (
30 <div className={styles.ActivitySlice}>
31 <div className={styles.Bar}>
32 <Button
33 className={styles.ActivitySliceButton}
34 onClick={dispatch.bind(null, {
35 type: 'SELECT_ELEMENT_BY_ID',
36 payload: activityID,
37 })}>
38 "{name || 'Unknown'}"
39 </Button>
40 </div>
41 <div className={styles.VRule} />
42 <Button
43 onClick={startTransition.bind(
44 null,
45 changeActivitySliceAction.bind(null, null),
46 )}
47 title="Back to tree view">
48 <ButtonIcon type="close" />
49 </Button>
50 </div>
51 );
52 }