Fix dm tab being opened on server messages
This commit is contained in:
parent
1abe280957
commit
35727fb2b8
3 changed files with 46 additions and 35 deletions
|
@ -117,7 +117,7 @@ func (i *ircHandler) nick(msg *irc.Message) {
|
|||
|
||||
channelStore.RenameUser(msg.Nick, msg.LastParam(), i.client.Host)
|
||||
|
||||
if msg.LastParam() == i.client.GetNick() {
|
||||
if i.client.Is(msg.LastParam()) {
|
||||
go i.state.user.SetNick(msg.LastParam(), i.client.Host)
|
||||
}
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ func (i *ircHandler) join(msg *irc.Message) {
|
|||
channel := msg.Params[0]
|
||||
channelStore.AddUser(msg.Nick, i.client.Host, channel)
|
||||
|
||||
if msg.Nick == i.client.GetNick() {
|
||||
if i.client.Is(msg.Nick) {
|
||||
// In case no topic is set and there's a cached one that needs to be cleared
|
||||
i.client.Topic(channel)
|
||||
|
||||
|
@ -160,7 +160,7 @@ func (i *ircHandler) part(msg *irc.Message) {
|
|||
|
||||
channelStore.RemoveUser(msg.Nick, i.client.Host, part.Channel)
|
||||
|
||||
if msg.Nick == i.client.GetNick() {
|
||||
if i.client.Is(msg.Nick) {
|
||||
go i.state.user.RemoveChannel(i.client.Host, part.Channel)
|
||||
}
|
||||
}
|
||||
|
@ -179,35 +179,6 @@ func (i *ircHandler) mode(msg *irc.Message) {
|
|||
}
|
||||
}
|
||||
|
||||
func (i *ircHandler) receiveDCCSend(pack *irc.DCCSend, msg *irc.Message) {
|
||||
cfg := i.state.srv.Config()
|
||||
|
||||
if cfg.DCC.Enabled {
|
||||
if cfg.DCC.Autoget.Enabled {
|
||||
file, err := os.OpenFile(storage.Path.DownloadedFile(i.state.user.Username, pack.File), os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
irc.DownloadDCC(file, pack, i.dccProgress)
|
||||
} else {
|
||||
i.state.setPendingDCC(pack.File, pack)
|
||||
|
||||
i.state.sendJSON("dcc_send", DCCSend{
|
||||
Server: i.client.Host,
|
||||
From: msg.Nick,
|
||||
Filename: pack.File,
|
||||
URL: fmt.Sprintf("%s://%s/downloads/%s/%s",
|
||||
i.state.String("scheme"), i.state.String("host"), i.state.user.Username, pack.File),
|
||||
})
|
||||
|
||||
time.Sleep(150 * time.Second)
|
||||
i.state.deletePendingDCC(pack.File)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (i *ircHandler) message(msg *irc.Message) {
|
||||
if ctcp := msg.ToCTCP(); ctcp != nil {
|
||||
if ctcp.Command == "DCC" && strings.HasPrefix(ctcp.Params, "SEND") {
|
||||
|
@ -228,9 +199,12 @@ func (i *ircHandler) message(msg *irc.Message) {
|
|||
}
|
||||
target := msg.Params[0]
|
||||
|
||||
if target == i.client.GetNick() {
|
||||
if i.client.Is(target) {
|
||||
i.state.sendJSON("pm", message)
|
||||
i.state.user.AddOpenDM(i.client.Host, message.From)
|
||||
|
||||
if !msg.IsFromServer() {
|
||||
i.state.user.AddOpenDM(i.client.Host, message.From)
|
||||
}
|
||||
|
||||
target = message.From
|
||||
} else {
|
||||
|
@ -238,7 +212,7 @@ func (i *ircHandler) message(msg *irc.Message) {
|
|||
i.state.sendJSON("message", message)
|
||||
}
|
||||
|
||||
if target != "*" {
|
||||
if target != "*" && !msg.IsFromServer() {
|
||||
go i.state.user.LogMessage(message.ID,
|
||||
i.client.Host, msg.Nick, target, msg.LastParam())
|
||||
}
|
||||
|
@ -432,6 +406,35 @@ func (i *ircHandler) error(msg *irc.Message) {
|
|||
})
|
||||
}
|
||||
|
||||
func (i *ircHandler) receiveDCCSend(pack *irc.DCCSend, msg *irc.Message) {
|
||||
cfg := i.state.srv.Config()
|
||||
|
||||
if cfg.DCC.Enabled {
|
||||
if cfg.DCC.Autoget.Enabled {
|
||||
file, err := os.OpenFile(storage.Path.DownloadedFile(i.state.user.Username, pack.File), os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
irc.DownloadDCC(file, pack, i.dccProgress)
|
||||
} else {
|
||||
i.state.setPendingDCC(pack.File, pack)
|
||||
|
||||
i.state.sendJSON("dcc_send", DCCSend{
|
||||
Server: i.client.Host,
|
||||
From: msg.Nick,
|
||||
Filename: pack.File,
|
||||
URL: fmt.Sprintf("%s://%s/downloads/%s/%s",
|
||||
i.state.String("scheme"), i.state.String("host"), i.state.user.Username, pack.File),
|
||||
})
|
||||
|
||||
time.Sleep(150 * time.Second)
|
||||
i.state.deletePendingDCC(pack.File)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (i *ircHandler) initHandlers() {
|
||||
i.handlers = map[string]func(*irc.Message){
|
||||
irc.Nick: i.nick,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue