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') })