mirror of
https://github.com/signaller-matrix/signaller.git
synced 2024-11-09 12:11:03 +00:00
Add room creation events
This commit is contained in:
parent
a6f8ef9bdb
commit
d52022726a
@ -79,7 +79,7 @@ func TestSetRoomTopic(t *testing.T) {
|
|||||||
err := room.SetTopic(user, newTopic)
|
err := room.SetTopic(user, newTopic)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, newTopic, room.Topic())
|
assert.Equal(t, newTopic, room.Topic())
|
||||||
assert.Equal(t, 2, len(room.Events())) // create event + topic event == 2
|
assert.Equal(t, 5, len(room.Events())) // TODO: check start event count
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetRoomTopicWithnprivelegedUser(t *testing.T) {
|
func TestSetRoomTopicWithnprivelegedUser(t *testing.T) {
|
||||||
|
@ -36,21 +36,58 @@ func (user *User) CreateRoom(request createroom.Request) (internal.Room, *models
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t := time.Now()
|
||||||
|
|
||||||
|
events := make([]RoomEvent, 0)
|
||||||
|
|
||||||
|
// Create room event
|
||||||
|
events = append(events, RoomEvent{
|
||||||
|
Content: nil,
|
||||||
|
Type: rooms.Create,
|
||||||
|
EventID: internal.NewToken(eventIDSize),
|
||||||
|
Sender: user,
|
||||||
|
OriginServerTS: t})
|
||||||
|
|
||||||
|
// Set join rules event
|
||||||
|
events = append(events, RoomEvent{
|
||||||
|
Content: []byte(request.Visibility), // TODO: check visibility vs join rules
|
||||||
|
Type: rooms.JoinRules,
|
||||||
|
EventID: internal.NewToken(eventIDSize),
|
||||||
|
Sender: user,
|
||||||
|
OriginServerTS: t})
|
||||||
|
|
||||||
|
// Set room name event
|
||||||
|
if request.Name != "" {
|
||||||
|
events = append(events, RoomEvent{
|
||||||
|
Content: nil, // TODO: add
|
||||||
|
Type: rooms.Name,
|
||||||
|
EventID: internal.NewToken(eventIDSize),
|
||||||
|
Sender: user,
|
||||||
|
OriginServerTS: t})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set room alias event
|
||||||
|
if request.RoomAliasName != "" {
|
||||||
|
events = append(events, RoomEvent{
|
||||||
|
Content: nil, // TODO: add
|
||||||
|
Type: rooms.CanonicalAlias,
|
||||||
|
EventID: internal.NewToken(eventIDSize),
|
||||||
|
Sender: user,
|
||||||
|
OriginServerTS: t})
|
||||||
|
}
|
||||||
|
|
||||||
room := &Room{
|
room := &Room{
|
||||||
id: internal.NewToken(groupIDSize),
|
id: internal.NewToken(groupIDSize),
|
||||||
aliasName: request.RoomAliasName,
|
aliasName: request.RoomAliasName,
|
||||||
name: request.Name,
|
name: request.Name,
|
||||||
topic: request.Topic,
|
topic: request.Topic,
|
||||||
events: []RoomEvent{
|
events: events,
|
||||||
RoomEvent{
|
creator: user}
|
||||||
Content: nil,
|
|
||||||
Type: rooms.Create,
|
|
||||||
EventID: internal.NewToken(eventIDSize),
|
|
||||||
Sender: user,
|
|
||||||
OriginServerTS: time.Now()}},
|
|
||||||
creator: user}
|
|
||||||
|
|
||||||
room.events[0].Room = room
|
for i, _ := range room.events {
|
||||||
|
room.events[i].Room = room
|
||||||
|
//v.Room = room
|
||||||
|
}
|
||||||
|
|
||||||
user.backend.rooms[room.id] = room
|
user.backend.rooms[room.id] = room
|
||||||
|
|
||||||
|
@ -50,6 +50,15 @@ const (
|
|||||||
PinnedEvents = "m.room.pinned_events"
|
PinnedEvents = "m.room.pinned_events"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type JoinRule string
|
||||||
|
|
||||||
|
const (
|
||||||
|
Public JoinRule = "public"
|
||||||
|
Knock = "knock"
|
||||||
|
Invite = "invite"
|
||||||
|
Private = "private"
|
||||||
|
)
|
||||||
|
|
||||||
// https://matrix.org/docs/spec/client_server/latest#room-event-fields
|
// https://matrix.org/docs/spec/client_server/latest#room-event-fields
|
||||||
type Event struct {
|
type Event struct {
|
||||||
Content json.RawMessage `json:"content"` // Required. The fields in this object will vary depending on the type of event. When interacting with the REST API, this is the HTTP body.
|
Content json.RawMessage `json:"content"` // Required. The fields in this object will vary depending on the type of event. When interacting with the REST API, this is the HTTP body.
|
||||||
|
Loading…
Reference in New Issue
Block a user