Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"workbench.colorCustomizations": {
"activityBar.background": "#0D3607",
"titleBar.activeBackground": "#134B09",
"titleBar.activeForeground": "#F2FDF0"
}
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"scripts": {
"start": "cross-env NODE_ENV=development electron ./build/main.js",
"test": "rm -rf ./test/tmp/* && mocha -r espower-typescript/guess -r tsconfig-paths/register \"test/**/*.test.ts\"",
"clean:dist": "rimraf ./dist/*",
"clean:build": "rimraf ./build/*",
"clean:dist": "rimraf ./dist",
"clean:build": "rimraf ./build",
"dev": "npm run clean:build && concurrently \"npm run dev:main\" \"npm run dev:renderer\"",
"dev:main": "vite build --watch --config ./vite.main.config.mts",
"dev:renderer": "vite --config ./vite.render.config.mts",
Expand Down
1 change: 1 addition & 0 deletions src/common/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
export default {
active_main_window: 'active_main_window',
add_new: 'add_new',
import_folder: 'import_folder',
browser_link: 'browser_link',
close_find: 'close_find',
cmd_run_result: 'cmd_run_result',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ const lang: LanguageDict = {
find_and_replace: 'Suchen und ersetzen',
find_history: 'Verlauf suchen',
folder: 'Ordner',
folder_import: 'Import ordner',
front: 'Vorderseite',
general: 'Allgemein',
group: 'Gruppe',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ export default {
find_and_replace: 'Find and replace',
find_history: 'Find history',
folder: 'Folder',
folder_import: 'Import folder',
front: 'Front',
general: 'General',
group: 'Group',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ const lang: LanguageDict = {
find_and_replace: 'Rechercher et remplacer',
find_history: 'Historique des recherches',
folder: 'Dossier',
folder_import: 'Importer dossier',
front: 'Front',
general: 'Général',
group: 'Groupe',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ const lang: LanguageDict = {
find_and_replace: '検索と置換',
find_history: '検索履歴',
folder: 'フォルダー',
folder_import: 'フォルダーをインポート',
front: '前面',
general: '一般',
group: 'グループ',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ export default {
find_and_replace: '찾기 및 바꾸기',
find_history: '이력 찾기',
folder: '폴더',
folder_import: '가져오기 폴더',
front: '앞쪽',
general: '일반',
group: '그룹',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/tr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export default {
find_and_replace: 'Bul ve Değiştir',
find_history: 'Arama Geçmişi',
folder: 'Klasör',
folder_import: 'İçe Aktar Klasör',
front: 'Ön',
general: 'Genel',
group: 'Grup',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/zh-hant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ const lang: LanguageDict = {
find_and_replace: '尋找並替換',
find_history: '尋找歷史',
folder: '資料夾',
folder_import: '匯入資料夾',
front: '前置',
general: '一般',
group: '群組',
Expand Down
1 change: 1 addition & 0 deletions src/common/i18n/languages/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ const lang: LanguageDict = {
find_and_replace: '查找并替换',
find_history: '查找历史',
folder: '文件夹',
folder_import: '导入文件夹',
front: '前置',
general: '通用',
group: '组合',
Expand Down
1 change: 1 addition & 0 deletions src/main/actions/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,5 @@ export { default as migrateCheck } from './migrate/checkIfMigration'
export { default as migrateData } from './migrate/migrateData'
export { default as exportData } from './migrate/export'
export { default as importData } from './migrate/import'
export { default as importFolder } from './migrate/importFolder'
export { default as importDataFromUrl } from './migrate/importFromUrl'
54 changes: 54 additions & 0 deletions src/main/actions/migrate/importFolder.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/**
* import
* @author: oldj
* @homepage: https://oldj.net
*/

import importV3Data from '@main/actions/migrate/importV3Data'
import getI18N from '@main/core/getI18N'
import { swhdb } from '@main/data'
import { dialog } from 'electron'
import { promises as fs } from 'fs'
import _ from 'lodash'
import { IHostsContentObject, IHostsListObject } from '../../../common/data'

export default async (): Promise<boolean | null | string> => {
let { lang } = await getI18N()

let result = await dialog.showOpenDialog({
title: lang.import,
defaultPath: global.last_path,
filters: [
{ name: 'JSON', extensions: ['json'] },
{ name: 'All Files', extensions: ['*'] },
],
properties: ['openFile'],
})

if (result.canceled) {
return null
}

let paths = result.filePaths
let fn = paths[0]
let content = await fs.readFile(fn, 'utf-8')

let data: { hosts: IHostsContentObject[], tree: IHostsListObject[] };
try {
data = JSON.parse(content)
} catch (e) {
console.error(e)
return 'parse_error'
}

await swhdb.collection.hosts.rebuildIndexes();
for (const item of data.hosts) {
await swhdb.collection.hosts.insert(item);
}

for (const item of data.tree) {
await swhdb.list.tree.push(item);
}

return true
}
28 changes: 27 additions & 1 deletion src/renderer/components/EditHostsInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ import styles from './EditHostsInfo.module.scss'
const EditHostsInfo = () => {
const { lang } = useI18n()
const [hosts, setHosts] = useState<IHostsListObject | null>(null)
const { hosts_data, setList, current_hosts, setCurrentHosts } = useHostsData()
const { hosts_data, setList, current_hosts, setCurrentHosts, loadHostsData } = useHostsData()
const [is_show, setIsShow] = useState(false)
const [is_add, setIsAdd] = useState(true)
const [is_refreshing, setIsRefreshing] = useState(false)
Expand Down Expand Up @@ -116,6 +116,32 @@ const EditHostsInfo = () => {
setIsShow(true)
})

useOnBroadcast(events.import_folder, async () => {
let r = await actions.importFolder()
if (r === null) {
return
} else if (r === true) {
toast({
status: 'success',
description: lang.import_done,
isClosable: true,
})
await loadHostsData()
setCurrentHosts(null)
} else {
let description = lang.import_fail
if (typeof r === 'string') {
description += ` [${r}]`
}

toast({
status: 'error',
description,
isClosable: true,
})
}
})

useOnBroadcast(
events.hosts_refreshed,
(_hosts: IHostsListObject) => {
Expand Down
6 changes: 6 additions & 0 deletions src/renderer/components/LeftPanel/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ const Index = (props: Props) => {
agent.broadcast(events.add_new)
},
},
{
label: lang.folder_import,
click() {
agent.broadcast(events.import_folder)
},
},
])

return (
Expand Down