Projekt

Obecné

Profil

Stáhnout (2.6 KB) Statistiky
| Větev: | Tag: | Revize:
1
import { Center, Box, Heading, VStack, FormControl, Link, Input, Button, HStack, Text, StatusBar, Container, Divider, Spacer, Row } from "native-base"
2
import React, { useState, useEffect } from "react"
3
import { useDispatch, useSelector } from "react-redux"
4
import { AppDispatch, RootState } from "../stores/store"
5
import { getItem, getItemNotes, setConcordances, setSelectedConcordance } from "../stores/actions/itemThunks"
6
import { Item, ItemViewState } from "../types/item"
7
import { login } from "../stores/actions/userThunks"
8

    
9
interface ItemViewProps {
10
  itemId: string
11
}
12

    
13
const ItemViewPage = (props: ItemViewProps) => {
14

    
15
  const dispatch = useDispatch<AppDispatch>();
16

    
17
  const { item, notes, concordances, selectedConcordance } = useSelector((state: RootState) => state.itemViewState)
18

    
19
  const handleGetPreviousConcordance = async () => {
20
    if (selectedConcordance - 1 >= 0) {
21
      dispatch(setSelectedConcordance(selectedConcordance - 1));
22
      dispatch(getItem(concordances[selectedConcordance].id));
23
    }
24
  };
25

    
26
  const handleGetNextConcordance = async () => {
27
    if (selectedConcordance + 1 < concordances.length) {
28
      dispatch(setSelectedConcordance(selectedConcordance + 1))
29
      dispatch(getItem(concordances[selectedConcordance].id));
30
    }
31
  };
32

    
33
  // load main item
34
  useEffect(() => {
35
    // TODO remove login from here
36
    dispatch(login({ username: "Viktorie", password: "Golem123." }));
37
    dispatch(getItem(props.itemId));
38
  }, []);
39

    
40
  // item changes
41
  useEffect(() => {
42

    
43
    if (selectedConcordance == 0) {
44
      dispatch(setConcordances(item.concordances));
45
    }
46

    
47
    // set item notes if item is loaded
48
    if(item.id){
49
      dispatch(getItemNotes(item.id));
50
    }
51

    
52
  }, [item]);
53

    
54
  console.log(notes);
55

    
56
  return (
57
    <VStack>
58
      <Center>
59
        {concordances && concordances.length > 0 && item && ( // concordances && item are loaded
60
          <VStack>
61
            <Text>
62
              Concordances: {concordances.map((concordance) => concordance.id).join(', ')}
63
            </Text>
64
            <Text>
65
              {/* Selected: {concordances[selectedConcordance].id} */}
66
              Selected: {concordances[selectedConcordance].id}
67
            </Text>
68
            <HStack>
69
              <Button onPress={handleGetPreviousConcordance} mr={2}>
70
                Previous Concordance
71
              </Button>
72
              <Button onPress={handleGetNextConcordance}>Next Concordance</Button>
73
            </HStack>
74
            <Text>
75
              current item: {item.workName}
76
            </Text>
77
          </VStack>
78
        )}
79

    
80
        <Divider my="2" />
81
      </Center>
82
    </VStack>
83
  );
84
}
85

    
86
export default ItemViewPage;
(1-1/2)