From 1229399bc758b7b12e3149bb818041ad84f62f89 Mon Sep 17 00:00:00 2001
From: AkiraFukushima
Date: Thu, 29 Aug 2019 22:42:32 +0900
Subject: [PATCH] fix: Remove invalid hashtag cache file when load error
---
src/main/cache/hashtag.ts | 21 +++++++++++++++++----
src/main/index.ts | 4 ++--
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/main/cache/hashtag.ts b/src/main/cache/hashtag.ts
index ecf6b4a2..821a2d60 100644
--- a/src/main/cache/hashtag.ts
+++ b/src/main/cache/hashtag.ts
@@ -1,4 +1,5 @@
import Datastore from 'nedb'
+import fs from 'fs'
import { LocalTag } from '~/src/types/localTag'
export default class HashtagCache {
@@ -7,9 +8,20 @@ export default class HashtagCache {
constructor(path: string) {
this.db = new Datastore({
filename: path,
- autoload: true
+ autoload: true,
+ onload: (err: Error) => {
+ if (err) {
+ fs.unlink(path, err => {
+ if (err) {
+ console.error(err)
+ }
+ })
+ }
+ }
+ })
+ this.db.ensureIndex({ fieldName: 'tagName', unique: true, sparse: true }, err => {
+ if (err) console.error(err)
})
- this.db.ensureIndex({ fieldName: 'tagName', unique: true }, _ => {})
}
listTags(): Promise> {
@@ -22,9 +34,10 @@ export default class HashtagCache {
}
insertHashtag(tag: string): Promise {
- return new Promise(resolve => {
+ return new Promise((resolve, reject) => {
// Ignore error for unique constraints.
- this.db.insert({ tagName: tag }, (_, doc) => {
+ this.db.insert({ tagName: tag }, (err, doc) => {
+ if (err) return reject(err)
resolve(doc)
})
})
diff --git a/src/main/index.ts b/src/main/index.ts
index d4cec9e0..89d2589c 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -482,7 +482,7 @@ ipcMain.on('start-all-user-streamings', (event: Event, accounts: Array {
- await hashtagCache.insertHashtag(tag.name)
+ await hashtagCache.insertHashtag(tag.name).catch(err => console.error(err))
})
// Cache account
await accountCache.insertAccount(id, update.account.acct).catch(err => console.error(err))
@@ -1021,7 +1021,7 @@ ipcMain.on('get-cache-hashtags', async (event: Event) => {
ipcMain.on('insert-cache-hashtags', (event: Event, tags: Array) => {
tags.map(async name => {
- await hashtagCache.insertHashtag(name)
+ await hashtagCache.insertHashtag(name).catch(err => console.error(err))
})
event.sender.send('response-insert-cache-hashtags')
})