commit cfddc9dac3f949111c67373831db4dffac3046db
parent 31857e21a3f13d0b0b0d107b2568c59bb460d1ad
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Tue, 10 Jan 2023 20:07:48 -0800
add external link for room
Diffstat:
5 files changed, 38 insertions(+), 12 deletions(-)
diff --git a/cmd/dkf/migrations/119.sql b/cmd/dkf/migrations/119.sql
@@ -0,0 +1,4 @@
+-- +migrate Up
+ALTER TABLE chat_rooms ADD COLUMN external_link VARCHAR(255) NOT NULL DEFAULT '';
+
+-- +migrate Down
diff --git a/pkg/database/tableChatRooms.go b/pkg/database/tableChatRooms.go
@@ -11,16 +11,17 @@ import (
type RoomID int64
type ChatRoom struct {
- ID RoomID
- Name string
- OwnerUserID *UserID
- Password string // Hashed password (sha512)
- IsListed bool
- IsEphemeral bool
- CreatedAt time.Time
- OwnerUser *User
- ReadRecord *ChatReadRecord
- Mode int64
+ ID RoomID
+ Name string
+ ExternalLink string
+ OwnerUserID *UserID
+ Password string // Hashed password (sha512)
+ IsListed bool
+ IsEphemeral bool
+ CreatedAt time.Time
+ OwnerUser *User
+ ReadRecord *ChatReadRecord
+ Mode int64
}
const (
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -46,6 +46,7 @@ var chessRgx = regexp.MustCompile(`^/chess ` + optAtGUser)
var inboxRgx = regexp.MustCompile(`^/inbox ` + optAtGUser + `(\s-e)?\s(?s:(.*))`)
var profileRgx = regexp.MustCompile(`^/p ` + optAtGUserOr0)
var kickRgx = regexp.MustCompile(`^/(?:kick|k) ` + optAtGUser)
+var setUrlRgx = regexp.MustCompile(`^/seturl (.+)`)
var kickKeepRgx = regexp.MustCompile(`^/(?:kk) ` + optAtGUser)
var kickSilentRgx = regexp.MustCompile(`^/(?:ks) ` + optAtGUser)
var kickKeepSilentRgx = regexp.MustCompile(`^/(?:kks) ` + optAtGUser)
diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go
@@ -123,7 +123,8 @@ func handleModeratorCmd(c *Command) (handled bool) {
func handleAdminCmd(c *Command) (handled bool) {
if c.authUser.IsAdmin {
- return handleSystemCmd(c)
+ return handleSystemCmd(c) ||
+ handleSetChatRoomExternalLink(c)
}
return false
}
@@ -1391,3 +1392,19 @@ func handleSystemCmd(c *Command) (handled bool) {
}
return false
}
+
+func handleSetChatRoomExternalLink(c *Command) (handled bool) {
+ if m := setUrlRgx.FindStringSubmatch(c.message); len(m) == 2 {
+ externalURL := m[1]
+ room, err := database.GetChatRoomByID(c.room.ID)
+ if err != nil {
+ c.err = err
+ return true
+ }
+ room.ExternalLink = externalURL
+ room.DoSave()
+ c.err = ErrRedirect
+ return true
+ }
+ return
+}
diff --git a/pkg/web/public/views/pages/chat.gohtml b/pkg/web/public/views/pages/chat.gohtml
@@ -161,7 +161,10 @@
</div>
{{ end }}
<div>
- > {{ t "Room" . }} #{{ .Data.Room.Name }}
+ <span>> {{ t "Room" . }} #{{ .Data.Room.Name }}</span>
+ {{ if .Data.Room.ExternalLink }}
+ <span class="pl-3"><a href="{{ .Data.Room.ExternalLink }}" rel="noopener noreferrer" target="_blank">{{ .Data.Room.ExternalLink }}</a></span>
+ {{ end }}
<div style="padding-left: 30px;" class="d-inline">
<!-- {{ if and .Data.Room.OwnerUserID (eq (derefUserID .Data.Room.OwnerUserID) .AuthUser.ID) }}-->
<!-- <a href="/chat/{{ .Data.Room.Name }}/settings" class="btn btn-xs btn-secondary">{{ t "Room settings" . }}</a>-->