@@ -10,6 +10,8 @@ | |||||
- Give call entries shine and box shadow. Maybe color them by type | - Give call entries shine and box shadow. Maybe color them by type | ||||
- Add entry transition animation | - Add entry transition animation | ||||
- Add favicon | - Add favicon | ||||
- Seperator could be added by putting li renderer in a seperate function from | |||||
Feed | |||||
## Summary | ## Summary | ||||
@@ -4,20 +4,24 @@ import ReactDOM from 'react-dom'; | |||||
import Header from './Header.jsx'; | import Header from './Header.jsx'; | ||||
import Feed from './Feed.jsx'; | import Feed from './Feed.jsx'; | ||||
import Navigator from './Navigator.jsx'; | import Navigator from './Navigator.jsx'; | ||||
import Archive from './Archive.jsx'; | import Call from './Call.jsx'; | ||||
const App = () => { | const App = () => { | ||||
const [recent, setRecent] = useState(true) | const [recent, setRecent] = useState(true) | ||||
const [call, setCall] = useState() | |||||
let focus = <Feed recent={recent} onSelect={ (c) => setCall(c) }/> | |||||
if (call) { | |||||
focus = <Call/> | |||||
} | |||||
return ( | return ( | ||||
<div className='container'> | <div className='container'> | ||||
<Header/> | <Header/> | ||||
<Navigator onPageChange={ (r) => setRecent(r) } | <Navigator onPageChange={ (r) => setRecent(r) } | ||||
recent={recent}/> | recent={recent}/> | ||||
<div className="container-view"> | <div className="container-view"> | ||||
{recent | {focus} | ||||
? <Feed/> | |||||
: <Archive/> | |||||
} | |||||
</div> | </div> | ||||
</div> | </div> | ||||
); | ); | ||||
@@ -0,0 +1,3 @@ | |||||
import React, {useState, useEffect} from 'react'; | |||||
@@ -61,7 +61,7 @@ function Seperator(props) { | |||||
} | } | ||||
// The component used for retrieving, sorting, and rendering calls. | // The component used for retrieving, sorting, and rendering calls. | ||||
function Feed() { | function Feed(props) { | ||||
const [ stack, setStack ] = useState(null) | const [ stack, setStack ] = useState(null) | ||||
@@ -78,7 +78,9 @@ function Feed() { | |||||
if (stack) { | if (stack) { | ||||
entries = stack.map((entry, index) => { | entries = stack.map((entry, index) => { | ||||
if (entry.is_archived) { | // Check if current page matches entry type | ||||
if (entry.is_archived == props.recent) { | |||||
return null | return null | ||||
} | } | ||||
@@ -0,0 +1,18 @@ | |||||
import React, {useState, useEffect} from 'react'; | |||||
function Navigator(props) { | |||||
let recent = "recent" + (props.recent ? " selected" : '') | |||||
let archived = "archived" + (props.recent ? "" : " selected") | |||||
return ( | |||||
<nav> | |||||
<button onClick={() => props.onPageChange(true)} | |||||
className={recent}>Recent | |||||
</button> | |||||
<button onClick={() => props.onPageChange(false)} | |||||
className={archived}>Archived | |||||
</button> | |||||
</nav> | |||||
) | |||||
} | |||||
export default Navigator |