package chat import ( "strings" ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/gdb" "shylinux.com/x/icebergs/base/log" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/ssh" "shylinux.com/x/icebergs/base/tcp" "shylinux.com/x/icebergs/base/web" kit "shylinux.com/x/toolkits" ) func _favor_is_image(m *ice.Message, name, mime string) bool { return strings.HasPrefix(mime, "image/") || kit.ExtIsImage(name) } func _favor_is_video(m *ice.Message, name, mime string) bool { return strings.HasPrefix(mime, "video/") || kit.ExtIsVideo(name) } func _favor_is_audio(m *ice.Message, name, mime string) bool { return strings.HasPrefix(mime, "audio/") } const ( FAVOR_INPUTS = "favor.inputs" FAVOR_TABLES = "favor.tables" FAVOR_ACTION = "favor.action" ) const FAVOR = "favor" func init() { Index.MergeCommands(ice.Commands{ FAVOR: {Name: "favor hash auto create getClipboardData getLocation scanQRCode record1 record2 upload", Help: "收藏夹", Actions: ice.MergeActions(ice.Actions{ mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if arg[0] == mdb.FOREACH && arg[1] == "" { m.PushSearch(mdb.TYPE, web.LINK, mdb.NAME, m.CommandKey(), mdb.TEXT, m.MergePodCmd("", "", log.DEBUG, ice.TRUE)) } if arg[0] == mdb.FOREACH { m.Cmd("", ice.OptionFields("")).Table(func(value ice.Maps) { if arg[1] == "" || arg[1] == value[mdb.TYPE] || strings.Contains(value[mdb.TEXT], arg[1]) { m.PushSearch(value) } }) } }}, mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { switch mdb.HashInputs(m, arg); arg[0] { case mdb.TYPE: m.Push(arg[0], web.LINK, nfs.FILE, mdb.TEXT, ctx.INDEX, ssh.SHELL, cli.OPENS) case mdb.NAME: switch m.Option(mdb.TYPE) { case ctx.INDEX: m.Copy(m.Cmd(ctx.COMMAND, mdb.SEARCH, ctx.COMMAND, arg[1:], ice.OptionFields(ctx.INDEX)).RenameAppend(ctx.INDEX, arg[0])) return } } gdb.Event(m, "", arg) }}, "getClipboardData": {Name: "favor create", Help: "粘贴"}, "getLocation": {Name: "favor create", Help: "定位"}, "scanQRCode": {Name: "favor create", Help: "扫码"}, "record1": {Name: "favor upload", Help: "截图"}, "record2": {Name: "favor upload", Help: "录屏"}, mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) { if strings.HasPrefix(m.Option(mdb.TEXT), ice.HTTP) { m.OptionDefault(mdb.TYPE, mdb.LINK, mdb.NAME, kit.ParseURL(m.Option(mdb.TEXT)).Host) } mdb.HashCreate(m, m.OptionSimple()) }}, web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) { m.Cmd("", mdb.CREATE, m.OptionSimple(mdb.TYPE, mdb.NAME, mdb.TEXT)) }}, web.DOWNLOAD: {Hand: func(m *ice.Message, arg ...string) { ctx.ProcessOpen(m, web.MergeURL2(m, web.SHARE_LOCAL+m.Option(mdb.TEXT), "filename", m.Option(mdb.NAME))) }}, web.DISPLAY: {Help: "预览", Hand: func(m *ice.Message, arg ...string) { if link := web.SHARE_LOCAL + m.Option(mdb.TEXT); _favor_is_image(m, m.Option(mdb.NAME), m.Option(mdb.TYPE)) { m.EchoImages(link) } else if _favor_is_video(m, m.Option(mdb.NAME), m.Option(mdb.TYPE)) { m.EchoVideos(link) } else { m.Echo("