diff --git a/usr/lib/hosts-switch/window.py b/usr/lib/hosts-switch/_window.py
similarity index 100%
rename from usr/lib/hosts-switch/window.py
rename to usr/lib/hosts-switch/_window.py
diff --git a/usr/lib/hosts-switch/hosts-switch.py b/usr/lib/hosts-switch/hosts-switch.py
index ef5fcf8..93e0d0a 100755
--- a/usr/lib/hosts-switch/hosts-switch.py
+++ b/usr/lib/hosts-switch/hosts-switch.py
@@ -6,9 +6,8 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk, GLib, Gio, GObject, GdkPixbuf
-from we.gtk3 import WebEngine, create_setting, create_hmr_server
-# from webengine.gtk3 import WebEngine, create_setting, create_hmr_server
-from window import Window
+from webengine.gtk3 import WebEngine, create_setting, create_hmr_server
+from _window import Window
APP_ID = 'fun.wkit.hosts-switch'
__dir__ = os.path.dirname(os.path.realpath(__file__))
@@ -26,12 +25,12 @@ class Application(Gtk.Application):
self.window = Window()
web = WebEngine(self.window)
- setting = create_setting({"devtools": True})
- hmr = create_hmr_server()
-
web.set_root(web_root)
-
- web.use(setting).use(hmr)
+
+ if os.getenv('RUN_ENV') == 'development':
+ setting = create_setting({"devtools": True})
+ hmr = create_hmr_server()
+ web.use(setting).use(hmr)
web.connect('quit', self.quit_all)
web.load()
@@ -61,5 +60,4 @@ if __name__ == "__main__":
app.run(sys.argv)
except Exception as err:
print(err)
- pass
diff --git a/usr/lib/hosts-switch/webapp/app.js b/usr/lib/hosts-switch/webapp/app.js
index f387aa2..7ff2e36 100644
--- a/usr/lib/hosts-switch/webapp/app.js
+++ b/usr/lib/hosts-switch/webapp/app.js
@@ -11,6 +11,8 @@ import { createApp, createRouter } from 'wkitd'
import store from './store.js'
import './components/home.js'
+import { noop } from './utils/index.js'
+
createApp({
data: {
input: '',
@@ -32,7 +34,7 @@ createApp({
}
},
render() {
- return html` `
+ return html` `
}
})
.use(store)
diff --git a/usr/lib/hosts-switch/webapp/components/home.js b/usr/lib/hosts-switch/webapp/components/home.js
index 963e64e..75c442e 100644
--- a/usr/lib/hosts-switch/webapp/components/home.js
+++ b/usr/lib/hosts-switch/webapp/components/home.js
@@ -8,7 +8,6 @@ import { html, css, Component, classMap, nextTick, outsideClick } from 'wkit'
import 'ui/icon/index.js'
import 'ui/scroll/index.js'
import 'ui/layer/index.js'
-// import 'local/layer/index.js'
import 'ui/space/index.js'
import 'ui/form/input.js'
import 'ui/form/switch.js'
@@ -149,14 +148,16 @@ class Home extends Component {
confirmAction(ev) {
this.$refs.context.close()
if (ev.target.tagName === 'LI') {
- var act = ev.target.dataset.act
+ let act = ev.target.dataset.act
+ let { HOST_DATA, records, domains } = this.$store
+ let idx = domains.indexOf(this.editDomain)
if (act === 'del') {
layer
.confirm(`是否要删除域名「${this.editDomain}」?`)
.then(res => {
- if (this.editDomain === this.activeDomain) {
- if (this.records.length) {
+ if (this.editDomain === this.$store.activeDomain) {
+ if (records.length) {
return layer.toast(
'该域名下有主机记录, 请先删除主机记录后再删除域名',
'error'
@@ -171,40 +172,46 @@ class Home extends Component {
}
}
delete HOST_DATA[this.editDomain]
- this.domains.remove(this.editDomain)
- this.activeDomain = ''
+
+ domains.splice(idx, 1)
+
this.editDomain = ''
- this.records.clear()
+ this.$store.records = []
+ this.$store.activeDomain = domains[0]
+ this.$refs.domain.mounted()
this.save()
- this.toggleDomain(this.domains[0])
})
.catch(noop)
} else if (act === 'edit') {
layer
- .prompt(`请输入新的名字「${this.editDomain}」`, (val, done) => {
- if (val === this.editDomain || HOST_DATA[val]) {
- return
- }
+ .prompt(
+ `请输入新的名字「${this.editDomain}」`,
+ this.editDomain,
+ (val, done) => {
+ if (val === this.editDomain || HOST_DATA[val]) {
+ return layer.toast(`${val} 域名没有变化, 或已经存在`)
+ }
- if (
- val === 'localhost' ||
- val === 'local' ||
- /^[\w.]+\.[a-z]+$/.test(val)
- ) {
- done()
- } else {
- layer.toast('域名格式错误', 'error')
+ if (
+ val === 'localhost' ||
+ val === 'local' ||
+ /^[\w.]+\.[a-z]+$/.test(val)
+ ) {
+ done()
+ } else {
+ layer.toast('域名格式错误', 'error')
+ }
}
- })
+ )
.then(val => {
- var idx = this.domains.indexOf(this.editDomain)
- this.domains.set(idx, val)
+ domains[idx] = val
HOST_DATA[val] = HOST_DATA[this.editDomain]
delete HOST_DATA[this.editDomain]
- this.activeDomain = ''
+
+ this.$store.activeDomain = val
this.editDomain = ''
+ this.$refs.domain.mounted()
this.save()
- this.toggleDomain(val)
})
.catch(noop)
}
@@ -214,7 +221,7 @@ class Home extends Component {
save() {
let { HOST_DATA, activeDomain, records } = this.$store
if (activeDomain) {
- HOST_DATA[activeDomain] = records
+ HOST_DATA[activeDomain] = records.filter(it => it.record && it.value)
}
saveHosts(HOST_DATA)
layer.toast('保存成功', 'success')
@@ -226,20 +233,15 @@ class Home extends Component {
ref="domain"
@toggle-domain=${_ => (this.$refs.list.scrollTop = 0)}
@show-menu=${ev => this.showMenu(ev.event)}
+ @save=${this.save}
>
diff --git a/usr/lib/hosts-switch/webapp/components/sidebar.js b/usr/lib/hosts-switch/webapp/components/sidebar.js
index 97720a8..ba8654c 100644
--- a/usr/lib/hosts-switch/webapp/components/sidebar.js
+++ b/usr/lib/hosts-switch/webapp/components/sidebar.js
@@ -88,13 +88,13 @@ class Sidebar extends Component {
}
})
.then(val => {
+ let { HOST_DATA, records } = this.$store
this.$store.domains.push(val)
- // HOST_DATA[val] = []
- // if (!this.$store.activeDomain) {
- // this.toggleDomain(null, val)
- // }
- // this.save()
- // this.$emit('save')
+ HOST_DATA[val] = []
+ if (!this.$store.activeDomain) {
+ this.toggleDomain(null, val)
+ }
+ this.$emit('save')
})
.catch(noop)
}
diff --git a/usr/lib/hosts-switch/webapp/index.html b/usr/lib/hosts-switch/webapp/index.html
index e8ff471..7891349 100644
--- a/usr/lib/hosts-switch/webapp/index.html
+++ b/usr/lib/hosts-switch/webapp/index.html
@@ -20,12 +20,10 @@
"imports":{
"es.shim":"app:///lib/es.shim.js",
"wkit":"app:///lib/wkit.js",
- "wkit":"http://127.0.0.1:9999/src/index.js",
"wkitd":"app:///lib/wkitd.js",
"fetch":"app:///lib/fetch.js",
"crypto":"app:///lib/crypto.js",
- "ui/":"app:///lib/ui/",
- "local/":"http://127.0.0.1:8090/dist/"
+ "ui/":"app:///lib/ui/"
}
}
diff --git a/usr/lib/hosts-switch/webapp/utils/index.js b/usr/lib/hosts-switch/webapp/utils/index.js
index 3385014..0aa86b9 100644
--- a/usr/lib/hosts-switch/webapp/utils/index.js
+++ b/usr/lib/hosts-switch/webapp/utils/index.js
@@ -4,14 +4,14 @@
* @date 2023/09/04 19:18:28
*/
+import { nextTick } from 'wkit'
+
await native.init()
const APP_CONFIG_DIR = `${native.env.CONFIG_DIR}/hosts-switch`
const HOST_FILE = `${APP_CONFIG_DIR}/host.cache`
const LOCK_FILE = `${APP_CONFIG_DIR}/lock`
-let timer
-
export function noop() {}
export function checkPermission() {
@@ -74,8 +74,7 @@ export async function getHistory() {
}
export function saveHosts(dict) {
- clearTimeout(timer)
- timer = setTimeout(() => {
+ nextTick(async () => {
var txt = ''
for (let k in dict) {
for (let it of dict[k]) {
@@ -89,8 +88,12 @@ export function saveHosts(dict) {
}
txt += '\n'
}
- console.log(txt)
- // native.fs.write(HOST_FILE, JSON.stringify(dict))
- // native.fs.write('/etc/hosts', txt)
- }, 500)
+
+ try {
+ await native.fs.write(HOST_FILE, JSON.stringify(dict))
+ await native.fs.write('/etc/hosts', txt)
+ } catch (err) {
+ layer.alert(err)
+ }
+ })
}