mirror of
https://github.com/shazow/ssh-chat.git
synced 2025-04-13 15:47:17 +03:00
refactor: Add message.Author.ID(), remove a bunch of type assertions
This commit is contained in:
parent
e86996e6b5
commit
7f2b8e4689
@ -111,7 +111,7 @@ func InitCommands(c *Commands) {
|
||||
c.Add(Command{
|
||||
Prefix: "/help",
|
||||
Handler: func(room *Room, msg message.CommandMsg) error {
|
||||
op := room.IsOp(msg.From().(Member))
|
||||
op := room.IsOp(msg.From())
|
||||
room.Send(message.NewSystemMsg(room.commands.Help(op), msg.From()))
|
||||
return nil
|
||||
},
|
||||
@ -150,7 +150,7 @@ func InitCommands(c *Commands) {
|
||||
if len(args) != 1 {
|
||||
return ErrMissingArg
|
||||
}
|
||||
member, ok := room.MemberByID(msg.From().(Member).ID())
|
||||
member, ok := room.MemberByID(msg.From().ID())
|
||||
if !ok {
|
||||
return ErrMissingMember
|
||||
}
|
||||
@ -253,7 +253,7 @@ func InitCommands(c *Commands) {
|
||||
PrefixHelp: "[USER]",
|
||||
Help: "Hide messages from USER, /unignore USER to stop hiding.",
|
||||
Handler: func(room *Room, msg message.CommandMsg) error {
|
||||
from, ok := room.Member(msg.From().(Member))
|
||||
from, ok := room.Member(msg.From())
|
||||
if !ok {
|
||||
return ErrMissingMember
|
||||
}
|
||||
@ -278,7 +278,7 @@ func InitCommands(c *Commands) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if id == msg.From().(Member).ID() {
|
||||
if id == msg.From().ID() {
|
||||
return errors.New("cannot ignore self")
|
||||
}
|
||||
target, ok := room.MemberByID(id)
|
||||
@ -302,7 +302,7 @@ func InitCommands(c *Commands) {
|
||||
Prefix: "/unignore",
|
||||
PrefixHelp: "USER",
|
||||
Handler: func(room *Room, msg message.CommandMsg) error {
|
||||
from, ok := room.Member(msg.From().(Member))
|
||||
from, ok := room.Member(msg.From())
|
||||
if !ok {
|
||||
return ErrMissingMember
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ type roomMember struct {
|
||||
type Member interface {
|
||||
message.Author
|
||||
|
||||
ID() string
|
||||
SetName(string)
|
||||
|
||||
Config() message.UserConfig
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
)
|
||||
|
||||
type Author interface {
|
||||
ID() string
|
||||
Name() string
|
||||
Color() int
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ func HandledScreen(name string, handler func(Message) error) *handledScreen {
|
||||
|
||||
func Screen(name string) *baseScreen {
|
||||
return &baseScreen{
|
||||
User: NewUser(name),
|
||||
user: NewUser(name),
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ func (u *pipedScreen) Send(m Message) error {
|
||||
// User container that knows about writing to an IO screen.
|
||||
type baseScreen struct {
|
||||
sync.Mutex
|
||||
*User
|
||||
*user
|
||||
}
|
||||
|
||||
func (u *baseScreen) Config() UserConfig {
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
const reHighlight = `\b(%s)\b`
|
||||
|
||||
// User definition, implemented set Item interface and io.Writer
|
||||
type User struct {
|
||||
type user struct {
|
||||
joined time.Time
|
||||
|
||||
name string
|
||||
@ -16,8 +16,8 @@ type User struct {
|
||||
replyTo Author // Set when user gets a /msg, for replying.
|
||||
}
|
||||
|
||||
func NewUser(name string) *User {
|
||||
u := User{
|
||||
func NewUser(name string) *user {
|
||||
u := user{
|
||||
name: name,
|
||||
config: DefaultUserConfig,
|
||||
joined: time.Now(),
|
||||
@ -27,18 +27,18 @@ func NewUser(name string) *User {
|
||||
return &u
|
||||
}
|
||||
|
||||
func (u *User) Name() string {
|
||||
func (u *user) Name() string {
|
||||
return u.name
|
||||
}
|
||||
|
||||
func (u *User) Color() int {
|
||||
func (u *user) Color() int {
|
||||
return u.config.Seed
|
||||
}
|
||||
|
||||
func (u *User) ID() string {
|
||||
func (u *user) ID() string {
|
||||
return SanitizeName(u.name)
|
||||
}
|
||||
|
||||
func (u *User) Joined() time.Time {
|
||||
func (u *user) Joined() time.Time {
|
||||
return u.joined
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ func (r *Room) HandleMsg(m message.Message) {
|
||||
roomMember := item.Value().(*roomMember)
|
||||
user := roomMember.Member
|
||||
|
||||
if fromMsg != nil && fromMsg.From() != nil && roomMember.Ignored.In(fromMsg.From().(Member).ID()) {
|
||||
if fromMsg != nil && fromMsg.From() != nil && roomMember.Ignored.In(fromMsg.From().ID()) {
|
||||
// Skip because ignored
|
||||
return
|
||||
}
|
||||
@ -182,7 +182,7 @@ func (r *Room) Rename(oldID string, u Member) error {
|
||||
|
||||
// Member returns a corresponding Member object to a User if the Member is
|
||||
// present in this room.
|
||||
func (r *Room) Member(u Member) (*roomMember, bool) {
|
||||
func (r *Room) Member(u message.Author) (*roomMember, bool) {
|
||||
m, ok := r.MemberByID(u.ID())
|
||||
if !ok {
|
||||
return nil, false
|
||||
@ -204,7 +204,7 @@ func (r *Room) MemberByID(id string) (*roomMember, bool) {
|
||||
}
|
||||
|
||||
// IsOp returns whether a user is an operator in this room.
|
||||
func (r *Room) IsOp(u Member) bool {
|
||||
func (r *Room) IsOp(u message.Author) bool {
|
||||
return r.Ops.In(u.ID())
|
||||
}
|
||||
|
||||
|
10
host.go
10
host.go
@ -353,7 +353,7 @@ func (h *Host) InitCommands(c *chat.Commands) {
|
||||
}
|
||||
|
||||
var whois string
|
||||
switch room.IsOp(msg.From().(chat.Member)) {
|
||||
switch room.IsOp(msg.From()) {
|
||||
case true:
|
||||
whois = whoisAdmin(target)
|
||||
case false:
|
||||
@ -389,7 +389,7 @@ func (h *Host) InitCommands(c *chat.Commands) {
|
||||
PrefixHelp: "USER [DURATION]",
|
||||
Help: "Set USER as admin.",
|
||||
Handler: func(room *chat.Room, msg message.CommandMsg) error {
|
||||
if !room.IsOp(msg.From().(chat.Member)) {
|
||||
if !room.IsOp(msg.From()) {
|
||||
return errors.New("must be op")
|
||||
}
|
||||
|
||||
@ -435,7 +435,7 @@ func (h *Host) InitCommands(c *chat.Commands) {
|
||||
Help: "Ban USER from the server.",
|
||||
Handler: func(room *chat.Room, msg message.CommandMsg) error {
|
||||
// TODO: Would be nice to specify what to ban. Key? Ip? etc.
|
||||
if !room.IsOp(msg.From().(chat.Member)) {
|
||||
if !room.IsOp(msg.From()) {
|
||||
return errors.New("must be op")
|
||||
}
|
||||
|
||||
@ -475,7 +475,7 @@ func (h *Host) InitCommands(c *chat.Commands) {
|
||||
PrefixHelp: "USER",
|
||||
Help: "Kick USER from the server.",
|
||||
Handler: func(room *chat.Room, msg message.CommandMsg) error {
|
||||
if !room.IsOp(msg.From().(chat.Member)) {
|
||||
if !room.IsOp(msg.From()) {
|
||||
return errors.New("must be op")
|
||||
}
|
||||
|
||||
@ -513,7 +513,7 @@ func (h *Host) InitCommands(c *chat.Commands) {
|
||||
room.Send(message.NewSystemMsg(motd, user))
|
||||
return nil
|
||||
}
|
||||
if !room.IsOp(user.(chat.Member)) {
|
||||
if !room.IsOp(user) {
|
||||
return errors.New("must be OP to modify the MOTD")
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user