Institute Inform-style rulebooks

This commit is contained in:
2025-10-05 14:31:44 -07:00
parent 5b0b6a48a9
commit 1b099c400a
7 changed files with 370 additions and 293 deletions

View File

@@ -20,14 +20,6 @@ type User struct {
channels []canonicalChannelName
}
func NewUsersSystem() *UsersSystem {
return &UsersSystem{
clientIdIndex: make(map[transport.ClientId]*User),
nickIndex: make(map[canonicalNick]*User),
channelNameIndex: make(map[canonicalChannelName]map[*User]struct{}),
}
}
func (user *User) recomputeSourceString() {
nick := "unknown"
if user.nick != nil {
@@ -56,15 +48,7 @@ func (user *User) GetNick() *Nick {
}
func (user *User) SetNick(newNick *Nick) error {
oldNick := user.nick
return Dispatch(
func(nch NickChangeHandler) error {
return nch.AskPermissionForNickChange(user, oldNick, newNick)
},
func(nch NickChangeHandler) {
nch.HandleNickChange(user, oldNick, newNick)
},
)
return Perform(NickChangeAction{User: user, OldNick: user.nick, NewNick: newNick})
}
func (user *User) GetUsername() *string {
@@ -103,23 +87,9 @@ func (user *User) GetChannels() []canonicalChannelName {
}
func (user *User) Join(channelName ChannelName) error {
return Dispatch(
func(pjh PartJoinHandler) error {
return pjh.AskPermissionForJoin(user, channelName)
},
func(pjh PartJoinHandler) {
pjh.HandleJoin(user, channelName)
},
)
return Perform(JoinAction{User: user, ChannelName: channelName})
}
func (user *User) Part(channelName ChannelName, reason *string) error {
return Dispatch(
func(pjh PartJoinHandler) error {
return pjh.AskPermissionForPart(user, channelName, reason)
},
func(pjh PartJoinHandler) {
pjh.HandlePart(user, channelName, reason)
},
)
return Perform(PartAction{User: user, ChannelName: channelName, Reason: reason})
}