diff --git a/client/src/components/UI/Buttons/FileButton/FileButton.tsx b/client/src/components/UI/Buttons/FileButton/FileButton.tsx index d4fe6a4..b7039a3 100644 --- a/client/src/components/UI/Buttons/FileButton/FileButton.tsx +++ b/client/src/components/UI/Buttons/FileButton/FileButton.tsx @@ -52,7 +52,7 @@ export const FileButton = (props: Props): JSX.Element => { ref={imageRef} type="file" style={{ display: 'none' }} - accept="image/*" + accept=".html" onChange={handleChange} /> {body} diff --git a/client/src/store/action-creators/bookmark.ts b/client/src/store/action-creators/bookmark.ts index 15acc79..8d688e9 100644 --- a/client/src/store/action-creators/bookmark.ts +++ b/client/src/store/action-creators/bookmark.ts @@ -140,7 +140,6 @@ export const importBookmark = type: ActionType.importBookmark, payload: res.data.data, }); - dispatch(sortBookmarks(res.data.data.categoryId)); } catch (err) { console.log(err); } diff --git a/utils/importBookmark.js b/utils/importBookmark.js index b3c3d01..21f309f 100644 --- a/utils/importBookmark.js +++ b/utils/importBookmark.js @@ -1,5 +1,5 @@ const parse = require('node-bookmarks-parser'); -var sqlite3 = require('sqlite3').verbose(); +var sqlite3 = require('sqlite3'); const File = require('./File'); const databaseFilePath = 'data/db.sqlite'; @@ -41,35 +41,46 @@ function saveBookmarks() { } function saveCategories() { - let db = new sqlite3.Database(databaseFilePath); - let uniqueCats = [...new Set(bookmarks.map((r) => r.category))]; - const importDate = new Date().toString(); + return new Promise((resolve, reject) => { + let db = new sqlite3.Database(databaseFilePath); + let uniqueCats = [...new Set(bookmarks.map((r) => r.category))]; + const importDate = new Date().toString(); - db.serialize(() => { - db.all(`SELECT * FROM categories`, (err, data) => { - if (err) { - console.error(err); - } + let tasks = {}; - for (const newCaterory of uniqueCats) { - for (const category of data) { - if (category.name.toLowerCase() === newCaterory.toLowerCase()) { - continue; - } + db.serialize(() => { + db.all(`SELECT * FROM categories`, (err, data) => { + if (err) { + console.error(err); + return; } - let stmt = db.prepare( - 'INSERT INTO categories (name, createdAt, updatedAt) VALUES(?,?,?)' - ); - stmt.run(newCaterory, importDate, importDate, (err) => { - if (err) { - console.error(err); + for (const newCaterory of uniqueCats) { + for (const category of data) { + if (category.name.toLowerCase() === newCaterory.toLowerCase()) { + continue; + } } - }); - stmt.finalize(); - } - saveBookmarks(); + let stmt = db.prepare( + 'INSERT INTO categories (name, createdAt, updatedAt) VALUES(?,?,?)' + ); + tasks[newCaterory] = false; + stmt.run(newCaterory, importDate, importDate, (err) => { + tasks[newCaterory] = true; + + if (err) { + console.error(err); + reject(err); + } + + if(Object.keys(tasks).every(function(k){ return tasks[k] })){ + resolve(); + } + }); + stmt.finalize(); + } + }); }); }); } @@ -99,5 +110,8 @@ module.exports = function importBookmark(path) { crawlBookmarks(bookmark); } - saveCategories(); + saveCategories() + .then((r) => { + saveBookmarks(); + }) };