From b360e8a70a485b0035ba15b8dc60218ff151d730 Mon Sep 17 00:00:00 2001 From: shy Date: Tue, 27 Feb 2024 11:37:08 +0800 Subject: [PATCH] add some --- base/web/space.go | 4 ++++ core/chat/message.go | 19 ++++++++++++++++--- core/chat/message.js | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/base/web/space.go b/base/web/space.go index 64a5cfb7..1ed9ae06 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -402,6 +402,10 @@ func init() { m.Cmdy(tcp.WIFI).CutTo(tcp.SSID, arg[0]) case MESSAGE: m.Cmdy(MESSAGE).Cut(mdb.HASH, mdb.ZONE, mdb.ICONS) + case "target": + m.AdminCmd(MATRIX).Table(func(value ice.Maps) { + m.Push(arg[0], kit.Keys(kit.Select("", ice.OPS, ice.Info.NodeType == WORKER), value[DOMAIN], value[mdb.NAME])) + }) } }) ice.Info.AdminCmd = AdminCmd diff --git a/core/chat/message.go b/core/chat/message.go index eebe371a..74926fa4 100644 --- a/core/chat/message.go +++ b/core/chat/message.go @@ -21,18 +21,30 @@ func init() { messageCreate(m, cli.SYSTEM, "usr/icons/System Settings.png") messageInsert(m, cli.SYSTEM, mdb.TYPE, "plug", ctx.INDEX, cli.RUNTIME) }}, - mdb.CREATE: {Name: "create type*=tech,void zone* icons*"}, + mdb.CREATE: {Name: "create type*=tech,void zone* icons* target"}, mdb.INSERT: {Hand: func(m *ice.Message, arg ...string) { mdb.ZoneInsert(m, append(arg, aaa.AVATAR, aaa.UserInfo(m, "", aaa.AVATAR, aaa.AVATAR), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.USERNAME, m.Option(ice.MSG_USERNAME))) + kit.If(mdb.HashSelectField(m, arg[0], "target"), func(p string) { + m.Cmd(web.SPACE, p, MESSAGE, tcp.RECV, arg[1:]) + }) + mdb.HashSelectUpdate(m, arg[0], func(value ice.Map) { + kit.Value(value, mdb.TIME, m.Time()) + }) }}, tcp.RECV: {Hand: func(m *ice.Message, arg ...string) { - mdb.ZoneInsert(m, kit.Simple(mdb.ZONE, m.Option(ice.FROM_SPACE), arg, aaa.AVATAR, aaa.UserInfo(m, "", aaa.AVATAR, aaa.AVATAR), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.USERNAME, m.Option(ice.MSG_USERNAME))) + mdb.ZoneInsert(m, kit.Simple(mdb.ZONE, m.Option(ice.FROM_SPACE), web.SPACE, m.Option(ice.FROM_SPACE), arg, aaa.AVATAR, aaa.UserInfo(m, "", aaa.AVATAR, aaa.AVATAR), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.USERNAME, m.Option(ice.MSG_USERNAME))) + mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { + kit.Value(value, "target", m.Option(ice.FROM_SPACE)) + }) + mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { + kit.Value(value, mdb.TIME, m.Time()) + }) }}, web.DREAM_CREATE: {Hand: func(m *ice.Message, arg ...string) { messageInsert(m, web.DREAM, mdb.TYPE, "plug", ctx.INDEX, IFRAME, ctx.ARGS, web.S(m.Option(mdb.NAME))) }}, }, web.DreamAction(), mdb.ZoneAction( - mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,hash,type,zone,icons", mdb.FIELDS, "time,id,avatar,usernick,username,type,name,text,space,index,args", + mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,hash,type,zone,icons,target", mdb.FIELDS, "time,id,avatar,usernick,username,type,name,text,space,index,args", )), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 { mdb.ZoneSelect(m.Display("").Spawn(), arg...).Table(func(value ice.Maps) { @@ -40,6 +52,7 @@ func init() { m.PushRecord(value, mdb.Config(m, mdb.FIELD)) } }) + m.Sort(mdb.TIME, "str_r") } else { mdb.ZoneSelect(m, arg...).Sort(mdb.ID, ice.INT) } diff --git a/core/chat/message.js b/core/chat/message.js index 51976dd3..229018ca 100644 --- a/core/chat/message.js +++ b/core/chat/message.js @@ -47,6 +47,7 @@ Volcanos(chat.ONIMPORT, { }, _message: function(can, msg) { var now = new Date(), last = "" msg.Table(function(value) { can.db.zone.id = value.id + value.space = value.space||can.base.trimPrefix(can.db.zone.target, "ops.") var myself = value.username == can.user.info.username, time = can.base.TimeTrim(value.time) var t = new Date(value.time); if (!last || (t - last > 3*60*1000)) { last = t can.page.Append(can, can.ui.message, [{view: [[html.ITEM, mdb.TIME], "", time]}])