nip29: handle 9007 create_group.

This commit is contained in:
fiatjaf 2024-07-03 22:17:43 -03:00
parent 8aaf5b8f98
commit f9fd760808
3 changed files with 24 additions and 0 deletions

View File

@ -49,6 +49,7 @@ const (
KindSimpleGroupRemovePermission int = 9004 KindSimpleGroupRemovePermission int = 9004
KindSimpleGroupDeleteEvent int = 9005 KindSimpleGroupDeleteEvent int = 9005
KindSimpleGroupEditGroupStatus int = 9006 KindSimpleGroupEditGroupStatus int = 9006
KindSimpleGroupCreateGroup int = 9007
KindSimpleGroupJoinRequest int = 9021 KindSimpleGroupJoinRequest int = 9021
KindZapRequest int = 9734 KindZapRequest int = 9734
KindZap int = 9735 KindZap int = 9735

View File

@ -33,6 +33,7 @@ var ModerationEventKinds = KindRange{
nostr.KindSimpleGroupRemovePermission, nostr.KindSimpleGroupRemovePermission,
nostr.KindSimpleGroupDeleteEvent, nostr.KindSimpleGroupDeleteEvent,
nostr.KindSimpleGroupEditGroupStatus, nostr.KindSimpleGroupEditGroupStatus,
nostr.KindSimpleGroupCreateGroup,
} }
var MetadataEventKinds = KindRange{ var MetadataEventKinds = KindRange{

View File

@ -159,6 +159,9 @@ var moderationActionFactories = map[int]func(*nostr.Event) (Action, error){
return egs, nil return egs, nil
}, },
nostr.KindSimpleGroupCreateGroup: func(evt *nostr.Event) (Action, error) {
return &CreateGroup{evt.PubKey}, nil
},
} }
type DeleteEvent struct { type DeleteEvent struct {
@ -297,3 +300,22 @@ func (a EditGroupStatus) Apply(group *nip29.Group) {
group.LastMetadataUpdate = a.When group.LastMetadataUpdate = a.When
} }
type CreateGroup struct {
Creator string
}
func (CreateGroup) PermissionName() nip29.Permission { return nip29.PermEditGroupStatus }
func (a CreateGroup) Apply(group *nip29.Group) {
group.Members[a.Creator] = &nip29.Role{
Permissions: map[nip29.Permission]struct{}{
nip29.PermAddUser: {},
nip29.PermRemoveUser: {},
nip29.PermEditMetadata: {},
nip29.PermAddPermission: {},
nip29.PermRemovePermission: {},
nip29.PermDeleteEvent: {},
nip29.PermEditGroupStatus: {},
},
}
}