diff --git a/base/web/option.go b/base/web/option.go index b8b5dbb3..99f1c53f 100644 --- a/base/web/option.go +++ b/base/web/option.go @@ -9,7 +9,6 @@ import ( "shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/ctx" - "shylinux.com/x/icebergs/base/lex" "shylinux.com/x/icebergs/base/log" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" @@ -140,34 +139,40 @@ func Toast(m *ice.Message, text string, arg ...ice.Any) *ice.Message { // [title PushNoticeToast(m, text, arg) return m } -func toastContent(m *ice.Message, state string) string { - return kit.Join([]string{map[string]string{ice.PROCESS: "๐Ÿ•‘", ice.FAILURE: "โŒ", ice.SUCCESS: "โœ…"}[state], state, m.ActionKey()}, " ") + +var Icons = map[string]string{ice.PROCESS: "๐Ÿ•‘", ice.FAILURE: "โŒ", ice.SUCCESS: "โœ…"} + +func toastContent(m *ice.Message, state string, arg ...ice.Any) string { + return kit.JoinWord(kit.Simple(Icons[state], m.ActionKey(), state, arg)...) +} +func ToastSuccess(m *ice.Message, arg ...ice.Any) { + Toast(m, toastContent(m, ice.SUCCESS, arg...)) +} +func ToastFailure(m *ice.Message, arg ...ice.Any) { + Toast(m, toastContent(m, ice.FAILURE, arg...), "", m.OptionDefault(ice.TOAST_DURATION, "3s")).Sleep(m.OptionDefault(ice.TOAST_DURATION, "3s")) } -func ToastSuccess(m *ice.Message, arg ...ice.Any) { Toast(m, toastContent(m, ice.SUCCESS), arg...) } -func ToastFailure(m *ice.Message, arg ...ice.Any) { Toast(m, toastContent(m, ice.FAILURE), arg...) } func ToastProcess(m *ice.Message, arg ...ice.Any) func() { - kit.If(len(arg) == 0, func() { arg = kit.List("", "-1") }) - kit.If(len(arg) == 1, func() { arg = append(arg, "-1") }) - Toast(m, toastContent(m, ice.PROCESS), arg...) - return func() { Toast(m, toastContent(m, ice.SUCCESS)) } + Toast(m, toastContent(m, ice.PROCESS, arg...)) + return func() { Toast(m, toastContent(m, ice.SUCCESS, arg...)) } } func GoToast(m *ice.Message, title string, cb func(toast func(name string, count, total int)) []string) *ice.Message { _total := 0 - icon := "๐Ÿ•‘" + icon := Icons[ice.PROCESS] toast := func(name string, count, total int) { kit.If(total == 0, func() { total = 1 }) - Toast(m, - kit.Format("%s %s %s/%s", icon, kit.JoinWord(m.ActionKey(), name), strings.TrimSuffix(kit.FmtSize(int64(count)), "B"), strings.TrimSuffix(kit.FmtSize(int64(total)), "B")), - kit.Format("%s %d%%", kit.Select(m.ActionKey(), title), count*100/total), m.OptionDefault(ice.TOAST_DURATION, "30000"), count*100/total, - ) + Toast(m, kit.Format("%s %s %s/%s", icon, kit.JoinWord(m.ActionKey(), name), strings.TrimSuffix(kit.FmtSize(int64(count)), "B"), strings.TrimSuffix(kit.FmtSize(int64(total)), "B")), + "", m.OptionDefault(ice.TOAST_DURATION, "30s"), count*100/total) _total = total } if list := cb(toast); len(list) > 0 { - Toast(m, strings.Join(list, lex.NL), ice.FAILURE, "30s") + icon = Icons[ice.FAILURE] + m.Option(ice.TOAST_DURATION, "30s") + toast(kit.JoinWord(list...), len(list), _total) } else { - m.Option(ice.TOAST_DURATION, "3000") - icon = "โœ…" + icon = Icons[ice.SUCCESS] + m.Option(ice.TOAST_DURATION, "3s") toast(ice.SUCCESS, _total, _total) } + m.Sleep(m.Option(ice.TOAST_DURATION)) return m } diff --git a/core/code/install.go b/core/code/install.go index 3dd68486..62ffdb6d 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -175,9 +175,9 @@ func init() { cli.BUILD: {Name: "build link*", Hand: func(m *ice.Message, arg ...string) { web.PushStream(m) if err := _install_build(m, arg...); m.Warn(err != "", err) { - web.ToastFailure(m, cli.BUILD, err) + web.ToastFailure(m, err) } else { - web.ToastSuccess(m, cli.BUILD) + web.ToastSuccess(m) } }}, cli.ORDER: {Name: "order link* path", Hand: func(m *ice.Message, arg ...string) { _install_order(m, arg...) }}, diff --git a/misc/git/repos.go b/misc/git/repos.go index c76db8bc..bb45da1a 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -111,7 +111,7 @@ func _repos_each(m *ice.Message, title string, cb func(*git.Repository, ice.Maps msg.Table(func(value ice.Maps) { toast(value[REPOS], count, total) if err := cb(_repos_open(m, value[REPOS]), value); err != nil && err != git.NoErrAlreadyUpToDate { - web.Toast(m, err.Error(), "error: "+value[REPOS], "", "3s").Sleep3s() + web.ToastFailure(m, value[REPOS], err.Error()) list = append(list, value[REPOS]) } count++ diff --git a/misc/git/status.go b/misc/git/status.go index 3191cd32..5b595e57 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -58,7 +58,8 @@ func init() { }}, INSTEADOF: {Name: "insteadof remote", Help: "ไปฃ็†", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(REPOS, INSTEADOF, arg) }}, OAUTH: {Help: "ๆŽˆๆƒ", Hand: func(m *ice.Message, arg ...string) { - m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Domain, m.Cmdx(REPOS, "remoteURL")), web.ChatCmdPath(m, web.TOKEN, "gen"), tcp.HOST, m.Option(ice.MSG_USERWEB))) + m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Domain, m.Cmdx(REPOS, "remoteURL")), web.ChatCmdPath(m, web.TOKEN, "gen"), + mdb.TYPE, "web.code.git.status", tcp.HOST, m.Option(ice.MSG_USERWEB))) }}, web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) { if !kit.IsIn(m.Option(mdb.TYPE), web.WORKER, web.SERVER) {