export default function()

in sample/src/screens/HomeScreen.js [27:165]


export default function ({ navigation, route }) {
  const [events, setEvents] = useState([]);
  const [refreshing, setRefreshing] = useState(true);
  const [user, setUser] = useState([]);
  const [loaded, setLoaded] = useState(true);

  useEffect(() => {
    if (route.params?.refreshList) {
      setRefreshing(true);
    }
    authUser();
    getAllEvents();
  }, [route.params]);

  async function authUser() {
    const cognitoUser = await Auth.currentAuthenticatedUser();
    if (cognitoUser) {
      setUser(cognitoUser);
      updateDatabaseUser(cognitoUser.username, cognitoUser.attributes, loaded);
      setLoaded(false);
      Analytics.record({
        name: 'loaded',
      });
    }
  }

  async function getAllEvents() {
    const filters = {
      startAt: {
        ge: parseInt(new Date().getTime() / 1000),
      },
    };

    const limit = 10;
    const allEvents = await API.graphql(
      graphqlOperation(listEvents, filters, limit)
    );
    setRefreshing(false);
    setEvents(
      allEvents.data.listEvents.items.sort(function (a, b) {
        if (!a.key) a.key = a.id;
        if (!b.key) b.key = b.id;
        return a.startAt === b.startAt ? 0 : a.startAt < b.startAt ? -1 : 1;
      })
    );
  }

  async function deleteEventById(eventId) {
    setRefreshing(true);
    Analytics.record({
      name: 'deleteEvent',
      attributes: {
        eventId: eventId,
        userId: user.attributes.sub,
      },
    });
    const details = {
      id: eventId,
    };
    await API.graphql(graphqlOperation(deleteEvent, { input: details }));
    getAllEvents();
  }

  const renderEvents = () => {
    return (
      <SwipeListView
        refreshControl={
          <RefreshControl
            refreshing={refreshing}
            onRefresh={onRefresh}
            title='Loading'
          />
        }
        data={events}
        renderItem={(rowData) => (
          <EventBox isClickable={true} event={rowData.item} />
        )}
        renderHiddenItem={(rowData) => {
          const disabledButton = () => (
            <Button
              disabled
              bordered
              style={{ width: 100, justifyContent: 'center' }}
            >
              <Text>Delete</Text>
            </Button>
          );
          const enabledButton = () => (
            <Content>
              <Button
                danger
                style={{ width: 100, justifyContent: 'center' }}
                onPress={() => deleteEventById(rowData.item.id)}
              >
                <Text>Delete</Text>
              </Button>
              {refreshing && <Spinner color='red' />}
            </Content>
          );
          const renderButton = () => {
            if (rowData.item.user.username === user.username)
              return enabledButton();
            return disabledButton();
          };
          return (
            <Content
              style={{
                alignSelf: 'flex-end',
                padding: 10,
                alignContent: 'center',
              }}
            >
              {renderButton()}
            </Content>
          );
        }}
        rightOpenValue={-125}
        style={{ padding: 10 }}
        disableRightSwipe={true}
        closeOnRowOpen={true}
        closeOnScroll={true}
      />
    );
  };

  const onRefresh = () => {
    setRefreshing(true);
    getAllEvents();
  };

  return (
    <Container>
      <Header>
        <Left />
        <Body>
          <Title>Home</Title>
        </Body>
        <Right>
          <Button transparent onPress={() => navigation.navigate('Create')}>