diff --git a/package-lock.json b/package-lock.json
index 31f8e01..bcee0e0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -40,9 +40,11 @@
"isomorphic-xml2js": "^0.1.3",
"lodash": "^4.17.21",
"pouchdb": "^7.3.0",
+ "pouchdb-find": "^7.3.0",
"react": "^18.2.0",
"react-app-polyfill": "^3.0.0",
"react-dom": "^18.2.0",
+ "react-pouchdb": "^2.1.0",
"react-redux": "^8.0.2",
"react-router": "^6.3.0",
"react-router-dom": "^6.3.0",
@@ -15032,6 +15034,115 @@
"vuvuzela": "1.0.3"
}
},
+ "node_modules/pouchdb-abstract-mapreduce": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz",
+ "integrity": "sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA==",
+ "dependencies": {
+ "pouchdb-binary-utils": "7.3.0",
+ "pouchdb-collate": "7.3.0",
+ "pouchdb-collections": "7.3.0",
+ "pouchdb-errors": "7.3.0",
+ "pouchdb-fetch": "7.3.0",
+ "pouchdb-mapreduce-utils": "7.3.0",
+ "pouchdb-md5": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "node_modules/pouchdb-binary-utils": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz",
+ "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==",
+ "dependencies": {
+ "buffer-from": "1.1.2"
+ }
+ },
+ "node_modules/pouchdb-collate": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz",
+ "integrity": "sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA=="
+ },
+ "node_modules/pouchdb-collections": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz",
+ "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg=="
+ },
+ "node_modules/pouchdb-errors": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz",
+ "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==",
+ "dependencies": {
+ "inherits": "2.0.4"
+ }
+ },
+ "node_modules/pouchdb-fetch": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz",
+ "integrity": "sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw==",
+ "dependencies": {
+ "abort-controller": "3.0.0",
+ "fetch-cookie": "0.11.0",
+ "node-fetch": "2.6.7"
+ }
+ },
+ "node_modules/pouchdb-find": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-7.3.0.tgz",
+ "integrity": "sha512-EwhnfyxCAkKf8PG4tfndTTygEmtuz+o1LiZkxfPrflfXA3m1jo1ithib0hwBYtEwEYWuZxH6B8pRZutbLoQCGA==",
+ "dependencies": {
+ "pouchdb-abstract-mapreduce": "7.3.0",
+ "pouchdb-collate": "7.3.0",
+ "pouchdb-errors": "7.3.0",
+ "pouchdb-fetch": "7.3.0",
+ "pouchdb-md5": "7.3.0",
+ "pouchdb-selector-core": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "node_modules/pouchdb-mapreduce-utils": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz",
+ "integrity": "sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw==",
+ "dependencies": {
+ "argsarray": "0.0.1",
+ "inherits": "2.0.4",
+ "pouchdb-collections": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "node_modules/pouchdb-md5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz",
+ "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==",
+ "dependencies": {
+ "pouchdb-binary-utils": "7.3.0",
+ "spark-md5": "3.0.2"
+ }
+ },
+ "node_modules/pouchdb-selector-core": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz",
+ "integrity": "sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew==",
+ "dependencies": {
+ "pouchdb-collate": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "node_modules/pouchdb-utils": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz",
+ "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==",
+ "dependencies": {
+ "argsarray": "0.0.1",
+ "clone-buffer": "1.0.0",
+ "immediate": "3.3.0",
+ "inherits": "2.0.4",
+ "pouchdb-collections": "7.3.0",
+ "pouchdb-errors": "7.3.0",
+ "pouchdb-md5": "7.3.0",
+ "uuid": "8.3.2"
+ }
+ },
"node_modules/pouchdb/node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -15492,6 +15603,24 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
+ "node_modules/react-pouchdb": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/react-pouchdb/-/react-pouchdb-2.1.0.tgz",
+ "integrity": "sha512-6WxazCEEHpsxn1YKahTtp+gBTslKt7LiyQ87O7AR+SOG7A0sWGYNTELxBtWXfY/fTu3xXPOiR1HR2p/SpoiEPA==",
+ "dependencies": {
+ "@babel/runtime": "^7.6.3",
+ "fast-json-stable-stringify": "^2.0.0",
+ "hoist-non-react-statics": "^3.3.0",
+ "lodash": "^4.17.15",
+ "pouchdb-collate": "^7.1.1",
+ "pouchdb-find": "^7.1.1",
+ "pouchdb-selector-core": "^7.1.1",
+ "use-subscription": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || 17"
+ }
+ },
"node_modules/react-redux": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz",
@@ -18200,6 +18329,17 @@
"requires-port": "^1.0.0"
}
},
+ "node_modules/use-subscription": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.8.0.tgz",
+ "integrity": "sha512-LISuG0/TmmoDoCRmV5XAqYkd3UCBNM0ML3gGBndze65WITcsExCD3DTvXXTLyNcOC0heFQZzluW88bN/oC1DQQ==",
+ "dependencies": {
+ "use-sync-external-store": "^1.2.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
@@ -30265,6 +30405,115 @@
}
}
},
+ "pouchdb-abstract-mapreduce": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz",
+ "integrity": "sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA==",
+ "requires": {
+ "pouchdb-binary-utils": "7.3.0",
+ "pouchdb-collate": "7.3.0",
+ "pouchdb-collections": "7.3.0",
+ "pouchdb-errors": "7.3.0",
+ "pouchdb-fetch": "7.3.0",
+ "pouchdb-mapreduce-utils": "7.3.0",
+ "pouchdb-md5": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "pouchdb-binary-utils": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz",
+ "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==",
+ "requires": {
+ "buffer-from": "1.1.2"
+ }
+ },
+ "pouchdb-collate": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz",
+ "integrity": "sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA=="
+ },
+ "pouchdb-collections": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz",
+ "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg=="
+ },
+ "pouchdb-errors": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz",
+ "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==",
+ "requires": {
+ "inherits": "2.0.4"
+ }
+ },
+ "pouchdb-fetch": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz",
+ "integrity": "sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw==",
+ "requires": {
+ "abort-controller": "3.0.0",
+ "fetch-cookie": "0.11.0",
+ "node-fetch": "2.6.7"
+ }
+ },
+ "pouchdb-find": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-7.3.0.tgz",
+ "integrity": "sha512-EwhnfyxCAkKf8PG4tfndTTygEmtuz+o1LiZkxfPrflfXA3m1jo1ithib0hwBYtEwEYWuZxH6B8pRZutbLoQCGA==",
+ "requires": {
+ "pouchdb-abstract-mapreduce": "7.3.0",
+ "pouchdb-collate": "7.3.0",
+ "pouchdb-errors": "7.3.0",
+ "pouchdb-fetch": "7.3.0",
+ "pouchdb-md5": "7.3.0",
+ "pouchdb-selector-core": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "pouchdb-mapreduce-utils": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz",
+ "integrity": "sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw==",
+ "requires": {
+ "argsarray": "0.0.1",
+ "inherits": "2.0.4",
+ "pouchdb-collections": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "pouchdb-md5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz",
+ "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==",
+ "requires": {
+ "pouchdb-binary-utils": "7.3.0",
+ "spark-md5": "3.0.2"
+ }
+ },
+ "pouchdb-selector-core": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz",
+ "integrity": "sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew==",
+ "requires": {
+ "pouchdb-collate": "7.3.0",
+ "pouchdb-utils": "7.3.0"
+ }
+ },
+ "pouchdb-utils": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz",
+ "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==",
+ "requires": {
+ "argsarray": "0.0.1",
+ "clone-buffer": "1.0.0",
+ "immediate": "3.3.0",
+ "inherits": "2.0.4",
+ "pouchdb-collections": "7.3.0",
+ "pouchdb-errors": "7.3.0",
+ "pouchdb-md5": "7.3.0",
+ "uuid": "8.3.2"
+ }
+ },
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -30570,6 +30819,21 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
+ "react-pouchdb": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/react-pouchdb/-/react-pouchdb-2.1.0.tgz",
+ "integrity": "sha512-6WxazCEEHpsxn1YKahTtp+gBTslKt7LiyQ87O7AR+SOG7A0sWGYNTELxBtWXfY/fTu3xXPOiR1HR2p/SpoiEPA==",
+ "requires": {
+ "@babel/runtime": "^7.6.3",
+ "fast-json-stable-stringify": "^2.0.0",
+ "hoist-non-react-statics": "^3.3.0",
+ "lodash": "^4.17.15",
+ "pouchdb-collate": "^7.1.1",
+ "pouchdb-find": "^7.1.1",
+ "pouchdb-selector-core": "^7.1.1",
+ "use-subscription": "^1.1.1"
+ }
+ },
"react-redux": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz",
@@ -32582,6 +32846,14 @@
"requires-port": "^1.0.0"
}
},
+ "use-subscription": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.8.0.tgz",
+ "integrity": "sha512-LISuG0/TmmoDoCRmV5XAqYkd3UCBNM0ML3gGBndze65WITcsExCD3DTvXXTLyNcOC0heFQZzluW88bN/oC1DQQ==",
+ "requires": {
+ "use-sync-external-store": "^1.2.0"
+ }
+ },
"use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
diff --git a/package.json b/package.json
index 4e17a73..8069564 100644
--- a/package.json
+++ b/package.json
@@ -35,9 +35,11 @@
"isomorphic-xml2js": "^0.1.3",
"lodash": "^4.17.21",
"pouchdb": "^7.3.0",
+ "pouchdb-find": "^7.3.0",
"react": "^18.2.0",
"react-app-polyfill": "^3.0.0",
"react-dom": "^18.2.0",
+ "react-pouchdb": "^2.1.0",
"react-redux": "^8.0.2",
"react-router": "^6.3.0",
"react-router-dom": "^6.3.0",
diff --git a/src/App.tsx b/src/App.tsx
index 52fce14..9667f5c 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -2,6 +2,8 @@ import { IonApp, setupIonicReact } from '@ionic/react';
import store from './store/index';
import { Provider } from 'react-redux';
+import { Suspense } from 'react';
+import { PouchDB, Find } from 'react-pouchdb';
/* Core CSS required for Ionic components to work properly */
import '@ionic/react/css/core.css';
@@ -26,12 +28,18 @@ import Map from './components/map/map';
setupIonicReact();
-const App: React.FC = () => (
-
-
-
-
-
-);
+const App: React.FC = () => {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+};
export default App;
diff --git a/src/components/map/gpx-import.tsx b/src/components/map/gpx-import.tsx
index a712355..724262a 100644
--- a/src/components/map/gpx-import.tsx
+++ b/src/components/map/gpx-import.tsx
@@ -1,16 +1,16 @@
import React from 'react';
-import { useDispatch } from 'react-redux';
+import { useDB } from 'react-pouchdb';
import GPX from '../../lib/gpx-parser-builder';
import '../../theme/get-location.css';
import { IonIcon, IonItem } from '@ionic/react';
import { downloadSharp } from 'ionicons/icons';
-import { tracksActions } from '../../store/tracks';
+import { pushTrack } from '../../db/tracks';
const GpxImport: React.FC<{}> = () => {
- const dispatch = useDispatch();
+ const db = useDB();
const onChangeHandler = (event: any) => {
console.log('On change handler');
@@ -24,18 +24,16 @@ const GpxImport: React.FC<{}> = () => {
// this will then display a text file
console.log(fileReader.result);
const track = GPX.parse(fileReader.result);
- dispatch(
- tracksActions.push({
- track: JSON.parse(JSON.stringify(track)),
- metadata: {
- lastModified: new Date(file.lastModified).toISOString(),
- importDate: new Date().toISOString(),
- name: file.name,
- size: file.size,
- type: file.type,
- },
- })
- );
+ pushTrack(db, {
+ track: JSON.parse(JSON.stringify(track)),
+ metadata: {
+ lastModified: new Date(file.lastModified).toISOString(),
+ importDate: new Date().toISOString(),
+ name: file.name,
+ size: file.size,
+ type: file.type,
+ },
+ });
},
false
);
diff --git a/src/components/map/track.tsx b/src/components/map/track.tsx
index a388aa5..80d6f82 100644
--- a/src/components/map/track.tsx
+++ b/src/components/map/track.tsx
@@ -1,9 +1,10 @@
-import React, { } from 'react';
+import React from 'react';
import { lat2tile, lon2tile } from '../../lib/geo';
import { zoom0 } from '../../store/map';
-const Track: React.FC<{ track: any; id: string }> = (props) => {
+const Track: React.FC<{ track: any }> = (props) => {
+ console.log('track');
const trkseg = props.track.track.trk[0].trkseg[0];
const d = trkseg.trkpt.reduce(
(previous: string, current: any, index: number) => {
diff --git a/src/components/map/tracks.tsx b/src/components/map/tracks.tsx
index c0d4d41..13595f0 100644
--- a/src/components/map/tracks.tsx
+++ b/src/components/map/tracks.tsx
@@ -1,18 +1,20 @@
-import React, { Fragment, useContext } from 'react';
+import React from 'react';
-import { useSelector } from 'react-redux';
+import { useFind } from 'react-pouchdb';
import Track from './track';
const Tracks: React.FC<{}> = () => {
- const tracks = useSelector((state: { tracks: any }) => state.tracks.tracks);
- return (
-
- {Object.keys(tracks).map((key: any) => (
-
- ))}
-
- );
+ const tracks = useFind({
+ selector: {
+ type: 'Track',
+ },
+ });
+
+ return tracks.map((track: any) => {
+ console.log('doc');
+ return ;
+ });
};
export default Tracks;
diff --git a/src/db/react.couchdb.d.ts b/src/db/react.couchdb.d.ts
new file mode 100644
index 0000000..3f7da60
--- /dev/null
+++ b/src/db/react.couchdb.d.ts
@@ -0,0 +1 @@
+declare module 'react-pouchdb';
\ No newline at end of file
diff --git a/src/db/tracks.ts b/src/db/tracks.ts
new file mode 100644
index 0000000..a7e11b2
--- /dev/null
+++ b/src/db/tracks.ts
@@ -0,0 +1,22 @@
+import {
+ Sha256,
+ Sha512,
+ string_to_bytes,
+ bytes_to_base64,
+} from '@openpgp/asmcrypto.js';
+
+export const pushTrack = (db: any, payload: any) => {
+ const sha = new Sha256();
+ const result = sha
+ .process(string_to_bytes(JSON.stringify(payload.track)))
+ .finish().result;
+ var _id;
+ if (result === null) {
+ console.log(`Can't hash`);
+ _id = crypto.randomUUID();
+ } else {
+ _id = bytes_to_base64(result);
+ console.log(`Digest: ${_id}`);
+ }
+ db.put({ _id, type: 'Track', ...payload });
+};
diff --git a/src/store/index.ts b/src/store/index.ts
index 1ec1b0e..5e67564 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -1,10 +1,9 @@
import { configureStore } from '@reduxjs/toolkit';
import mapReducer from './map';
-import tracksReducer from './tracks';
const store = configureStore({
- reducer: { map: mapReducer, tracks: tracksReducer },
+ reducer: { map: mapReducer },
});
export default store;
diff --git a/src/store/tracks.ts b/src/store/tracks.ts
deleted file mode 100644
index 588e372..0000000
--- a/src/store/tracks.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { createSlice } from '@reduxjs/toolkit';
-
-import {
- Sha256,
- Sha512,
- string_to_bytes,
- bytes_to_base64,
-} from '@openpgp/asmcrypto.js';
-
-interface TracksState {
- tracks: { [index: string]: any };
-}
-
-const initialTracks: TracksState = {
- tracks: {},
-};
-
-const tracksSlice = createSlice({
- name: 'tracks',
- initialState: initialTracks,
- reducers: {
- add: (state, action) => {
- const { id, ...data } = action.payload;
- state.tracks[action.payload.id] = data;
- },
- push: (state, action) => {
- const sha = new Sha512();
- const result = sha
- .process(string_to_bytes(JSON.stringify(action.payload.track)))
- .finish().result;
- var id;
- if (result === null) {
- console.log(`Can't hash`);
- id = crypto.randomUUID();
- } else {
- id = bytes_to_base64(result);
- console.log(`Digest: ${id}`);
- }
- if (state.tracks.hasOwnProperty(id)) {
- console.log('Track had already been imported');
- } else {
- state.tracks[id] = {
- ...action.payload,
- };
- }
- },
- },
-});
-
-export const tracksActions = tracksSlice.actions;
-
-export default tracksSlice.reducer;