|
@@ -4,10 +4,12 @@
|
|
* @homepage: https://oldj.net
|
|
* @homepage: https://oldj.net
|
|
*/
|
|
*/
|
|
|
|
|
|
-import { dialog } from 'electron'
|
|
|
|
import getI18N from '@main/core/getI18N'
|
|
import getI18N from '@main/core/getI18N'
|
|
|
|
+import { swhdb } from '@main/data'
|
|
|
|
+import { dialog } from 'electron'
|
|
|
|
+import { promises as fs } from 'fs'
|
|
|
|
|
|
-export default async () => {
|
|
|
|
|
|
+export default async (): Promise<boolean | string> => {
|
|
let { lang } = await getI18N()
|
|
let { lang } = await getI18N()
|
|
|
|
|
|
let result = await dialog.showOpenDialog({
|
|
let result = await dialog.showOpenDialog({
|
|
@@ -18,7 +20,7 @@ export default async () => {
|
|
{ name: 'All Files', extensions: ['*'] },
|
|
{ name: 'All Files', extensions: ['*'] },
|
|
],
|
|
],
|
|
properties: [
|
|
properties: [
|
|
- 'openDirectory',
|
|
|
|
|
|
+ 'openFile',
|
|
],
|
|
],
|
|
})
|
|
})
|
|
|
|
|
|
@@ -27,5 +29,30 @@ export default async () => {
|
|
}
|
|
}
|
|
|
|
|
|
let paths = result.filePaths
|
|
let paths = result.filePaths
|
|
- console.log(paths)
|
|
|
|
|
|
+ let fn = paths[0]
|
|
|
|
+ let content = await fs.readFile(fn, 'utf-8')
|
|
|
|
+
|
|
|
|
+ let data: any
|
|
|
|
+ try {
|
|
|
|
+ data = JSON.parse(content)
|
|
|
|
+ } catch (e) {
|
|
|
|
+ console.error(e)
|
|
|
|
+ return 'parse_error'
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (typeof data !== 'object' || !data.version || !Array.isArray(data.version) || !data.data) {
|
|
|
|
+ return 'invalid_data'
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let { version } = data
|
|
|
|
+ if (version[0] === 3) {
|
|
|
|
+ // import v3 data
|
|
|
|
+ }
|
|
|
|
+ if (version[0] > 4) {
|
|
|
|
+ return 'new_version'
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ await swhdb.loadJSON(data.data)
|
|
|
|
+
|
|
|
|
+ return true
|
|
}
|
|
}
|