diff --git a/components/pages/ListDetail.jsx b/components/pages/ListDetail.jsx
index 75a3637..e45746b 100644
--- a/components/pages/ListDetail.jsx
+++ b/components/pages/ListDetail.jsx
@@ -1,56 +1,65 @@
+import {
+ IonBackButton,
+ IonButtons,
+ IonCheckbox,
+ IonContent,
+ IonHeader,
+ IonItem,
+ IonLabel,
+ IonList,
+ IonPage,
+ IonTitle,
+ IonToolbar,
+} from '@ionic/react';
import Link from '../../components/Link';
-import usePage from '../../hooks/usePage';
import Store from '../../store';
import * as actions from '../../store/actions';
import * as selectors from '../../store/selectors';
-import Content from '../ui/Content';
-import List from '../ui/List';
-
const ListItems = ({ list }) => {
return (
- <>
-
- All Lists
-
+
{(list?.items || []).map(item => (
))}
- >
+
);
};
const ListItemEntry = ({ list, item }) => (
- actions.setDone(list, item, !item.done)}
- >
- {item.name}
-
-
+ actions.setDone(list, item, !item.done)}>
+ {item.name}
+
+
);
-const ListDetail = ({ selected, listId, params }) => {
+const ListDetail = ({ match }) => {
const lists = Store.useState(selectors.getLists);
- const actualListId = listId ? listId : params?.listId || null;
- const loadedList = lists.find(l => l.id === actualListId);
-
- usePage({
- title: loadedList.name,
- });
+ const {
+ params: { listId },
+ } = match;
+ const loadedList = lists.find(l => l.id === listId);
return (
-
-
+
+
+
+
+
+
+ {loadedList.name}
+
+
+
+
+
+ {loadedList.name}
+
+
-
-
+
+
);
};
diff --git a/components/pages/Tabs.jsx b/components/pages/Tabs.jsx
index 2fc37b3..01549c6 100644
--- a/components/pages/Tabs.jsx
+++ b/components/pages/Tabs.jsx
@@ -5,6 +5,7 @@ import { cog, flash, list } from 'ionicons/icons';
import Home from './Feed';
import Lists from './Lists';
+import ListDetail from './ListDetail';
import Settings from './Settings';
const Tabs = () => {
@@ -14,6 +15,7 @@ const Tabs = () => {
+
} exact={true} />
diff --git a/hooks/useLocation.js b/hooks/useLocation.js
deleted file mode 100644
index 94f478f..0000000
--- a/hooks/useLocation.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import { useEffect, useRef, useState, useCallback } from 'react';
-
-// useEffect(() => {
-// While History API does have `popstate` event, the only
-// proper way to listen to changes via `push/replaceState`
-// is to monkey-patch these methods.
-//
-// See https://stackoverflow.com/a/4585031
-if (typeof history !== 'undefined') {
- for (const type of [eventPushState, eventReplaceState]) {
- const original = history[type];
-
- history[type] = function () {
- const result = original.apply(this, arguments);
- const event = new Event(type);
- event.arguments = arguments;
-
- dispatchEvent(event);
- return result;
- };
- }
-} else {
- console.log('No history API');
-}
-// });
-
-/**
- * History API docs @see https://developer.mozilla.org/en-US/docs/Web/API/History
- */
-const eventPopstate = 'popstate';
-const eventPushState = 'pushState';
-const eventReplaceState = 'replaceState';
-export const events = [eventPopstate, eventPushState, eventReplaceState];
-
-const useLocation = ({ base = '' } = {}) => {
- const getCurrentPathname = useCallback(base => {
- const path = typeof location === 'undefined' ? '/' : location.pathname;
-
- return !path.toLowerCase().indexOf(base.toLowerCase())
- ? path.slice(base.length) || '/'
- : '~' + path;
- }, []);
-
- const [path, update] = useState(() => getCurrentPathname(base)); // @see https://reactjs.org/docs/hooks-reference.html#lazy-initial-state
- const prevPath = useRef(path);
-
- useEffect(() => {
- // this function checks if the location has been changed since the
- // last render and updates the state only when needed.
- // unfortunately, we can't rely on `path` value here, since it can be stale,
- // that's why we store the last pathname in a ref.
- const checkForUpdates = () => {
- const pathname = getCurrentPathname(base);
- prevPath.current !== pathname && update((prevPath.current = pathname));
- };
-
- events.map(e => addEventListener(e, checkForUpdates));
-
- // it's possible that an update has occurred between render and the effect handler,
- // so we run additional check on mount to catch these updates. Based on:
- // https://gist.github.com/bvaughn/e25397f70e8c65b0ae0d7c90b731b189
- checkForUpdates();
-
- return () => events.map(e => removeEventListener(e, checkForUpdates));
- }, [base]);
-
- // the 2nd argument of the `useLocation` return value is a function
- // that allows to perform a navigation.
- //
- // the function reference should stay the same between re-renders, so that
- // it can be passed down as an element prop without any performance concerns.
- const navigate = useCallback(
- (to, { replace = false } = {}) =>
- history[replace ? eventReplaceState : eventPushState](
- null,
- '',
- // handle nested routers and absolute paths
- to[0] === '~' ? to.slice(1) : base + to
- ),
- [base]
- );
-
- return [path, navigate];
-};
-export default useLocation;
diff --git a/hooks/usePage.js b/hooks/usePage.js
deleted file mode 100644
index b0e8d10..0000000
--- a/hooks/usePage.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { useEffect } from 'react';
-import Store from '../store';
-
-const usePage = fields => {
- useEffect(() => {
- console.log('Use page effect', fields.title);
- Store.update(s => {
- s.currentPage = fields;
- });
- }, [fields]);
-};
-
-export default usePage;