Browse Source

Add events variables.

oldj 4 years ago
parent
commit
f9d0e13987

+ 34 - 0
src/common/events.ts

@@ -0,0 +1,34 @@
+/**
+ * @author: oldj
+ * @homepage: https://oldj.net
+ */
+
+export default {
+  active_main_window: 'active_main_window',
+  add_new: 'add_new',
+  browser_link: 'browser_link',
+  close_find: 'close_find',
+  config_updated: 'config_updated',
+  edit_hosts_info: 'edit_hosts_info',
+  editor_content_change: 'editor:content_change',
+  editor_gutter_click: 'editor:gutter_click',
+  hosts_content_changed: 'hosts_content_changed',
+  hosts_refreshed: 'hosts_refreshed',
+  hosts_refreshed_by_id: 'hosts_refreshed_by_id',
+  move_to_trashcan: 'move_to_trashcan',
+  new_version: 'new_version',
+  reload_list: 'reload_list',
+  select_hosts: 'select_hosts',
+  set_hosts_on_status: 'set_hosts_on_status',
+  show_about: 'show_about',
+  show_history: 'show_history',
+  show_preferences: 'show_preferences',
+  show_source: 'show_source',
+  show_sudo_password_input: 'show_sudo_password_input',
+  system_hosts_updated: 'system_hosts_updated',
+  toggle_comment: 'toggle_comment',
+  toggle_item: 'toggle_item',
+  toggle_left_pannel: 'toggle_left_pannel',
+  tray_list_updated: 'tray:list_updated',
+  write_hosts_to_system: 'write_hosts_to_system',
+}

+ 2 - 1
src/main/actions/checkUpdate.ts

@@ -11,6 +11,7 @@ import version from '@root/version.json'
 import compareVersions from 'compare-versions'
 import { cfgdb } from '@main/data'
 import { v4 as uuid4 } from 'uuid'
+import events from '@root/common/events'
 
 const getUniqueId = async (): Promise<string> => {
   let uid: string = await cfgdb.dict.local.get('uid', '')
@@ -40,7 +41,7 @@ export default async (): Promise<boolean | null> => {
   if (compareVersions(server_version, local_version) === 1) {
     // new version found
     console.log(`new version: ${server_version}`)
-    broadcast('new_version', server_version)
+    broadcast(events.new_version, server_version)
     // 有更新
     return true
   }

+ 3 - 2
src/main/actions/hosts/refresh.ts

@@ -10,6 +10,7 @@ import { broadcast } from '@main/core/agent'
 import { swhdb } from '@main/data'
 import { GET } from '@main/libs/request'
 import { IHostsListObject, IOperationResult } from '@root/common/data'
+import events from '@root/common/events'
 import * as hostsFn from '@root/common/hostsFn'
 import dayjs from 'dayjs'
 
@@ -61,8 +62,8 @@ export default async (hosts_id: string): Promise<IOperationResult> => {
 
   if (old_content !== new_content) {
     await setHostsContent(hosts_id, new_content)
-    broadcast('hosts_refreshed', hosts)
-    broadcast('hosts_content_changed', hosts_id)
+    broadcast(events.hosts_refreshed, hosts)
+    broadcast(events.hosts_content_changed, hosts_id)
   }
 
   return {

+ 2 - 1
src/main/actions/hosts/setSystemHosts.ts

@@ -10,6 +10,7 @@ import { swhdb } from '@main/data'
 import safePSWD from '@main/libs/safePSWD'
 import { IHostsWriteOptions } from '@main/types'
 import { IHostsHistoryObject } from '@root/common/data'
+import events from '@root/common/events'
 import { exec } from 'child_process'
 import * as fs from 'fs'
 import md5 from 'md5'
@@ -175,7 +176,7 @@ const setSystemHosts = async (content: string, options?: IHostsWriteOptions): Pr
 
     await addHistory(content)
     await updateTrayTitle()
-    broadcast('system_hosts_updated')
+    broadcast(events.system_hosts_updated)
 
     await tryToRun()
   }

+ 2 - 1
src/main/actions/list/moveItemToTrashcan.ts

@@ -7,6 +7,7 @@ import { getList } from '@main/actions'
 import { broadcast } from '@main/core/agent'
 import { swhdb } from '@main/data'
 import { IHostsListObject, ITrashcanObject } from '@root/common/data'
+import events from '@root/common/events'
 import * as hostsFn from '@root/common/hostsFn'
 
 export default async (id: string) => {
@@ -20,7 +21,7 @@ export default async (id: string) => {
 
   if (node.on) {
     // current hosts is in use, update system hosts
-    broadcast('toggle_item', node.id, false)
+    broadcast(events.toggle_item, node.id, false)
   }
 
   let obj: ITrashcanObject = {

+ 2 - 1
src/main/http/api/toggle.ts

@@ -6,6 +6,7 @@
 
 import { getList } from '@main/actions'
 import { broadcast } from '@main/core/agent'
+import events from '@root/common/events'
 import { findItemById } from '@root/common/hostsFn'
 import { Request, Response } from 'express'
 
@@ -24,7 +25,7 @@ const toggle = async (req: Request, res: Response) => {
     return
   }
 
-  broadcast('toggle_item', id, !item.on)
+  broadcast(events.toggle_item, id, !item.on)
   res.end('ok')
 }
 

+ 2 - 1
src/main/libs/cron.ts

@@ -7,6 +7,7 @@
 import { checkUpdate, getList, refreshHosts } from '@main/actions'
 import { broadcast } from '@main/core/agent'
 import { IHostsListObject } from '@root/common/data'
+import events from '@root/common/events'
 import { flatten } from '@root/common/hostsFn'
 
 let t: any
@@ -45,7 +46,7 @@ const checkRefresh = async () => {
     }
   }
 
-  broadcast('reload_list')
+  broadcast(events.reload_list)
 }
 
 const checkServer = async () => {

+ 2 - 1
src/main/ui/find.ts

@@ -6,6 +6,7 @@
 import { broadcast } from '@main/core/agent'
 import getIndex from '@main/libs/getIndex'
 import isDev from '@main/libs/isDev'
+import events from '@root/common/events'
 import { BrowserWindow } from 'electron'
 import path from 'path'
 
@@ -49,7 +50,7 @@ const makeWindow = () => {
     } else {
       e.preventDefault()
       win?.hide()
-      broadcast('close_find')
+      broadcast(events.close_find)
     }
   })
 

+ 6 - 12
src/main/ui/menu.ts

@@ -5,6 +5,7 @@
 
 import { findShow } from '@main/actions'
 import isDev from '@main/libs/isDev'
+import events from '@root/common/events'
 import { BrowserWindow, Menu, MenuItem, MenuItemConstructorOptions, shell } from 'electron'
 import { I18N, LocaleName } from '@root/common/i18n'
 import { homepage_url, feedback_url } from '@root/common/constants'
@@ -22,7 +23,7 @@ export const makeMainMenu = (locale: LocaleName = 'en') => {
           label: lang.new,
           accelerator: 'CommandOrControl+N',
           click: () => {
-            broadcast('add_new')
+            broadcast(events.add_new)
           },
         },
         {
@@ -47,7 +48,7 @@ export const makeMainMenu = (locale: LocaleName = 'en') => {
           label: lang.preferences,
           accelerator: 'CommandOrControl+,',
           click: () => {
-            broadcast('show_preferences')
+            broadcast(events.show_preferences)
           },
         },
       ],
@@ -88,19 +89,12 @@ export const makeMainMenu = (locale: LocaleName = 'en') => {
         },
         {
           type: 'separator',
-          // },
-          // {
-          //   label: lang.search,
-          //   accelerator: 'CommandOrControl+F',
-          //   click () {
-          //     broadcast('search:start')
-          //   }
         },
         {
           label: lang.comment_current_line,
           accelerator: 'CommandOrControl+/',
           click () {
-            broadcast('toggle_comment')
+            broadcast(events.toggle_comment)
           },
         },
         {
@@ -208,7 +202,7 @@ export const makeMainMenu = (locale: LocaleName = 'en') => {
           label: lang.about,
           //role: 'about',
           click: () => {
-            broadcast('show_about')
+            broadcast(events.show_about)
           },
         },
         {
@@ -293,7 +287,7 @@ export const makeMainMenu = (locale: LocaleName = 'en') => {
         label: `${lang.about} ${name}`,
         //role: 'about',
         click: () => {
-          broadcast('show_about')
+          broadcast(events.show_about)
         },
       })
 

+ 3 - 2
src/main/ui/tray/index.ts

@@ -7,6 +7,7 @@
 import { configGet, configSet, updateTrayTitle } from '@main/actions'
 import { broadcast } from '@main/core/agent'
 import { makeWindow } from '@main/ui/tray/window'
+import events from '@root/common/events'
 import { I18N } from '@root/common/i18n'
 import version from '@root/version.json'
 import { app, BrowserWindow, Menu, screen, Tray } from 'electron'
@@ -47,7 +48,7 @@ const makeTray = async () => {
     }
   })
 
-  tray.on('double-click', () => broadcast('active_main_window'))
+  tray.on('double-click', () => broadcast(events.active_main_window))
 
   tray.on('right-click', async () => {
     let locale = await configGet('locale')
@@ -61,7 +62,7 @@ const makeTray = async () => {
         label: lang._app_name,
         toolTip: lang.show_main_window,
         click () {
-          broadcast('active_main_window')
+          broadcast(events.active_main_window)
         },
       },
       {

+ 2 - 1
src/renderer/components/About/index.tsx

@@ -15,6 +15,7 @@ import {
 } from '@chakra-ui/react'
 import AboutContent from '@renderer/components/About/AboutContent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
+import events from '@root/common/events'
 import React, { useState } from 'react'
 import styles from './index.less'
 
@@ -24,7 +25,7 @@ const About = () => {
 
   const onClose = () => setIsOpen(false)
 
-  useOnBroadcast('show_about', () => setIsOpen(true))
+  useOnBroadcast(events.show_about, () => setIsOpen(true))
 
   return (
     <Modal isOpen={is_open} onClose={onClose}>

+ 2 - 1
src/renderer/components/BrowserLink.tsx

@@ -5,6 +5,7 @@
  */
 
 import { actions, agent } from '@renderer/core/agent'
+import events from '@root/common/events'
 import React from 'react'
 
 interface Props {
@@ -19,7 +20,7 @@ const BrowserLink = (props: Props) => {
 
   const onClick = (e: React.MouseEvent) => {
     e.preventDefault()
-    agent.broadcast('browser_link', href)
+    agent.broadcast(events.browser_link, href)
     actions.openUrl(href)
       .catch(e => console.error(e))
   }

+ 6 - 5
src/renderer/components/EditHostsInfo.tsx

@@ -31,6 +31,7 @@ import Transfer from '@renderer/components/Transfer'
 import { actions, agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { FolderModeType, HostsType, IHostsListObject } from '@root/common/data'
+import events from '@root/common/events'
 import * as hostsFn from '@root/common/hostsFn'
 import lodash from 'lodash'
 import React, { useRef, useState } from 'react'
@@ -72,7 +73,7 @@ const EditHostsInfo = () => {
       }
       let list: IHostsListObject[] = [ ...hosts_data.list, h ]
       await setList(list)
-      agent.broadcast('select_hosts', h.id, 1000)
+      agent.broadcast(events.select_hosts, h.id, 1000)
 
     } else if (data && data.id) {
       // edit
@@ -105,19 +106,19 @@ const EditHostsInfo = () => {
     setHosts(obj)
   }
 
-  useOnBroadcast('edit_hosts_info', (hosts?: IHostsListObject) => {
+  useOnBroadcast(events.edit_hosts_info, (hosts?: IHostsListObject) => {
     setHosts(hosts || null)
     setIsAdd(!hosts)
     setIsShow(true)
   })
 
-  useOnBroadcast('add_new', () => {
+  useOnBroadcast(events.add_new, () => {
     setHosts(null)
     setIsAdd(true)
     setIsShow(true)
   })
 
-  useOnBroadcast('hosts_refreshed', (_hosts: IHostsListObject) => {
+  useOnBroadcast(events.hosts_refreshed, (_hosts: IHostsListObject) => {
     if (hosts && hosts.id === _hosts.id) {
       onUpdate(lodash.pick(_hosts, [ 'last_refresh', 'last_refresh_ms' ]))
     }
@@ -275,7 +276,7 @@ const EditHostsInfo = () => {
               colorScheme="pink"
               onClick={() => {
                 if (hosts) {
-                  agent.broadcast('move_to_trashcan', hosts.id)
+                  agent.broadcast(events.move_to_trashcan, hosts.id)
                   onCancel()
                 }
               }}

+ 11 - 10
src/renderer/components/Editor/HostsEditor.tsx

@@ -9,6 +9,7 @@ import StatusBar from '@renderer/components/StatusBar'
 import { actions, agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { IHostsListObject } from '@root/common/data'
+import events from '@root/common/events'
 import { IFindShowSourceParam } from '@root/common/types'
 import wait from '@root/common/utils/wait'
 import clsx from 'clsx'
@@ -65,7 +66,7 @@ const HostsEditor = (props: Props) => {
 
   const toSave = lodash.debounce((id: string, content: string) => {
     actions.setHostsContent(id, content)
-      .then(() => agent.broadcast('hosts_content_changed', id))
+      .then(() => agent.broadcast(events.hosts_content_changed, id))
       .catch(e => console.error(e))
   }, 1000)
 
@@ -115,11 +116,11 @@ const HostsEditor = (props: Props) => {
 
     cm.on('change', (editor) => {
       let value = editor.getDoc().getValue()
-      agent.broadcast('editor:content_change', value)
+      agent.broadcast(events.editor_content_change, value)
     })
 
     cm.on('gutterClick', (cm, n) => {
-      agent.broadcast('editor:gutter_click', n)
+      agent.broadcast(events.editor_gutter_click, n)
     })
   }, [])
 
@@ -129,26 +130,26 @@ const HostsEditor = (props: Props) => {
     }
   }, [hosts, find_params])
 
-  useOnBroadcast('editor:content_change', (new_content: string) => {
+  useOnBroadcast(events.editor_content_change, (new_content: string) => {
     if (new_content === content) return
     onChange(new_content)
   }, [hosts, hosts_id, content])
 
-  useOnBroadcast('editor:gutter_click', onGutterClick, [cm_editor, is_read_only])
+  useOnBroadcast(events.editor_gutter_click, onGutterClick, [cm_editor, is_read_only])
 
-  useOnBroadcast('hosts_refreshed', (h: IHostsListObject) => {
+  useOnBroadcast(events.hosts_refreshed, (h: IHostsListObject) => {
     if (hosts.id !== '0' && h.id !== hosts.id) return
     loadContent()
   }, [hosts, hosts_data, cm_editor])
 
-  useOnBroadcast('hosts_refreshed_by_id', (id: string) => {
+  useOnBroadcast(events.hosts_refreshed_by_id, (id: string) => {
     if (hosts.id !== '0' && id !== hosts.id) return
     loadContent()
   }, [hosts, hosts_data, cm_editor])
 
-  useOnBroadcast('toggle_comment', toggleComment, [cm_editor, is_read_only])
+  useOnBroadcast(events.toggle_comment, toggleComment, [cm_editor, is_read_only])
 
-  useOnBroadcast('set_hosts_on_status', () => {
+  useOnBroadcast(events.set_hosts_on_status, () => {
     if (hosts.id === '0') {
       loadContent()
     }
@@ -174,7 +175,7 @@ const HostsEditor = (props: Props) => {
     cm_editor.focus()
   }
 
-  useOnBroadcast('show_source', async (params: IFindShowSourceParam) => {
+  useOnBroadcast(events.show_source, async (params: IFindShowSourceParam) => {
     if (!cm_editor) return
 
     if (params.item_id !== hosts.id) {

+ 2 - 1
src/renderer/components/History.tsx

@@ -29,6 +29,7 @@ import HostsViewer from '@renderer/components/HostsViewer'
 import { actions } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { IHostsHistoryObject } from '@root/common/data'
+import events from '@root/common/events'
 import clsx from 'clsx'
 import dayjs from 'dayjs'
 import prettyBytes from 'pretty-bytes'
@@ -157,7 +158,7 @@ const History = () => {
     await updateConfigs({ history_limit: value })
   }
 
-  useOnBroadcast('show_history', () => {
+  useOnBroadcast(events.show_history, () => {
     setIsOpen(true)
     loadData()
   })

+ 2 - 1
src/renderer/components/LeftPanel/index.tsx

@@ -9,6 +9,7 @@ import Trashcan from '@renderer/components/LeftPanel/Trashcan'
 import List from '@renderer/components/List'
 import { agent } from '@renderer/core/agent'
 import { PopupMenu } from '@renderer/core/PopupMenu'
+import events from '@root/common/events'
 import React from 'react'
 import styles from './index.less'
 
@@ -24,7 +25,7 @@ const Index = (props: Props) => {
     {
       label: lang.hosts_add,
       click () {
-        agent.broadcast('add_new')
+        agent.broadcast(events.add_new)
       },
     },
   ])

+ 5 - 4
src/renderer/components/List/ListItem.tsx

@@ -17,6 +17,7 @@ import { BiEdit } from 'react-icons/bi'
 import { Center } from '@chakra-ui/react'
 import scrollIntoView from 'smooth-scroll-into-view-if-needed'
 import styles from './ListItem.less'
+import events from '@root/common/events'
 
 interface Props {
   data: IHostsListObject;
@@ -66,7 +67,7 @@ const ListItem = (props: Props) => {
     on = typeof on === 'boolean' ? on : !is_on
     setIsOn(on)
 
-    agent.broadcast('toggle_item', data.id, on)
+    agent.broadcast(events.toggle_item, data.id, on)
   }
 
   if (!data) return null
@@ -78,7 +79,7 @@ const ListItem = (props: Props) => {
     {
       label: lang.edit,
       click() {
-        agent.broadcast('edit_hosts_info', data)
+        agent.broadcast(events.edit_hosts_info, data)
       },
     },
     {
@@ -87,7 +88,7 @@ const ListItem = (props: Props) => {
     {
       label: lang.move_to_trashcan,
       click() {
-        agent.broadcast('move_to_trashcan', data.id)
+        agent.broadcast(events.move_to_trashcan, data.id)
       },
     },
   ])
@@ -129,7 +130,7 @@ const ListItem = (props: Props) => {
                 <BiEdit
                   title={lang.edit}
                   onClick={() => {
-                    agent.broadcast('edit_hosts_info', data)
+                    agent.broadcast(events.edit_hosts_info, data)
                   }}
                 />
               </Center>

+ 17 - 16
src/renderer/components/List/index.tsx

@@ -12,6 +12,7 @@ import { Tree } from '@renderer/components/Tree'
 import { actions, agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { IHostsListObject } from '@root/common/data'
+import events from '@root/common/events'
 import { findItemById, getNextSelectedItem, setOnStateOfItem } from '@root/common/hostsFn'
 import { IFindShowSourceParam } from '@root/common/types'
 import clsx from 'clsx'
@@ -60,9 +61,9 @@ const List = (props: Props) => {
         description: lang.success,
         isClosable: true,
       })
-      agent.broadcast('set_hosts_on_status', id, on)
+      agent.broadcast(events.set_hosts_on_status, id, on)
     } else {
-      agent.broadcast('set_hosts_on_status', id, !on)
+      agent.broadcast(events.set_hosts_on_status, id, !on)
     }
   }
 
@@ -82,7 +83,7 @@ const List = (props: Props) => {
       if (current_hosts) {
         let hosts = findItemById(list, current_hosts.id)
         if (hosts) {
-          agent.broadcast('set_hosts_on_status', current_hosts.id, hosts.on)
+          agent.broadcast(events.set_hosts_on_status, current_hosts.id, hosts.on)
         }
       }
 
@@ -94,7 +95,7 @@ const List = (props: Props) => {
       // let body: string = lang.no_access_to_hosts
       if (result.code === 'no_access') {
         if (agent.platform === 'darwin' || agent.platform === 'linux') {
-          agent.broadcast('show_sudo_password_input', list)
+          agent.broadcast(events.show_sudo_password_input, list)
         }
         // } else {
         // body = result.message || 'Unknow error!'
@@ -111,19 +112,19 @@ const List = (props: Props) => {
       })
     }
 
-    agent.broadcast('tray:list_updated')
+    agent.broadcast(events.tray_list_updated)
 
     return result.success
   }
 
   if (!is_tray) {
-    useOnBroadcast('toggle_item', onToggleItem, [hosts_data])
-    useOnBroadcast('write_hosts_to_system', writeHostsToSystem, [hosts_data])
+    useOnBroadcast(events.toggle_item, onToggleItem, [hosts_data])
+    useOnBroadcast(events.write_hosts_to_system, writeHostsToSystem, [hosts_data])
   } else {
-    useOnBroadcast('tray:list_updated', loadHostsData)
+    useOnBroadcast(events.tray_list_updated, loadHostsData)
   }
 
-  useOnBroadcast('move_to_trashcan', async (id: string) => {
+  useOnBroadcast(events.move_to_trashcan, async (id: string) => {
     console.log(`move_to_trashcan: #${id}`)
 
     let next_hosts: IHostsListObject | undefined
@@ -141,12 +142,12 @@ const List = (props: Props) => {
     }
   }, [current_hosts, hosts_data])
 
-  useOnBroadcast('select_hosts', async (id: string, wait_ms: number = 0) => {
+  useOnBroadcast(events.select_hosts, async (id: string, wait_ms: number = 0) => {
     let hosts = findItemById(hosts_data.list, id)
     if (!hosts) {
       if (wait_ms > 0) {
         setTimeout(() => {
-          agent.broadcast('select_hosts', id, wait_ms - 50)
+          agent.broadcast(events.select_hosts, id, wait_ms - 50)
         }, 50)
       }
       return
@@ -155,9 +156,9 @@ const List = (props: Props) => {
     setCurrentHosts(hosts)
   }, [hosts_data])
 
-  useOnBroadcast('reload_list', loadHostsData)
+  useOnBroadcast(events.reload_list, loadHostsData)
 
-  useOnBroadcast('hosts_content_changed', async (hosts_id: string) => {
+  useOnBroadcast(events.hosts_content_changed, async (hosts_id: string) => {
     let list: IHostsListObject[] = await actions.getList()
     let hosts = findItemById(list, hosts_id)
     if (!hosts || !hosts.on) return
@@ -166,8 +167,8 @@ const List = (props: Props) => {
     await writeHostsToSystem(list)
   })
 
-  useOnBroadcast('show_source', async (params: IFindShowSourceParam) => {
-    agent.broadcast('select_hosts', params.item_id)
+  useOnBroadcast(events.show_source, async (params: IFindShowSourceParam) => {
+    agent.broadcast(events.select_hosts, params.item_id)
   })
 
   return (
@@ -181,7 +182,7 @@ const List = (props: Props) => {
           setList(list).catch(e => console.error(e))
         }}
         // onSelect={(id) => {
-        //   agent.broadcast('select_hosts', id)
+        //   agent.broadcast(events.select_hosts, id)
         //}}
         nodeRender={(data) => (
           <ListItem key={data.id} data={data} is_tray={is_tray}/>

+ 2 - 1
src/renderer/components/MainPanel/index.tsx

@@ -8,6 +8,7 @@ import { useModel } from '@@/plugin-model/useModel'
 import HostsEditor from '@renderer/components/Editor/HostsEditor'
 import { actions } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
+import events from '@root/common/events'
 import React, { useEffect, useState } from 'react'
 import styles from './index.less'
 
@@ -24,7 +25,7 @@ const MainPanel = (props: Props) => {
     }
   }, [current_hosts])
 
-  useOnBroadcast('system_hosts_updated', () => {
+  useOnBroadcast(events.system_hosts_updated, () => {
     if (!current_hosts) {
       actions.getSystemHosts().then(value => setSystemHostsContent(value))
     }

+ 3 - 2
src/renderer/components/Pref/index.tsx

@@ -26,6 +26,7 @@ import Proxy from '@renderer/components/Pref/Proxy'
 import { agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { ConfigsType } from '@root/common/default_configs'
+import events from '@root/common/events'
 import React, { useEffect, useState } from 'react'
 import { BiSliderAlt } from 'react-icons/bi'
 import Advanced from './Advanced'
@@ -62,14 +63,14 @@ const PreferencePanel = (props: Props) => {
       setColorMode(data.theme)
     }
 
-    agent.broadcast('config_updated', data)
+    agent.broadcast(events.config_updated, data)
   }
 
   useEffect(() => {
     setData(configs)
   }, [configs])
 
-  useOnBroadcast('show_preferences', async () => {
+  useOnBroadcast(events.show_preferences, async () => {
     setIsOpen(true)
   })
 

+ 4 - 3
src/renderer/components/SudoPasswordInput.tsx

@@ -18,6 +18,7 @@ import {
 import { agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { IHostsListObject } from '@root/common/data'
+import events from '@root/common/events'
 import React, { useState } from 'react'
 import styles from './SudoPasswordInput.less'
 
@@ -40,14 +41,14 @@ const SudoPasswordInput = (props: Props) => {
   const onOk = async () => {
     setIsShow(false)
     setPswd('')
-    agent.broadcast('write_hosts_to_system', tmp_list, { sudo_pswd: pswd })
+    agent.broadcast(events.write_hosts_to_system, tmp_list, { sudo_pswd: pswd })
   }
 
-  useOnBroadcast('show_sudo_password_input', (tmp_list?: IHostsListObject[]) => {
+  useOnBroadcast(events.show_sudo_password_input, (tmp_list?: IHostsListObject[]) => {
     setTmpList(tmp_list)
     setIsShow(true)
     // console.log(tmp_list)
-    agent.broadcast('active_main_window')
+    agent.broadcast(events.active_main_window)
   }, [ tmp_list ])
 
   if (!is_show) return null

+ 3 - 2
src/renderer/components/TopBar/ConfigMenu.tsx

@@ -9,6 +9,7 @@ import { Button, Menu, MenuButton, MenuDivider, MenuItem, MenuList, useToast } f
 import ImportFromUrl from '@renderer/components/TopBar/ImportFromUrl'
 import { actions, agent } from '@renderer/core/agent'
 import { feedback_url, homepage_url } from '@root/common/constants'
+import events from '@root/common/events'
 import React, { useState } from 'react'
 import {
   BiCog,
@@ -46,7 +47,7 @@ const ConfigMenu = (props: Props) => {
         <MenuList borderColor="var(--swh-border-color-0)" className={styles.menu_list}>
           <MenuItem
             icon={<BiInfoCircle/>}
-            onClick={() => agent.broadcast('show_about')}
+            onClick={() => agent.broadcast(events.show_about)}
           >
             {lang.about}
           </MenuItem>
@@ -150,7 +151,7 @@ const ConfigMenu = (props: Props) => {
 
           <MenuItem
             icon={<BiSliderAlt/>}
-            onClick={() => agent.broadcast('show_preferences')}
+            onClick={() => agent.broadcast(events.show_preferences)}
           >
             {lang.preferences}
           </MenuItem>

+ 6 - 5
src/renderer/components/TopBar/index.tsx

@@ -11,6 +11,7 @@ import SwitchButton from '@renderer/components/SwitchButton'
 import ConfigMenu from '@renderer/components/TopBar/ConfigMenu'
 import { actions, agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
+import events from '@root/common/events'
 import React, { useEffect, useState } from 'react'
 import { BiHistory, BiPlus, BiSidebar, BiX } from 'react-icons/bi'
 import styles from './index.less'
@@ -33,7 +34,7 @@ export default (props: IProps) => {
     setIsOn(!!current_hosts?.on)
   }, [current_hosts])
 
-  useOnBroadcast('set_hosts_on_status', (id: string, on: boolean) => {
+  useOnBroadcast(events.set_hosts_on_status, (id: string, on: boolean) => {
     if (current_hosts && current_hosts.id === id) {
       setIsOn(on)
     }
@@ -46,7 +47,7 @@ export default (props: IProps) => {
           aria-label="Toggle sidebar"
           icon={<BiSidebar/>}
           onClick={() => {
-            agent.broadcast('toggle_left_pannel', !show_left_panel)
+            agent.broadcast(events.toggle_left_pannel, !show_left_panel)
           }}
           variant="ghost"
           mr={1}
@@ -54,7 +55,7 @@ export default (props: IProps) => {
         <IconButton
           aria-label="Add"
           icon={<BiPlus/>}
-          onClick={() => agent.broadcast('add_new')}
+          onClick={() => agent.broadcast(events.add_new)}
           variant="ghost"
         />
       </Flex>
@@ -95,7 +96,7 @@ export default (props: IProps) => {
         {show_toggle_switch ? (
           <Box mr={3}>
             <SwitchButton on={is_on} onChange={on => {
-              current_hosts && agent.broadcast('toggle_item', current_hosts.id, on)
+              current_hosts && agent.broadcast(events.toggle_item, current_hosts.id, on)
             }}/>
           </Box>
         ) : null}
@@ -104,7 +105,7 @@ export default (props: IProps) => {
             aria-label="Show history"
             icon={<BiHistory/>}
             variant="ghost"
-            onClick={() => agent.broadcast('show_history')}
+            onClick={() => agent.broadcast(events.show_history)}
           />
         ) : null}
 

+ 6 - 5
src/renderer/pages/find.tsx

@@ -24,6 +24,7 @@ import { actions, agent } from '@renderer/core/agent'
 import { PopupMenu } from '@renderer/core/PopupMenu'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { HostsType } from '@root/common/data'
+import events from '@root/common/events'
 import { IFindItem, IFindPosition, IFindShowSourceParam } from '@root/common/types'
 import { useDebounce } from 'ahooks'
 import clsx from 'clsx'
@@ -104,9 +105,9 @@ const find = (props: Props) => {
     return () => window.removeEventListener('focus', onFocus, false)
   }, [ipt_kw])
 
-  useOnBroadcast('config_updated', loadConfigs)
+  useOnBroadcast(events.config_updated, loadConfigs)
 
-  useOnBroadcast('close_find', () => {
+  useOnBroadcast(events.close_find, () => {
     console.log('on close find...')
     setFindResult([])
     setFindPositions([])
@@ -164,7 +165,7 @@ const find = (props: Props) => {
   const toShowSource = async (result_item: IFindPositionShow) => {
     // console.log(result_item)
     await actions.cmdFocusMainWindow()
-    agent.broadcast('show_source', lodash.pick<IFindShowSourceParam>(result_item, [
+    agent.broadcast(events.show_source, lodash.pick<IFindShowSourceParam>(result_item, [
       'item_id', 'start', 'end', 'match',
       'line', 'line_pos', 'end_line', 'end_line_pos',
     ]))
@@ -197,7 +198,7 @@ const find = (props: Props) => {
 
     const content = spliters.map(sp => `${sp.before}${sp.replace ?? sp.match}${sp.after}`).join('')
     await actions.setHostsContent(pos.item_id, content)
-    agent.broadcast('hosts_refreshed_by_id', pos.item_id)
+    agent.broadcast(events.hosts_refreshed_by_id, pos.item_id)
 
     if (current_result_idx < find_positions.length - 1) {
       setCurrentResultIdx(current_result_idx + 1)
@@ -210,7 +211,7 @@ const find = (props: Props) => {
       if (item_type !== 'local') continue
       const content = spliters.map(sp => `${sp.before}${replace_to}${sp.after}`).join('')
       await actions.setHostsContent(item_id, content)
-      agent.broadcast('hosts_refreshed_by_id', item_id)
+      agent.broadcast(events.hosts_refreshed_by_id, item_id)
     }
 
     setFindPositions(find_positions.map(pos => ({

+ 3 - 2
src/renderer/pages/index.tsx

@@ -11,6 +11,7 @@ import SudoPasswordInput from '@renderer/components/SudoPasswordInput'
 import { actions, agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
 import { download_url } from '@root/common/constants'
+import events from '@root/common/events'
 import clsx from 'clsx'
 import React, { useEffect, useState } from 'react'
 import TopBar from '../components/TopBar'
@@ -63,9 +64,9 @@ export default () => {
     init().catch(e => console.error(e))
   }, [configs])
 
-  useOnBroadcast('toggle_left_pannel', (show: boolean) => setLeftShow(show))
+  useOnBroadcast(events.toggle_left_pannel, (show: boolean) => setLeftShow(show))
 
-  useOnBroadcast('new_version', (new_version: string) => {
+  useOnBroadcast(events.new_version, (new_version: string) => {
     toast({
       title: lang.new_version_found,
       description: (

+ 3 - 2
src/renderer/pages/tray.tsx

@@ -3,6 +3,7 @@ import { useColorMode } from '@chakra-ui/react'
 import List from '@renderer/components/List'
 import { agent } from '@renderer/core/agent'
 import useOnBroadcast from '@renderer/core/useOnBroadcast'
+import events from '@root/common/events'
 import React, { useEffect } from 'react'
 import { BiArea } from 'react-icons/bi'
 import styles from './tray.less'
@@ -30,10 +31,10 @@ export default () => {
   }
 
   useEffect(update, [configs])
-  useOnBroadcast('config_updated', loadConfigs, [configs])
+  useOnBroadcast(events.config_updated, loadConfigs, [configs])
 
   const showMain = () => {
-    agent.broadcast('active_main_window')
+    agent.broadcast(events.active_main_window)
   }
 
   return (

+ 1 - 1
src/version.json

@@ -1 +1 @@
-[4, 0, 1, 6030]
+[4, 0, 1, 6043]